Главная страница
    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
8-1187616856
Иванн
2007-08-20 17:34
2008.11.09
разделить окружность на равные доли


2-1222666531
workbench
2008-09-29 09:35
2008.11.09
Proxy & TIdFTP


15-1221414047
cyborg
2008-09-14 21:40
2008.11.09
Уравнения Навье — Стокса


15-1221327688
Johnnnnnn
2008-09-13 21:41
2008.11.09
Редактор кода для Делфи типа PhpED?


2-1222923008
Armond
2008-10-02 08:50
2008.11.09
Работа с датами





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский