вообще говоря код зависимый от версии виндовс некрасив, тем более для таких задач... я обычно делал две версии (x86 и x64), поскольку целевая винда была 32ух и 64ех разрядная хр и виста... различия делал с помощью "#ifdef _WIN64"... это не сложно, главное помнить, что в x86 ILP32, а в х64 - LLP64, ну и про fastcall winapi функции в x64))) это чет слишком замудренно на мой взгляд... зачем так делать, если можно подменить первые пять байт на трамплин и объявить функцию-подменку так же, как оригинал? (аттач не смотрел )
эх, жаль, что убрали возможность редактирования своих постов((( метод подмены пяти первых байт работать будет везде... в x64 соответственно будет "метод подмены девяти первых байт")))
XshStasX Это как раз твой pushad\popad никакого значения не имеют Сам мозгом пошевели - при вызове WriteFile в стек заталкивается 5*4 байт параметров, которые при отсутствии твоего корявого перехвата нормально снимаются при выходе из функции WriteFile. Ты же своим перехватом ставишь jmp на свою ф-ю mess без параметров, поэтому при выходе из нее никакие параметры со стека не снимаются и соотв-но после возврата в функцию, вызвавшую WriteFile, происходит разбалнс стека
практика показала что имеют. 1) делаем жамп 2)делаем pushad(для того чтоб все регистры сохранить) 3)заходим в нашую функ. она из стека ничего не берет, а токо помещает в стек при завершении нашей функ. все что она положила(push) в стек то и вытянет(pop) из него А вот если у нее были параметры то она могла что-то затереть, так как она делает( pop внутри себя) У меня после перехвата идет дальнейшие выполнение WriteFile (поэтому и снимать параметры из стека низя)
Не учитывая IDP, шадова калбэки и прочие кульные техники видим нормальное решение: Ставим хардварный брейк на системный стаб. Имеем всё движения потока. А модификация кода это злопогонь.
Аппаратные точки останова на системный шлюз. Но это к примеру. Обычно найдутся решения позволяющие не использовать перезапись кода. Это например калбэк до вызова целевого кода.
Medstrax Никто и не предлагал ставить точки останова на дескрипторные таблицы, темболее из юзермода и под винь