· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.HEAP —› почему сайс не всплывает.

. 1 . 2 . >>

Посл.отвђт Сообщен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 ;-) или я такой умный или мне Айс попался хороший ;-)

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.122