eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
обновлён 2 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Nihil enim (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Как в ОллиДбг определить откуда в данное место сделан переход ?
Посл.ответ Сообщение

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 18 июня 2008 10:37 New!
Цитата · Личное сообщение · #1

Всем привет.

Есть код:

a:
mov eax,1

гдето в коде может встретиться:

jne short a

или:

call a

мне хочется научиться узнавать, кто этот прыжок сделал ? Если в случае call можно глянуть адрес возврата, то как быть с jXX\jnXX ?


Ранг: 238.8 (наставник)
Статус: Участник
CyberHunter

Создано: 18 июня 2008 10:47 New!
Цитата · Личное сообщение · #2

Ctrl + R, покажет все ссылки на установленную строку.

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 18 июня 2008 11:22 New!
Цитата · Личное сообщение · #3

Flint Хорошо, а если был код:
mov eax,0xHHHHHH
add eax,0xHHHH
inc eax
Xor eax,0xHHHH
jmp eax

т.е. вычисление перехода, тогда никих ссылок нет!

Ранг: 4.0 (гость)
Статус: Участник

Создано: 18 июня 2008 11:53 New!
Цитата · Личное сообщение · #4

Запускай прогу не через Run, а через Trace Into/Trace Over. Когда остановишся на бряке нажми - (Minus) и вернешся на предыдущую команду.

Ранг: 214.1 (наставник)
Статус: Участник

Создано: 18 июня 2008 12:00 New!
Цитата · Личное сообщение · #5

theCollision
трассировать и потом '-'


Ранг: 271.6 (наставник)
Статус: Участник

Создано: 18 июня 2008 12:11 New!
Цитата · Личное сообщение · #6

норкоманскей метод...я в вб так делал. пришлось Trace Into, т.к. я проскакивал и у меня прога каталась 4,5 часа...зато монег как в хакерских фильмах
Если расклад
theCollision пишет:
mov eax,0xHHHHHH
add eax,0xHHHH
inc eax
Xor eax,0xHHHH
jmp eax

Тогда можно тупо ставить бряк на место куда прыгает из "откуда-то" и смотреть все регистры...


Ранг: 990.3 (! ! !)
Статус: Модератор
Author of DiE

Создано: 18 июня 2008 12:32 · Поправил: Hellspawn New!
Цитата · Личное сообщение · #7

Spirit пишет:
Тогда можно тупо ставить бряк на место куда прыгает из "откуда-то" и смотреть все регистры...


тоже не особо покатит, если переход будет такой:

mov adr,12345
xor adr,12345
push addr
ret

или так
push adr
xor [esp],12345
ret


Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 18 июня 2008 12:37 New!
Цитата · Личное сообщение · #8

Надуманая тема пусть раскрутит стек посмотрит

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 18 июня 2008 12:54 New!
Цитата · Личное сообщение · #9

pavka В аське спросил некоторых опытных реверсеров и ни один из них не сумел пояснить что есть "раскрутить стек" ?

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 18 июня 2008 13:07 New!
Цитата · Личное сообщение · #10

theCollision пишет:
В аське спросил

А че спрашивать theCollision пишет:
Если в случае call можно глянуть адрес возврата, то как быть с jXX\jnXX ?

С кэлом ты понимаешь ;) Здесь то же самое только jXX\jnXX внутри процедуры


Ранг: 467.7 (мудрец)
Статус: Участник
Иной :)

Создано: 18 июня 2008 13:16 New!
Цитата · Личное сообщение · #11

pavka
стек можно раскрутить, но мы увидем только вызовы каллов, а с джампами облом.

theCollision
трейс наверное самое лучшее решение.
раскрутить стек - смотри вниз по стеку возвраты таким образом поймешь что из чего вызывается.

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 18 июня 2008 13:21 New!
Цитата · Личное сообщение · #12

[HEX] пишет:
но мы увидем только вызовы каллов

А другого и не надо это быстрее и продуктивней чем трейс

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 18 июня 2008 13:53 New!
Цитата · Личное сообщение · #13

Есть кусок памяти на который поставил железный останов и ткнул на ф9, выплыл на иструкции mov [edi+eax+0xHH],al и мне щас надо узнать, как в это место попали ? потому что выше вижу махинации подобные взятию значиний из локальных переменных, т.е. очень похоже на начало ф-ции. Кто вызвал это ф-цию не понятно, т.к. воврата невидно


Ранг: 467.7 (мудрец)
Статус: Участник
Иной :)

Создано: 18 июня 2008 14:21 New!
Цитата · Личное сообщение · #14

theCollision
Как так не видно? В стеке полюбому возврат есть!!! Смотри внимательней.

Ранг: 8.2 (гость)
Статус: Участник

Создано: 18 июня 2008 14:29 · Поправил: pool New!
Цитата · Личное сообщение · #15

В данной ситуации выход - в том, чем большинство постивших тут - видимо не сильно волокут, Conditional BP называется. Вот тут олли2 работает отлично. А потом уже обратно трассировать.
pavka пишет:
А другого и не надо это быстрее и продуктивней чем трейс
+1, но тут знания нужны!
P.S: сорри за флейм, впредь буду только в новичках постить и не вмешиваться в дискуссию ветеранов

Ранг: 77.1 (постоянный)
Статус: Участник

Создано: 18 июня 2008 14:38 New!
Цитата · Личное сообщение · #16

SoftIce рулит - показывает MSR FromIP при hardware breakpoint.

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 18 июня 2008 14:44 New!
Цитата · Личное сообщение · #17

[HEX] Хорошо а что мешает автору только один раз вызвать код функции, скажем через jmp <Func_addr> ? Оформить как надо и вызвать, никто ведь не мешает, да я и сам так иногда делаю )


Ранг: 126.7 (ветеран)
Статус: Участник
#CCh

Создано: 18 июня 2008 15:40 New!
Цитата · Личное сообщение · #18

интересный вопрос.. можно плаг написать.. но на практике, я например, трейсил дальше или просто смотрел в стек, куда произойдет возврат


Ранг: 467.7 (мудрец)
Статус: Участник
Иной :)

Создано: 18 июня 2008 18:33 New!
Цитата · Личное сообщение · #19

theCollision
про джампы я написал в первом посте даного топа, а у кала полюбому возврат будет в стеке.

Ранг: 8.2 (гость)
Статус: Участник

Создано: 18 июня 2008 21:00 New!
Цитата · Личное сообщение · #20

У Вас тут всегда такой пустой флейм, или вы только на ранги смотрите постивших и принимаете к сведению - читать пост или нет? Я выше написал, что бряк с условием - выход из данной ситуации, это аналогично трейсу, про который [HEX] писал.
Ice-T пишет:
интересный вопрос.. можно плаг написать.. но на практике, я например, трейсил дальше или просто смотрел в стек, куда произойдет возврат
- да, кроме плага, ещё автора проги вычисли, и забери у него сорсы, тогда вообще ненадо искать ничего.

Ранг: 495.3 (мудрец)
Статус: Участник

Создано: 18 июня 2008 22:25 New!
Цитата · Личное сообщение · #21

[HEX] пишет:
стек можно раскрутить, но мы увидем только вызовы каллов, а с джампами облом.

Ну если переходы делать так как выше предложил Hellspawn, то и они засветятся в ESP-4

Sh[AHT] пишет:
SoftIce рулит - показывает MSR FromIP при hardware breakpoint.

К сожалению не на всех процах этот фокус работает.
И опять же:
Ice-T пишет:
можно плаг написать..


[HEX] пишет:
Как так не видно? В стеке полюбому возврат есть!!! Смотри внимательней.

Во многих протах на антиотладке висит такая фигня, которая подчищает весь стек до системных значений и прыжком отправляет к терминатору.

theCollision, не скупись на информацию, расскажи, что за жертва, не стесняйся, кидай сюда простыню из функции.
Чем больше расскажешь тем быстрее помогут.

Ранг: 271.5 (наставник)
Статус: Участник
Packer Reseacher

Создано: 18 июня 2008 23:19 New!
Цитата · Личное сообщение · #22

Bitfry Да все проще ))) Мне просто надо знать, насколько подобная ситуация доставляет сложности ?

Еще раз опишу ситуацию, человек анализирует код и видит, что есть кусок памяти. Ему стало интересно, кто эту память решит обновить, т.е записать туда значение. Он ставит железный бряк по этому байту. Жмет на выполнение, аналог в олли ф9. В конечном итоге прога брякается и показывается команда которая пыталась изменить этот байт. Анализируя код, реверсер видит что сюда был прыжок откуда то, вероятно jmp но может и jXXX\jnXXX или может быть call, но он также видит что нет адреса возврата наверху в стеке. Как ему узнать кто сюда прыгнул ? Адрес команды, которая совершила переход ?

Думаю, все понятно итак.

Некоторые форумчане предложили трейс, но может ли быть чтото еще ?


Ранг: 106.6 (ветеран)
Статус: Участник

Создано: 18 июня 2008 23:56 New!
Цитата · Личное сообщение · #23

theCollision пишет:
Некоторые форумчане предложили трейс, но может ли быть чтото еще ?

имхо чел говорит дело и лучше непридумать:
pool пишет:
Conditional BP называется. Вот тут олли2 работает отлично. А потом уже обратно трассировать.

Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 19 июня 2008 01:17 New!
Цитата · Личное сообщение · #24

pool пишет:
У Вас тут всегда такой пустой флейм, или вы только на ранги смотрите постивших и принимаете к сведению - читать пост или нет? Я выше написал, что бряк с условием - выход из данной ситуации

Хм.. не хоццо мериццо членами, но ВЫ товарисч мимотазика ходите, причем очень часто!
Надо для начала хоть какой-то опыт иметь в трейсинге, чтобы утверждать обратное(естественно речь не идет о стандартных возможностях в оле)
Возьмите для начала VMProtect поставите любой бряк(!), какой ВАМ нравиццо и нажмите F9(естесно без применения примат команд начинающихся с Trace и Animate)
И попробуйте вернуццо без трейсинга в тело предшествующего исполнителя байт-кода(?) хм.. думаю, ВЫ там должны будите заметить поксореную кашу в стеке %))
Но даже не будем забегать далеко, а просто взять протектор нашего мембера cracklab`а Elemental Protector(думаю, у вас быстро отпадут сомнения насчет компетентности в знаниях реверсеров лаба)
Там только один прыжок в выделенную область памяти достоин аплодисментов. Попробуйте импорт посмотреть, ну или OEP в "стеке"(бу-го-га) поискать/восстановить
Эт вам не бота от доктора-веба реверсить ;))
Это в топике не флейм, а бурные соприкосновения разных точек и стилей в реверсе - каждый пишет, о том что знает и умеет
И называть всех тут ламоками не стоит у каждого свой уровень, если потребуеццо помощь в чем-то серьезном появацца те, которые больше знают

P. S.
По сабжу: у всех дорога будет одна - вначале трейс, потом парсер в ИДЕ и замкнеццо все на эмуле(тяга будет к универсальному) – ИМХО %))

PP. S.
А можно и не париццо, а просто писать скрипты(в большинстве случаев(80%) этого достаточно будет) и ждать обновлений ODbgScript и PhantOm!

Ранг: 1045.7 (!!!!)
Статус: Участник

Создано: 19 июня 2008 03:31 New!
Цитата · Личное сообщение · #25

Demon666 пишет:
Возьмите для начала VMProtect поставите любой бряк

Тут речь идет о VM protecte разве? или о VM ?Demon666 пишет:
Попробуйте импорт посмотреть, ну или OEP в "стеке"(бу-го-га) поискать/восстановить

ОЕП и импорт и посмотреть и восстановить не проблема сложность в разнообразной адресации и большим количеством регионов выделеной памяти как впрочем и спласинг

Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 19 июня 2008 06:03 New!
Цитата · Личное сообщение · #26

pavka
кхе-кхе, все мы знаем, что если даже в природе останиццо один hiew (кста если че, pool чет делал уклон на консольное GUI в не положительную сторону) ты все равно будешь продолжать ломать с завидной постоянностью проты ;)

pavka пишет:
Тут речь идет о VM protecte разве?

P. S.
По сабжу: да по-сути в топе та идет разговор о примитивных элементах обфускатора и морфа, то тут никаких сложностей даже для среднего уровня реверсера и не будет - ИМХО(ты кстати ап этом уже выше писал) смысл-то жевать, жеваное?..

PP. S.
Вот и подумал че разговаривать о естественном, можно же и о более сложных вещах(а то анпакнут UPX и думают что всех победиле)

Ранг: 8.2 (гость)
Статус: Участник

Создано: 19 июня 2008 11:34 New!
Цитата · Личное сообщение · #27

Demon666 пишет:
Надо для начала хоть какой-то опыт иметь в трейсинге, чтобы утверждать обратное(естественно речь не идет о стандартных возможностях в оле)
- ничего не понял.
Demon666 пишет:
у вас быстро отпадут сомнения насчет компетентности в знаниях реверсеров лаба
- про не компетентность я не говорил, и нечего меня провоцировать, я писал, что те, кто тут кто постил (не все, но и ты в частности) по-видимому мало работали с условными бряками в олли, так что вначале пойми что пишут, а потом коментируй.
Demon666 пишет:
И называть всех тут ламоками не стоит у каждого свой уровень
- я не называл, читай выше!
Elemental Protector - буду уже смотреть как время появится, но т.к. VMP используется на нужных программах - он в первую очерь под исследование попадает.
По-поводу твоего поста, так это чистый флейм, если у тебя крик души и надо высказаться - пиши в личку. А так - напиши чем не подходит условный бряк, для сохранения шагов работы проги?

Ранг: 213.5 (наставник)
Статус: Участник
забанен

Создано: 19 июня 2008 13:57 New!
Цитата · Личное сообщение · #28

pool пишет:
надо высказаться - пиши в личку

А че тут шифроваццо-то, пусть знают все, в чем причина моих постов в твою сторону
Мне лично нравится, что пишет [HEX] и хотелось бы, чтобы он больше писал здесь на форуме (оригинально, интересно и в вебкодинге шарит(иногда мне его посты помогают осваивать слабые места в "этой области"))
С твоей стороны идут всякие там приколы в его сторону – то мля, он хреново отзываеццо о боте доктора-веба, то вот тут твой вариант с Conditional BP предпочтительнее чем его с трейсом(да еще это как-то стремно написано), мну это не нравиццо!!(надеюсь доходчиво объяснил)

pool пишет:
А так - напиши чем не подходит условный бряк, для сохранения шагов работы проги?

Речь идет вот примерно о таких технологиях www.hbgary.com/products.html
Description:
HBGary Inspector speeds team reverse engineering of software binaries. Inspector integrates dynamic runtime tracing with dataflow and static code analysis. Captured test data is recorded in a team-member shared database for further analysis with automated scripts and interactive graphing.
Packed, obfuscated, and self-modifying malware binaries resist static disassembly. Anti-debugging tricks hinder runtime analysis. However, malware must unpack and de-obfuscate itself to execute. Inspector defeats many anti-debugging tricks and recovers true program instructions and live memory evidence as malware operates. Dynamic analysis provides accurate information about malware behavior.
HBGary Inspector can trace data buffers and packets as they propagate in memory, saving countless hours and days of work for the Reverse Engineer. Complex control flow paths are mapped with interactive navigation graphs. Runtime code coverage is indicated and measured. Inspector is extensible with an exposed application program interface (API) and a powerful scripting system for analysis automation

(естесно это надо поюзать, чтобы понять всю соль, а еще лучше быть одним из разработчиков), а уже потом тут заявлять, что Conditional BP лучше технологий Tracers(еще надо учитывать, что это одна из примитивных технологий)

Ранг: 239.1 (наставник)
Статус: Участник

Создано: 19 июня 2008 14:26 New!
Цитата · Личное сообщение · #29

pool я чего-то вообще не врубаюсь как условный бряк поможет определить откуда передали управление.
расскажи идею подробней.
с трассировкой всё понятно - пишется трасса и потом назад вернуться можно, а с условным бряком как?
именно узнать откуда пришло управление.
т.е. ситуация такая: у нас сработал бряк по обращению к памяти или ещё какой, вот мы стоим на команде - как узнать откуда пришли
условный бряк поможет только если мы знаем нужный нам адрес - т.е. адрес команды перехода, и написать условный бряк таким образом чтобы он срабатывал только при переходе с этого адреса.
но этого адреса мы НЕ ЗНАЕМ.
как ещё тут помогут условные бряки я хз.
 eXeL@B —› Основной форум —› Как в ОллиДбг определить откуда в данное место сделан переход ?

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS