Цитата:
Сообщение от Diantro
А-а, я думал можно без ассембли как-то обойтись. Вот так получилось. Выглядит и правда аккуратней.
Код:
void __declspec(naked) sendNetMessageTrampoline(void* thisPtr, DWORD zero1, const char* packetTypePtr, const char* packetContentPtr, DWORD length, DWORD zero2) {
__asm {
push ebp
mov ebp, esp
sub esp, 0x18
jmp[jmpBackAddrSendNetMessage]
}
}
|
Трамплин лучше динамически создавать, например доработав класс. А так тебе придется под каждый хук добавлять отдельную naked функцию... Желательно бы еще и дизассемблер длин прицепить, чтобы количество байт в прологе просчитывалось автоматически.
А еще лучше воспользоваться готовым решением типа
Добавлено через 45 минут
асм вставки надо вообще избегать, пользоваться ими только где это действительно необходимо. В x64 тебе пришлось бы колхозить через .asm файл, а это то еще веселье)