amvoz все это называется "сплайсинг", когда в начале кода функции ты прописываешь прыжок на свой обработчик Просто твой метод это делать - с отладчиком и прочим - действительно только ты придумал. Все остальные пишут просто в память процесса и не заморачиваются с олькой и т.д.
Сплайс конечно прикольная штука, но однопотоковость это очень плохо. Тут можно поступить следующим образом: скопировать целиком секцию кода из памяти в другую область и перенаправить. Если будет абсолютный прыжок, то ничего страшного не произойдёт, он просто прыгнет на оригинальную секцию. Хотя сейчас это не так актуально.
Я бы назвал это не сплайсингом, а ещё одним способом исследования программ. Очень удобно. Если проги, конечно, открываются в отладчике и нормально работают.
а я бы назвал это сплайсингом. иди читай о сплайсинге и не выпендривайся "оябы назвал это мегопоездатым способом жарить рис!" )
Покопался в статьях и исходниках сайта - в сорце заменил функцию из user32.dll на ntdll.dll (ZwOpenProcess) но перехват не работает ( (архив на сайте advapihook.rar, исходник HookProc)
Дело-то не в названии вообще-то. Дело в том, что дурак я сам до него дошёл, а ты умный не дошёл. Привет.
Я вообще-то считал, что это товарищеский форум и решил поделиться чисто и честно своими наработками. И смею думать, они некоторым новичкам помогли бы. ...А некоторых штатских в более сильных ветках шпыняют, видать, вот они сюда и приходят злобу срывать.
скоро и я стану твоим поклонником )) да не, никто не спорит, ты крут. Но такое уже есть и в более "обработанном" виде, где все просто и никаких действий руками. Грубо говоря, ты щас изобрел квадратный велосипед без сиденья, потому и реакция такая
И это... Чёт я не пойму... Классический сплайсинг не предполагает прописывание кода руками? А там как? Подумал и оно само прописалось? Ну, пацаны...
Классический сплайсинг, это так: ты написал в сорце код. Ты никуда его не копируешь и ничего с ним не делаешь. Его скомпилировал компилятор, собрал линкер и ты забыл про него - не надо здесь отладчик привлекать. Чтобы заменить первые инструкции - тоже не надо отладчика. Дизассемблер длин возьми, скопируй первые инструкции, вставь jmp far xxx. Это все делается с пом. rep movsb. Не надо ничего сторонними программами открывать, куда-то прописывать, делать дамп и прочее. Это все делается програмным способом в несколько строк кода.
здорово, но, честно признаться - > я > 1. не помню чтобы я такое писал, потому удивился, когда меня процитировали > 2. вобще не понимаю и не догадываюсь что значит эта фраза про рис > 3. фшоки - ведь это было всего 20 минут назад Х_х мои мозги живут отдельной жизнью. отдельной от мозгов Х_х меня подбросило и разорвало.
чтобы скопировать ровное количество инструкций и не восстанавливать каждый раз старые байты на место. Старые инструкции перед передачей управления можно исполнять в отдельном буфере (там редко бывают прыжки в числе первых инструкций), а потом делать безусловный прыжок на остальные оригинальные инструкции. А чтобы инструкции были целыми, надо знать их длину при копировании...
1) инструкций jx там правда почти нет 2) прыжки в начале бывают только после сплайсинга (например антивирусом или фаерволом) 3) проверить наличие прыжка и скорректировать его не составит особого труда - крайне маловероятно, что прыжок там будет условным. Для сплайсинга надо 5 байт. А инициализировать как минимум одну переменную, с чем-то ее сравнить и сделать прыжок - такое в 5 байт не вместишь. Следовательно, прыжок если и будет, то 99.99% безусловный. А это только 2 опкода - EB или E8 (E9?). Сделай краткую проверку и скорректируй прыжок - и никаких проблем