Тема: Актуально Обход шифрования пакетов
Показать сообщение отдельно
Старый 19.11.2024, 15:58  
Diantro
Проф. продавец
Аватар для Diantro
OFFLINE
Регистрация: 29.10.2023
Сообщений: 1,850
Благодарностей:
263 всего
Мнения: + 460
Репутация: 790

Цитата:
Сообщение от 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-ом.

Скрин из дебаггера
 
Ответить с цитированием