Сейчас на форуме: _MBK_, ut2004, vsv1 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› вопрос по статье BiT-H@ck'а "Объективный взгляд на DrWeb"
Посл.ответ Сообщение


Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 20 декабря 2006 06:24
· Личное сообщение · #1

Привет, крэкеры! У меня такой вопрос. В статье BiT-H@ck'а "Объективный взгляд на DrWeb" ( --> http://exelab.ru/art/?action=view&id=303 <-- ) встретил такие строчки и... эта встеча не была удачной "В оле ставим бряк на функцию MessageBoxA (именно он вылазит при запуске программы). Запускаем. Тормознулись. Выходим из этой функции и видим, что Call обскакать нельзя, по крайней мере на этом уровне. Выходим на более высокий уровень (выходим из процедуры). И тут нельзя, выходим ещё выше. О, а здесь можно. "
Что означает выражение "Выходим на более высокий уровень" применительно к Olly? Или конкретней: каку кнопку жать надо?

-----
программистом не рождаются - им умирают




Ранг: 27.7 (посетитель)
Активность: 0.030
Статус: Участник

Создано: 20 декабря 2006 06:59
· Личное сообщение · #2

Gambit
значит трассируем по F8 до retn и дальше



Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 20 декабря 2006 09:15
· Личное сообщение · #3

hell пишет:
значит трассируем по F8 до retn и дальше

ну или <Ctrl>+F9

-----
Blame the victim!





Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 20 декабря 2006 14:25 · Поправил: Gambit
· Личное сообщение · #4

жать F8 на call'e ? Да меня тогда сразу на меседжбокс выкинет!

-----
программистом не рождаются - им умирают




Ранг: 123.7 (ветеран)
Активность: 0.10
Статус: Участник
1nn0$/100

Создано: 20 декабря 2006 15:37
· Личное сообщение · #5

Gambit пишет:
Да меня тогда сразу на меседжбокс выкинет!

И что? дави OK и не парься.

-----
Blame the victim!





Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 20 декабря 2006 23:25
· Личное сообщение · #6

Тогда смысл выражения: "Выходим на более высокий уровень (выходим из процедуры). И тут нельзя, выходим ещё выше."??? (см ссылку)
-> ->

-----
программистом не рождаются - им умирают





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 20 декабря 2006 23:39
· Личное сообщение · #7

Gambit
Имеется в виду, что "обскакать call", т.е. с помощью какого-то jzz избежать вызова этого call'a => не будет вызова MessageBox'a и отключения всех фич зареганной проги, можно только на более высоком уровне вызова.




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 21 декабря 2006 00:13
· Личное сообщение · #8

HoBleen
На счет jzz я понял и так (не первый день в крякерстве ). Ясное дело, надо обойти call с бякой. Мне само выражение не понятно "Выходим на более высокий уровень <...> выходим ещё выше"

-----
программистом не рождаются - им умирают





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 21 декабря 2006 00:23
· Личное сообщение · #9

Ну ты сам поставил так вопрос

Более высокий уровень - к материнским и праматеринским функциям, которые вызывают текущую. Низкий соответственно - вглубь к более низким функциям (пардон за товтологию ), осуществляющим конкретный алгоритм или общение с аппаратурой. Извиняюсь если криво описал..




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 21 декабря 2006 00:42
· Личное сообщение · #10

Теперь уже не знаю что сложней: задать вопрос или ответить на него
Ладно, попробую поставить вопрос так:
BiT-H@ck пишет:
" Выходим из этой функции и видим, что Call обскакать нельзя, по крайней мере на этом уровне. Выходим на более высокий уровень (выходим из процедуры). И тут нельзя, выходим ещё выше. О, а здесь можно. Вот как это выглядит (вся процедура):

00413300 A1DC254700 MOV EAX, DWORD PTR DS:[4725DC]
00413305 85C0 TEST EAX, EAX
00413307 7523 JNZ SHORT 0041332C
00413309 8B0D54F44600 MOV ECX, DWORD PTR DS:[46F454]
0041330F 85C9 TEST ECX, ECX
00413311 7407 JE SHORT 0041331A
00413313 6A09 PUSH 9
00413315 E80C6E0300 CALL 0044A126
0041331A 8B442408 MOV EAX, DWORD PTR SS:[ESP+8]
0041331E 8B4C2404 MOV ECX, DWORD PTR SS:[ESP+4]
00413322 6A00 PUSH 0
00413324 50 PUSH EAX
00413325 51 PUSH ECX
00413326 E837B80300 CALL 0044EB62
0041332B C3 RETN
0041332C 8B44240C MOV EAX, DWORD PTR SS:[ESP+C]
00413330 C3 RETN
Мы вышли из процедуры...."
Внимание, вопрос :
Как я понял из Ваших советов надо жать F8 на calle и будет мне счастье
Но ведь тогда происходит переход (после нажатия ОК на меседжбоксе) куда-то вглубъ проги, а как найти/тормознуться на вышеуказанном коде ? (это, как я понял, и означает поднятся на уровень выше)

-----
программистом не рождаются - им умирают





Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 21 декабря 2006 01:47
· Личное сообщение · #11

Gambit
От адреса 00413300 поскроль чуть-чуть вверх. До начала процедуры. Поставь на начало процедуры бряк. Перезапусти программу. Прервавшись на твоем бряке, в стеке увидишь, куда выполниться переход после выхода из данной процедуры. Перейди по этому адресу. Предыдущая команда и есть вызов твоей процедуры, т.е. ты поднялся на 1 уровень вверх. И т.д.

ЗЫ Перечитал написанное, "масло масляное"... Но смысл, вроде бы, понятен.

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться





Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 21 декабря 2006 08:12
· Личное сообщение · #12

Спасибо! Последний ответ попал точно в нужное русло! Но уточните, пожалуйста:

ValdiS пишет:
Прервавшись на твоем бряке, в стеке увидишь, куда выполниться переход после выхода из данной процедуры.


О каком стеке идет речь (их там много, из них всех только два похожи на адреса, но в EIP адрес, где я стою, а в ESI адрес 0047xxxx, между тем у меня прога ограничивается адресом 0045xxxx)
Или это меня не туда понесло?

-----
программистом не рождаются - им умирают





Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 21 декабря 2006 08:38 · Поправил: Gambit
· Личное сообщение · #13

Ура! У меня получилось!!! Вся фишка в том, что надо поставить бряк на call'e, потом, тормознувшись, брякнуть следующую команду после call'а (исправление:брякать следующую команду не обязательно/не нужно), затем нажать F8, закрыть месседжбокс (кнопка ОК) - попадем в следующую команду после call'a и дальше потихонечку можно топать (F8) до RETN . На этой команде жмем F7 и попадаем "на уровень выше". Если надо еще выше, то снова, кладем кирпич на F8 и топаем до RETN. Там мы снова используем F7 и попадаем на уровень еще выше: ))))))))))))))))))))))))))
И Т.Д.

ЗЫ: Народ! Подскажите, я правильно все понял?
ЗЫ2: Кто может: объясните, пожалуйста, предыдущий вопрос (теперь уже не практический, а чисто сами знаете какой вопрос )
Исправление: ЗЫ2 отпадает

-----
программистом не рождаются - им умирают





Ранг: 990.2 (! ! !), 380thx
Активность: 0.680
Статус: Модератор
Author of DiE

Создано: 21 декабря 2006 13:30
· Личное сообщение · #14

Gambit пишет:
(F8) до RETN . На этой команде жмем F7


не обязательно, мона всё по F8..
F7 - трассировка с заходом в процедуру а
F8 - без захода

Gambit пишет:
кладем кирпич на F8 и топаем до RETN


можно просто

Ctrl+F9 (Execute till return)

-----
[nice coder and reverser]





Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 21 декабря 2006 14:02
· Личное сообщение · #15

Всем спсибо за ответы! Вы мне очень помогли
Тема закрыта!
Однозначно!

-----
программистом не рождаются - им умирают



 eXeL@B —› Вопросы новичков —› вопрос по статье BiT-H@ck'а "Объективный взгляд на DrWeb"
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати