Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

Какой функции не хватает?   Найти похожие ветки 

 
@!!ex ©   (2008-09-14 21:40) [0]

Есть ехешка, она загружается dll.
в dll не хватает какой-то функции.
Ехешка падает. Как узнать, какой функции собственно не хватает?


 
Rouse_ ©   (2008-09-14 22:03) [1]

Поставь себе вот это и посмотри что имено импортирует экзешник из этой библиотеки: http://rouse.drkb.ru/winapi.php#propsheet


 
@!!ex ©   (2008-09-14 22:21) [2]

> [1] Rouse_ ©   (14.09.08 22:03)
> http://rouse.drkb.ru/winapi.php#propsheet

Спасибо!


 
Городской Шаман   (2008-09-14 22:22) [3]


> Rouse_ ©   (14.09.08 22:03) [1]


А если загрузка динамическая? Тогда только хук на API функцию GetProcAddress


 
@!!ex ©   (2008-09-14 22:33) [4]

> [1] Rouse_ ©   (14.09.08 22:03)

Чего то не понял, как посмотреть список функций?


> [3] Городской Шаман   (14.09.08 22:22)

Вроде винда ругается, если нет функции которую пытаются через GetProcAddr получить.


 
@!!ex ©   (2008-09-14 22:52) [5]

Ааа. В свойства добавляется... не сразу я это понял...


 
wicked ©   (2008-09-14 23:24) [6]


> > [3] Городской Шаман   (14.09.08 22:22)
>
> Вроде винда ругается, если нет функции которую пытаются
> через GetProcAddr получить.

не ругается, а возвращает ошибку
а ругаться в этом случае должно уже само приложение


 
@!!ex ©   (2008-09-15 14:35) [7]

Мда.. не ругается...
как поставить хук на GetProcAddr?


 
Rouse_ ©   (2008-09-15 14:51) [8]


> А если загрузка динамическая? Тогда только хук на API функцию
> GetProcAddress

Зачем? Пишем махонький лоадер и сплайсим точку входа в исходную процедуру.


 
@!!ex ©   (2008-09-15 14:55) [9]

> [8] Rouse_ ©   (15.09.08 14:51)

Эм... о сплайсинге я только слышал...
где об этом почитать мона?


 
KilkennyCat ©   (2008-09-15 14:56) [10]

Сплайсинг — созревание информационной РНК (мРНК) у эукариот, в процессе которого путём биохимических реакций с участием РНК и белков из иРНК удаляются участки, не кодирующие белок (интроны) и соединяются друг с другом экзоны. Таким образом предшественник иРНК превращается в зрелую иРНК, с которой считываются (транслируются) белки клетки.


 
Vlad Oshin ©   (2008-09-15 15:08) [11]

ApiHookTools.pas , поищи такой модуль, в инете есть и примеры


 
@!!ex ©   (2008-09-15 15:11) [12]

> [10] KilkennyCat ©   (15.09.08 14:56)

Очень познавательно! Спасибо. :))


> [11] Vlad Oshin ©   (15.09.08 15:08)

Гугль ничего не знает...


 
Vlad Oshin ©   (2008-09-15 15:15) [13]

216 кб, с примером. Могу выслать


 
@!!ex ©   (2008-09-15 15:16) [14]

нашел:
http://www.dotfix.net/module.php?module=@6e786b366a6a70736a6a5f6d725e6c646268676228


 
@!!ex ©   (2008-09-15 15:19) [15]

> [13] Vlad Oshin ©   (15.09.08 15:15)

Высылай! А то ссылка битая.


 
Vlad Oshin ©   (2008-09-15 15:19) [16]

также тут можно глянуть,
http://www.codenet.ru/progr/delphi/stat/api-hook.php


 
Vlad Oshin ©   (2008-09-15 15:20) [17]

там кстати и ссылка нормальная и оно вроде, тот самый файл, т.е.


 
@!!ex ©   (2008-09-15 17:16) [18]

Сделал как в примере:
library LogerDLL;

uses
 Windows,
 ExtendedAPIFunctions,
 apihooktools;

{$R *.res}
const
 MutexName="__API_HOOK";

var
 SH:HHOOK;

 SystemFunctionBridge:TFunctionRestoreData;

function NewGetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC; stdcall;
var
 Res:PChar;
begin
 UnHookCodeHook(@SystemFunctionBridge);
 MessageBox(0,lpProcName,"",0);
 Result:=GetProcAddress(hModule,lpProcName);
 SetCodeHook(SystemFunctionBridge.Address,@NewGetProcAddress,@SystemFunctionBridg e);
end;

        //обработчик сообщений
function MsgProc(code:DWORD;wParam,lparam:DWORD):DWORD;stdcall;
begin
 CallNextHookEx(SH,code,wParam,lparam);
end;

            //внедрение нашей DLL  во все GUI процессы
procedure SetWindowsHook(e:Boolean); stdcall;
var
 M:THandle;
begin
 if e then
  begin
   m:=CreateMutex(0,false,MutexName);
   if m=0 then exit;
   SH:=SetWindowsHookEx(WH_GETMESSAGE,@MsgProc,HInstance,0);
  end
      else
   UnhookWindowsHookEx(sh);
end;
                               //главный библиотечный обработчик
procedure DLLEntryPoint(dwReason:DWord);
begin
 case dwReason of
   DLL_PROCESS_ATTACH:
    begin                  
    // StopProcess(GetCurrentProcessId);
     SetWindowsHook(true);
     SetProcedureHook(GetModuleHandle("ntdll.dll"),"GetProcAddress",@NewGetProcAddres s,@SystemFunctionBridge);
    // ResumeProcess(GetCurrentProcessId);
    end;
   DLL_PROCESS_DETACH:
    begin
    // StopProcess(GetCurrentProcessId);
     SetWindowsHook(false);
     UnHookCodeHook(@SystemFunctionBridge);
     //ResumeProcess(GetCurrentProcessId);
    end;
  end;
end;

begin
  DllProc:= @DLLEntryPoint;  //устанавливаеем библиотечный обработчик
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.

MessageBox не появляется никогда...


 
@!!ex ©   (2008-09-15 17:25) [19]

LdrGetProcedureAddress... правильный адрес...
это было красиво...
Я не ожидал, что система ТАК часто вызывает эфут функцию...


 
@!!ex ©   (2008-09-15 17:48) [20]

Нет. Всетаки надо заменять GetProcAddress. только не в NtDll, а в kernel32.

Все заработало! Спасибо!



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.005 c
2-1222923008
Armond
2008-10-02 08:50
2008.11.09
Работа с датами


2-1222842413
abhtr
2008-10-01 10:26
2008.11.09
Как задать "масштаб" формы, учитывающий разрешение экрана?


15-1221220415
Правильный$Вася
2008-09-12 15:53
2008.11.09
пластиковая пулеметная лента во время 2 мировой


6-1194787304
Olegz77
2007-11-11 16:21
2008.11.09
Indy: TIdPop3, TIdMessage


2-1222866483
Savek
2008-10-01 17:08
2008.11.09
Delphi 7 destruction





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский