Сейчас на форуме: Magister Yoda, subword (+9 невидимых)

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

Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

Всем привет.

Есть код:

a:
mov eax,1

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

jne short a

или:

call a

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

-----
My love is very cool girl.





Ранг: 238.8 (наставник), 67thx
Активность: 0.20
Статус: Участник
CyberHunter

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

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

-----
Nulla aetas ad discendum sera




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

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

-----
My love is very cool girl.




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

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

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



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

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

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




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

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

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

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

-----
iNTERNATiONAL CoDE CReW





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

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

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


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

mov adr,12345
xor adr,12345
push addr
ret

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



-----
[nice coder and reverser]




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

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

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



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

-----
My love is very cool girl.




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

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

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

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

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




Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

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

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

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

-----
Computer Security Laboratory




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

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

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

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



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

-----
My love is very cool girl.





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

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

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

-----
Computer Security Laboratory




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

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

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



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

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

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



Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

-----
My love is very cool girl.





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

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

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

-----
invoke OpenFire





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

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

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

-----
Computer Security Laboratory




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

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

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



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

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

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

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

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

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


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

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

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

-----
Всем привет, я вернулся




Ранг: 271.5 (наставник), 12thx
Активность: 0.150
Статус: Участник
Packer Reseacher

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

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

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

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

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

-----
My love is very cool girl.





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

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

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

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




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

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

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

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

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

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

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 1045.7 (!!!!), 31thx
Активность: 0.570
Статус: Участник

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

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

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

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



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

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

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

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

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

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

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




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

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

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



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

Создано: 19 июня 2008 13:57
· Личное сообщение · #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(еще надо учитывать, что это одна из примитивных технологий)

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 251.3 (наставник), 81thx
Активность: 0.140.11
Статус: Участник

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

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


 eXeL@B —› Основной форум —› Как в ОллиДбг определить откуда в данное место сделан переход ?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати