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

 eXeL@B —› Вопросы новичков —› Отмечание "пройденных" команд в OllyDbg
Посл.ответ Сообщение

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

Создано: 31 января 2011 16:36
· Личное сообщение · #1

Добрый день!

Сижу в OllyDbg, но в коде слишком много ветвлений и различных вызовов без возврата. Можно ли как-нибудь настроить OllyDbg так, чтобы она отмечала уже пройденные команды (как в w32dsm) и сохраняла это между вызовами?

В частности, есть ли возможность сделать AutoStep, чтобы потом посмотреть на "путь вызовов"?



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

Создано: 31 января 2011 18:06 · Поправил: Promix_17
· Личное сообщение · #2

Да, это можно сделать.
View->Run trace
Левая кнопка мыши -> Log to file
Теперь, если включить Trace into/Trace over все будет записываться в файл.

Просто трассировку можно анализировать и из View->Run trace

| Сообщение посчитали полезным: valot, tex32

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

Создано: 31 января 2011 18:50
· Личное сообщение · #3

А можно ли сделать так, чтобы он сам протоколировал все команды до следующей точки прерывания?

Какие есть способы упрощения поиска "откуда пришли"?"
То есть у меня есть точка остановки "до" и "после", а между ними много кода от протектора. Хочу оценить, что с этим кодом делать в дампе, можно ли сразу перейти и не распаковывать, или всё-таки не всё ещё в дампе оказывается распаковано. Через F7/F8 рискую закопаться в мелочах.

Как проще всего определить, где в стек помещается адрес возврата (то есть знаю значение в стеке, которое там появляется, а потом на него осуществляется retn), но точка прерывания на соответсвующем call не срабатывает - вызывается откуда-то из упаковщика.



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

Создано: 31 января 2011 20:12
· Личное сообщение · #4

На часть своих же вопросов сам и отвечу.
В ODbgScript есть команда, с помощью которой генерируется трассировка: ticnd "eip == 401024"

P.S. Теперь осталось придумать, каким образом облегчить анализ файла трассировки.



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

Создано: 31 января 2011 20:45
· Личное сообщение · #5

Смотря для каких целей проводится анализ трассировки.

Если мы сравниваем две трассировки выполнения программы, чтобы определить покрытия, то можно самому программу написать выдающую различия (это полезно делать, например, чтобы локализовать проверку - сравниваем трассу до и после истечения испытательного срока).

Полезно покопаться в настройках DebuggerOptions -> Trace и отключить вход в системные функции и т.д.

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



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

Создано: 31 января 2011 21:19 · Поправил: valot
· Личное сообщение · #6

Теперь понятно, почему в трассировке не нашёл вывода на экран, хотя он был - опции трассировки в системные dll были сняты

Благодаря трассировке наткнулся на проблему, из-за которой "буксовал": нашёл, каким образом упаковщик возвращает управление в основную программу. Проблема в том, что производится возврат на "нечётную" команду, поэтому в окне дизассемблера Olly я этого не вижу, а попытка поставить точку прерывания слетает. Хотел спросить как это обойти, но догадался сам разбить "плохую" команду с помощью NOP, но без галочки "заполнять".

Но схожая проблема есть при просмотре дампа, если там юникодные строки, которые начинаются с нечётного байта - удаётся их просмотреть лишь как ascii. Есть ли возможность в Olly "сдвинуть" на один байт смещение для просмотра строк в дампе?



UPD: Небольшое дополнение про трассировку в Olly:
а) После завершения трассировки можно в окне трассировщика запустить профайлер, который по адресам или по количеству вызовов покажет все зафиксированные команды. Штука очень удобная для выявления распаковки и "нормального кода".
б) Если в опциях Olly стоит Options --> Debugging Options --> Trace --> "Group adjacent command in profile", то в профиле строк будет меньше, так как соседние "схлопнуться" и придётся искать в полном файле.


Какие есть способы для анализа трассировки, кроме загрузки в Excel?




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 01 февраля 2011 03:49
· Личное сообщение · #7

valot пишет:
Есть ли возможность в Olly "сдвинуть" на один байт смещение для просмотра строк в дампе?

Ctrl+курсор вверх/вниз

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh


| Сообщение посчитали полезным: valot

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

Создано: 01 февраля 2011 09:49 · Поправил: valot
· Личное сообщение · #8

Натолкнулся на то, что трассировка "ломается", если встречает команду, которую не знает сама Olly. Например, вторая OllyDbg видит эти команды
660FEFC0 PXOR XMM0,XMM0
660FD606 MOVQ QWORD PTR DS:[ESI],XMM0
660FD646 08 MOVQ QWORD PTR DS:[ESI+8],XMM0
56 PUSH ESI
660FD646 10 MOVQ QWORD PTR DS:[ESI+10],XMM0


а первая не знает некоторых, поэтому предлагает свою интерпретацию и падает при пошаговой трассировке
66:0FEFC0 PXOR MM0,MM0
66:0FD6 ??? ; Unknown command
06 PUSH ES
66:0FD6 ??? ; Unknown command
46 INC ESI
0856 66 OR BYTE PTR DS:[ESI+66],DL
0FD6 ??? ; Unknown command
46 INC ESI
10FF ADC BH,BH



Есть ли какая-нибудь возможность научить первую версию Olly понимать правильно новые команды или их размер, чтобы трассировка не падала?


Ещё столкнулся, что иногда при простом выполнении F9 результат работы отличается от пошагового выполнения под трассировкой. С чем это может быть связано: плохая карма или защита?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 01 февраля 2011 09:57
· Личное сообщение · #9

Есть мнение, что с другим дизасмом через хитрые инструкции она будет нормально шагать. В частности, можно попробовать плагин FullDisasm.
Что касается отличий в работе-да всё, что угодно.

| Сообщение посчитали полезным: valot

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

Создано: 01 февраля 2011 12:23 · Поправил: valot
· Личное сообщение · #10

Поставил FullDisasm - заработал. Только странно, что OllyDbg раньше не срабатывала, хотя и ставил патч от int http://exelab.ru/f/action=vthread&forum=13&topic=15982&page=0#27


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


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