PDA

Просмотр полной версии : Хук Engine.dll GoD


DaVilka
26.09.2017, 11:49
Создаю топик в надежде получить готовое решение :rolleyes:
Известно, что в годовских клиентах не экспортируются функции из engine, облегчающие жизнь :search: Суть - получить адресс адднетворк и сендпакет, вопрос - как это сделать?:girl_cray: Отладчик не хочет подрубатся, а если и хочет, то толку не много :)

Smwr
26.09.2017, 13:53
хоть экспорты и выпилили, принт трейса в seh обработчиках остался.


.text:205546A6 push offset asc_2071C2A0 ; "UNetworkHandler::AddNetworkQueue"
.text:205546AB push offset aS ; "%s"
.text:205546B0 call ds:?appUnwindf@@YAXPB_WZZ ; appUnwindf(wchar_t const *,...)
.text:205546B6 add esp, 8
.text:205546B9 push 0
.text:205546BB push 0
.text:205546BD call __CxxThrowException@8 ; _CxxThrowException(x,x)


таким же образом нужно найти любой RequestXXX метод, посмотреть там смещение в вмт SendPacket, затем найти вмт (название класса ответственного за отправку пакетов - CClientSocket) найдя любой его метод (для самого SendPacket трейс не принтуется), для которого xref ведет в rdata (первый метод в вмт это UObject::QueryInterface, если что) прибавить смещение - там и будет указатель на SendPacket.
а вообще, SendPacket перехватить проще по вмт, тут достаточно смещения подсмотренного в RequestXXX.

под отладчиком всё гораздо проще, достаточно брякнуться на ws32.send/recv

DaVilka
26.09.2017, 19:01
хоть экспорты и выпилили, принт трейса в seh обработчиках остался.


.text:205546A6 push offset asc_2071C2A0 ; "UNetworkHandler::AddNetworkQueue"
.text:205546AB push offset aS ; "%s"
.text:205546B0 call ds:?appUnwindf@@YAXPB_WZZ ; appUnwindf(wchar_t const *,...)
.text:205546B6 add esp, 8
.text:205546B9 push 0
.text:205546BB push 0
.text:205546BD call __CxxThrowException@8 ; _CxxThrowException(x,x)


таким же образом нужно найти любой RequestXXX метод, посмотреть там смещение в вмт SendPacket, затем найти вмт (название класса ответственного за отправку пакетов - CClientSocket) найдя любой его метод (для самого SendPacket трейс не принтуется), для которого xref ведет в rdata (первый метод в вмт это UObject::QueryInterface, если что) прибавить смещение - там и будет указатель на SendPacket.
а вообще, SendPacket перехватить проще по вмт, тут достаточно смещения подсмотренного в RequestXXX.

под отладчиком всё гораздо проще, достаточно брякнуться на ws32.send/recv

У меня по чему то не запускается под отладчиком, сенк за инфу, буду ковырять