Показать сообщение отдельно
Старый 08.05.2010, 23:43   #9
Пользователь
 
Регистрация: 03.11.2008
Сообщений: 60
Сказал Спасибо: 3
Имеет 107 спасибок в 21 сообщенях
GoldFinch пока неопределено
По умолчанию

Для реальных ситуаций, надо либо смотреть какие инструкции в начале функции и прописывать их в jmpMessageBoxW() руками,
либо использовать дизассемблер длин инструкций и определять длину и тип копируемых инструкций с его помощью.

Также надо учитывать что когда в начало функции пишется "jmp hook", то если какой-то поток в это время исполняет код в этом месте - прога упадет, по этому либо надо быть уверенным что никакие потоки эту часть кода исполнять не будут, либо замораживать все потоки, проверять это и если надо - переносить eip на новый код.

Дизассемблер длин инструкций, адаптированный для VC++ можно посмотреть тут
http://code.google.com/p/nabla-kb/so...s/rce/hook.cpp
(функция instruction_length, пропустить сложно; остальной код в этом сорце работает только частично)
GoldFinch вне форума   Ответить с цитированием
За это сообщение GoldFinch нажился спасибкой от: