|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 24, 2004 10:00:56 · Поправил: andsin привет! поставил DriverStudio 3.1 и понял, что сайс не брякается на bpx CreateProcessA и bpx CreateProcessW. что это за такое и как бороться, подскажите, плз. |
|
|
Дата: Мар 24, 2004 16:54:11 Т.е. другие бряки работают? А что если заюзать BPM CreateProcess? |
|
|
Дата: Мар 24, 2004 17:17:24 · Поправил: andsin :bpm CreateProcess Symbol not defined :bpm CreateProcessA :bpm CreateProcessW не работает... :( bpio - работает bpx GetMessageA(W) не работает тоже. |
|
|
Дата: Мар 24, 2004 18:02:12 Symbol not defined У тебя экспорты-то хоть прописаны? Доки бы почитал сначала, перед тем как в форуме гадить-то... |
|
|
Дата: Мар 25, 2004 09:18:24 · Поправил: andsin ...так. не знаю, прописаны ли, но я не прописывал. а где это написано??? что-то я найти не могу. |
|
|
Дата: Мар 25, 2004 22:24:51 Сосулька при инсталяции по умолчанию экспортирует имена из кернела, хал.длл и т.п. Ну, у меня так (DS 3.0)... У тебя тоже, andsin... Набери команду exp для просмотра экспортируемых имен... А что касается несрабатывания бряков так это у меня тоже иногда бывает (правда очень редко). Тут просто надо вручную бряки выставлять... Делаеш u CreateProcessA, а потом bpx на показаный eip... А еще иногда помогает после bpx CreateProcessA и несрабатывания бряка, просто обновить бряки командой bl... тогда начинают работать... |
|
|
Дата: Мар 26, 2004 09:28:06 · Поправил: andsin да, или у меня проблемы с днк, или сайс не брякается. в списке экспортов CreateProcess нет, есть только Kernel!CreateProcessA(W). Godness, сделал все, как ты сказал, но соответствующие кёрнеловским экспортам eip, сайс все равно игнорирует... |
|
|
Дата: Мар 26, 2004 19:55:35 Ну, тут еще может быть такое: возможно ты переключаешся на сосульку, когда у тебя система не загружена, и соответственно попадаеш в процесс Idle, в пространстве которого кернел не промэппирован... ну и понятно, что тут всякие bpx CreateProcessA не катят... сначала попробуй переключится на любой другой процесс где есть кернел, например explorer - т.е. пишеш addr explorer... там уж и выставляй бряки... правда у меня, при попытке установить бряк в процессе, где соосветствующей длл-ки нет (как в Idle например), сосулька тут же падает и систему с собой забирает... видимо у тебя не так... Короче всегда переключайся на соответствующий процесс... Если предыдущее не прокатит, то попробуй так. Компильни следующую прошку в fasm'е или де-нить еще... ;+++++++++++++++++++++++++++++++++++++++;
include '%fasminc%\win32ax.inc'
;+++++++++++++++++++++++++++++++++++++++;
.code
start:
mov esi, dword [ExitProcess]
cmp byte [esi], 0xCC
jne EXIT
invoke MessageBox, HWND_DESKTOP,\
"I found your breakpoint! Try to catch me :)",\
"Типа, hello...",\
MB_OK
push 0 ;<- параметр для ExitProcess
push TTT ;<- адресс возврата
push ebp ;<- первая команда функции ExitProcess
mov ebp, esp ;<- и вторая (только для XP и 2k, ессно)
add esi, 3
jmp esi ;<- перепрыгивам бряк
EXIT:
invoke MessageBox,0,"Юр ар э good user :)","Вау...!!!",MB_OK
invoke ExitProcess,0
TTT:
.end start
;+++++++++++++++++++++++++++++++++++++++;Теперь открой сосульку переключись на контекст експлорера addr explorer и сделай u ExitProcess и bpx codeaddr (ну или сразу bpx ExitProcess)... Запусти эту прошку. Если прошка найдет бряк значит все нормально. Значит прога в которой ты пытаешся отловить CreateProcessA использует тот же прием, что и эта прошка. Т.е. первые команды выполняет внутри себя, а потом перепрыгивает через твой бряк. Тебе просто надо ставить бряк на несколько команд ниже чем начинается CreateProcessA...
Ну, а если не найдет!... ну тада ваще прикол - значит глючит непосредственно команда сосульки bpx... Придется либо какие патчи искать либо совсем неприлично делать (и как неудобно!) - юзать макросы. Пишеш следующее (в сосульке) macro bpxmake = "u %1; ? byte(*codeaddr); eb codeaddr cc" или так macro bpxmake = "? byte(*%1); eb %1 cc" macro bpxback = "eb eip %1" Делаеш так - bpxmake ExitProcess, макрос установит в указаном адрессе бряк 0xCC (int 3) и выдаст значение байта, который был изменен (ты его должен запомнить). Также сосульке должно быть постоянно включено bpint 3. Когда бряк сработает набери bpxback + [байт, который показал первый макрос] А можно байт и не запоминать, но тогда тебе придется найти какой-нить адресс который промэппирован везде, не сбрасывается на диск и ессно никем не используется (где-то внутри кернела, а еще лучше - внутри тела сосульки, в конце какой-нить секции)... Короче найдеш :) Тогда макросам будет немного проше пользоваться macro bpxmake = "eb %2 byte(*%1); eb %1 cc" macro bpxback = "eb eip byte(*%1)" юзаеш так bpxmake ExitProcess 77E60000 <- найденый адресс куда сохранится измененный байт, a когда упадеш, то bpxback 77E60000 Ну, это уж точно должно работать, железно... а если все-таки не работает - значит одно из трех - этот код просто не выполняется - у тебя в сосульке не работает ни одна команда - дето ты тупиш не по детски :) |
|
|
Дата: Мар 26, 2004 19:56:06 Что-то я тут дохрена наврал... Кстати, подскажи ссылку где скачал DS 3.1, а раз форум не варезный, то кинь мне ссылку на мыло godness@omen.ru, пожалуйста... |
|
|
Дата: Мар 26, 2004 22:20:17 А всё таки интересная тема: "почему сайс не всплывает" :-) Да потому что утонул давно, пациент скорее мертв чем жив, а вы ему искусcтвенное дыхание делаете ;-) |
|
|
Дата: Мар 29, 2004 12:57:56 >addr explorer... там уж и выставляй бряки... Godness, большое прибольшое. да, блин, вот так заморочка, была. :) |
|
|
Дата: Мар 29, 2004 13:35:09 andsin А какая OS? Godness Молоток. Люблю внятные письма. |
|
|
Дата: Мар 29, 2004 14:59:13 xp |
|
|
Дата: Мар 29, 2004 16:07:46 Почему так и думалось что XP :) |
|
|
Дата: Мар 29, 2004 17:32:17 Я вот что-то не пойму, юзал я Driver Suite 2.7 под XP, сейчас под 2k, никогда никаких проблем с установкой бряков не имел, а уж всплывает Айс всегда как заправский пловец при малейшем позыве его по Ctrl+D ;-) или я такой умный или мне Айс попался хороший ;-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.122 |