Цитата:
Сообщение от dark
речь же о хуке winapi? почему без отсутствия возвращения управления? ты уверен, что ГГ тебе это простит? ведь по сути ты убиваешь/подвешивает его поток.
Далее, попробуй как я писал в статье про гг. Ты можешь попробовать метод, который юзает сам ГГ - сначала хукнуть VirtualProtect, убрать доступ на запись в winapi-шные регионы и фильтровать в этом хуке попытки сменить доступ к этим самым регионам. Только обрати внимание, что ГГ может будет ругаться на то, что не может сменить доступ к памяти, поэтому лучше бы имитировать успешность всех операций - и смену доступа, и успешность записи (если, конечно, она идёт через WriteProcessMemory/NtWriteVirtualMemory, а не напрямую). Чёто пока писал, понял, что это не хилый такой гемор )
Давайте варианты проще - при установке сплайс-хука в любом случае будет мост. Место, в котором должны выполниться затёртые инструкции. Попробуй туда впихнуть свой jmp. Не пробовал, но по логике должно работать.
Плюс, можно влепить jmp после их jmp (прокатит со всем кроме почти всех native api). Но тут надо внимательно следить за состоянием регистров, а то будут вылеты. Так я делал, на сколько я помню.
|
функция не апишная + виртуальная и не экспортируемая, сам гг больше не хочет ставить хук по верх моего, да и хук ставится нормально, но как происходит хук, я на нужное место ставлю джамп на свою функцию, делаю в моей функции то что нужно, и возвращаю управление, хук я могу ставить на эту функцию в 3 или 4 разных места, все хорошо, но при возвращении управления палево, ставлю хук за джампом гварда - хук сработал, но при возвращении управления - краш