robinbobin ([personal profile] robinbobin) wrote2005-08-09 10:59 pm

MFC42U.DLL

Опять торможу. но уже и сил нет.

Проблем такой.

Моя шпионская длл, перехватывает в импорт тейблах модулей вызовы LoadStringW().

Теперь. когда это в обычных нормальных DLL - вообщем-то все Ok.

Когда я патчу IT of MFC42u.DLL, происходит бяка.

вот код

MessageBox ( 0, "Щас отпатчим этот гребаный MFC42u.dll", "SPY.DLL", MB_OK);

PfnOriginal_LoadStringW = (LOADSTRINGW_PROC) HookImportedFunction (
(HINSTANCE) hMFC,
"USER32.DLL",
"LoadStringW",
(PROC)MyLoadStringW);

wsprintf ( szTmp, "Original address of LoadStringW is 0x%X", PfnOriginal_LoadStringW);
MessageBox ( 0, szTmp, "SPY.DLL", MB_OK);


В функции патченья какбы все Ok. Вылетает отладочный MessageBox ("Patched, blya");

но, на месаджбох после вызова HookImportedFunction уже не возвращается.
Где-то в софтайсе проскакивает сообщение unload spy.dll
когда патчу другие модули, все OK. все отрабатывает, вызовы шпионом ловятся.

мне так кажется, шо MFC42u.dll реализована с отложенной загрузкой, т.е. пока ее родная апп не вызовет, ее в памяти еще нет ну и...

это таки-да?

теперь, как с этим бороться?

Сделал явно в шпионе
hMFC = LoadLibrary ( "MFC42U.DLL");
dwTmp = (DWORD) GetProcAddress ( hMFC, "DllCanUnloadNow");

wsprintf (szTmp, "address of DllCanUnloadNow is 0x%X", dwTmp);
MessageBox ( 0, szTmp, "SPY.DLL", MB_OK);

по фиг.

думаю, может так
сделать свою mfc-used.dll. которая будет слинкована с MFC42u.dll
ее грузить из шпиона, шобы MFC42u.dll разворачивалась в памяти.

я прав?

кто там юзает MFC42U?
как сделать свою дллЮ, которая юзает MFC42u?

щас сдохну.