Показать сообщение отдельно
Старый 12.05.2010, 07:44   #65
Новичок
 
Регистрация: 11.05.2010
Сообщений: 19
Сказал Спасибо: 0
Имеет 10 спасибок в 6 сообщенях
Эдвадко пока неопределено
По умолчанию

[quote=Yegor;88284]GoldFinch, это то я напишу, но вот Delphi для отладки dll хочет сама запускать процесс в который её будет загружать.

Я например отладчик не пользую - ну так получилось.
В качестве отладчика использую ту-же внедряемую dll

Удалось перехватить какую функцию - хук начинает логировать
адреса вызова этой функции и параметры вызова.

Потом ползаю по дизассемблированой engine.dll по соотв. адресам и смотрю че и как.

static DWORD HookProcAdr;

void __declspec(naked) __stdcall HookProcE9()
{
static DWORD SavedRetAddr,SavedArg0,SavedArg4,SavedArg8;
__asm push ebp
__asm mov ebp,esp
__asm pushad

__asm mov eax,[ebp+4] //RetAddr
__asm mov SavedRetAddr,eax
__asm mov eax,[ebp+8] //Arg0
__asm mov SavedArg0,eax
__asm mov eax,[ebp+12] //Arg4
__asm mov SavedArg4,eax
__asm mov eax,[ebp+16] //Arg8
__asm mov SavedArg8,eax

static char str[100];
_snprintf(str,100,"%u",*(PBYTE)SavedArg0);
MappedText(str,0xFFFFFF00);

fprintf(LogFile,"HookE9 %x %x %x %x %02x\n",SavedRetAddr,SavedArg0,SavedArg4,SavedArg8 ,*(PBYTE)SavedArg0);

__asm popad
__asm pop ebp
__asm push HookProcAdr
__asm retn
}

Последний раз редактировалось Эдвадко, 12.05.2010 в 07:46.
Эдвадко вне форума   Ответить с цитированием
За это сообщение Эдвадко нажился 2 спасибками от: