Цитата:
Сообщение от Dino
А зачем так костылить хук асм вставками и накед функой? Можно объявить его как __fastcall, затем вызвать логер и вернуть ориг __thiscall
Код:
typedef void(__thiscall* _SendNetMessage)(void* thisClass, DWORD zero1, const char* packetTypePtr, const char* packetContentPtr, DWORD length, DWORD zero2);
_SendNetMessage jmpBackAddrSendNetMessage;
void __fastcall sendHookFunc(void* thisClass, PVOID _EDX, DWORD zero1, const char* packetTypePtr, const char* packetContentPtr, DWORD length, DWORD zero2)
{
printSendBufferToLog(packetTypePtr, packetContentPtr, length);
return jmpBackAddrSendNetMessage(thisClass, zero1, packetTypePtr, packetContentPtr, length, zero2);
}
|
Попробовал, но возникла проблема с указателями на стек. В твоем примере мы вызываем
jmpBackAddrSendNetMessage как
__thiscall, поэтому перед выполнением функции нужно подготовить стек, а эти команды мы перетерли
jmp-ом.
Скрин из дебаггера