Сейчас на форуме: Rio, vsv1, site-pro (+8 невидимых)

 eXeL@B —› Софт, инструменты —› Трассировщик на основе OllyDbgScript
Посл.ответ Сообщение

Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 12 октября 2012 17:43 · Поправил: Medsft
· Личное сообщение · #1

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

Трайсер на основе OllyDbgScript
Версия 1.0 (на основе OllyDbgScript 1.82)
Использован новый движок 1.82 что позволило отказаться от парсинга комманд

Возможности:
- логирование в файл "Trace.txt" трассы: JP/Call/Ret-переходов
- оптимизация трассы за счет процедуры обработки циклов (с возможностью отключения) *
- 2 способа окончания работы скрипта (без использования breakpoint и с использованием hardware breakpoint) **
- определение symbolic name of specified address (ex the API it points to)
- возможность указания области данных исключенных из обработки ***

*** - глобальная переменная OGRADRESS отвечает за отсечку из трассировки адресов > OGRADRESS. С ее помощью в трассу не попадают JP/Call/Ret API функций и др. По умолчанию OGRADRESS=10000000.
*- при включении функции "обработка коротких циклов" трасса будет выглядеть следующим образом
ХХХХХХХХ[адрес нижней точки цикла]: Возможное начало цикла.Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret)
ХХХХХХХХ:Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret) <- инструкции внутри цикла (первый проход)
ХХХХХХХХ:Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret) <- инструкции внутри цикла (первый проход)
ХХХХХХХХ:Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret) <- инструкции внутри цикла (первый проход)
ХХХХХХХХ:Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret) <- инструкции внутри цикла (первый проход)
ХХХХХХХХ:....
ХХХХХХХХ:Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret) <- инструкции внутри цикла (первый проход)
ХХХХХХХХ:Цикл с XXXXXXXX.Инструкция (XXXXXXXXXXXXXXXXXX Jp/Call/Ret) <- в случае повторения данного цикла более одного раза
Количество воспроизведений = XXX.Выход по адресу XXXXXXXX <- комманды внутри цикла не будут отображены в трассе а отмечено будет количество повторений данного цикла

**- 1 способ (без использования breakpoint) при условии eip > XXXXXXXX остановка работы скрипта.
Здесь есть особенность если XXXXXXXX > ograddr скрипт будет периодически остановливаться. Решение использовать другой способ остановки работы скрипта или не использовать ни один из них.
В этом случае придется держать руку на пульсе )))) (нажатие SPC- вызывает остановку работы скрипта
2 способ. Стандартный на XXXXXXXX устанавливается hardware breakpoint.

В комплекте патч для OllyDbg(версия Shadow) на других модах работу скрипта не проверял. Патч точно не подойдет. Что он делает клянусь не помню ))) 6 лет прошло все-таки. А может он совсем и не нужен на новом движке ))))
Поддержки особо не планируется.Исследование нужного приложения закончено.Но время свободное есть если особо крупные баги найдутся поправлю..

Новая версия
Version Tracer 1.03 (based on OllyDbgScript 1.82)
New features
+ new GUI-interface generator script !!! (OllyDbg PlugIn)
+ optimization LOOP command
+ exec custom code:
[if eip(instruction)== RET(IRET)]
{
}
AND
[if string on eip == string []]
{
}
AND
[if eip => address.Metod with out using breakpoint]
{
}
- russian language

bb8b_18.04.2013_EXELAB.rU.tgz - scriptgenerator.dll

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

Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 12 октября 2012 18:20
· Личное сообщение · #2

Трайсер на основе OllyDbgScript
Версия 1.1 (на основе OllyDbgScript 1.82)
Использован новый движок 1.82 что позволило отказаться от парсинга команд

+ добавлена возможность слежения за регистрами или за одним из них при выполнении любой Jp/Call/Ret

e5e7_12.10.2012_EXELAB.rU.tgz - tracer_1_1.rar

| Сообщение посчитали полезным: VodoleY, CyberGod, nick8606, -Sanchez-, vnekrilov, plutos, Dred, Utwig, stas_02, mak

Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 05 февраля 2013 18:51
· Личное сообщение · #3

Версия 1.2 (на основе OllyDbgScript 1.82)
+ добавлена возможность остановки скрипта по нахождению искомой строки на eip
Строка должна вводится в формате предложенном в мануале OllyDbgScript. см. команду FIND
+ добавлена возможность на точках останова выполнять свой кастомный код
В конце скрипта процедура mycode, туда необходимо внести свой код опять же написанный на движке OllyDbgScript

Мысль навеяна многоликим недругом Archera ))))

dd21_05.02.2013_EXELAB.rU.tgz - tracer_1_2.zip

| Сообщение посчитали полезным: -Sanchez-, vnekrilov, elch, hors, plutos, ksol, stas_02

Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 05 февраля 2013 21:52 · Поправил: Medsft
· Личное сообщение · #4

Забыл напомнить: не забывайте push reg и pop reg как обертку Вашего кода. (см.мануал к ollydbgscript). Eip желательно не трогать поскольку он записывается в локальные переменные и ваш код может повлиять на дальнейшую работу основного тела скрипта.
Во всем есть конечно свои исключения)))
Реализации остановки работы скрипта при наличии Вашей кастомной процедуры не предусмотрено
поскольку данный метод может быть использован в цикле т.е. несколько раз так что если необходимо остановить тело реализуйте этот функционал в своей процедуре.

P.S. Поправлена бага при выборе метода остановки в некоторых случаях был невозможено включение слежения за регистрами
P.S.S. Не забываем решетки в искомой строке например #BB00??30#




Ранг: 136.0 (ветеран), 360thx
Активность: 0.270.14
Статус: Участник
Qt Developer

Создано: 06 февраля 2013 22:05
· Личное сообщение · #5

Отличная утилита. А скажите, отсутствие дальнейшей поддержки других версий OllyDbg связано только с тем, что Вы не помните что делает патч или просто нет времени/желания?

-----
http://ntinfo.biz




Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 07 февраля 2013 09:53
· Личное сообщение · #6

fc /b ollydbg.exe shadow.exe поможет вспомнить что делает патч



Ранг: 315.1 (мудрец), 631thx
Активность: 0.30.33
Статус: Модератор
CrackLab

Создано: 07 февраля 2013 10:17
· Личное сообщение · #7

hors пишет:
что делает патч

там написано в патче:
Patch correct mistake ollydbg to set memory breakpoint only to access page (now olly break on eip if you set this breakpoint)



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 07 февраля 2013 15:19 · Поправил: Medsft
· Личное сообщение · #8

Ребята ))) просьба проверьте на других версиях оли скрипт, и отпишите здесь пожалуйста.
Может и вообще этот патч не нужен ))))
А также весьма интересен разговор об недостающих функциях скрипта. Время свободное появилось )))

З.Ы. Реально забыл даже по какой причине пришлось его делать этот патч. Вполне вероятно что данный пробел
сейчас в других версиях олки исправлен



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 07 февраля 2013 15:25
· Личное сообщение · #9

drone пишет:
fc /b ollydbg.exe shadow.exe поможет вспомнить что делает патч

вернее будет: fc /b shadow.exe shadow.exe(модифицированный)



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 17 февраля 2013 14:28
· Личное сообщение · #10

Уважаемый Medsft
Может быть ваш софт поможет ответить на мой вопрос, который я уже
задавал в теме "Почти условная трассировка" в разделе для новичков,
но ответа там не было.
Я смотрю программу, код которой в противоотладочных целях, разбит
на большое число секций. Мне хотелось бы выполнить трассировку одной секции,
когда трассировщик при выходе EIP за пределы секции не остнавливал бы
трассировку, а только прекращал запись, и снова возобновлял запись при
входе EIP в эту секцию.
Команды ODbgScript, кажется, не могут это обеспечить. Они продолжают
запись и для другой секции при входе в неё командой sti. По логике, так не
должно бы быть. После срабатывания условия останова в команде tocnd
дальнейший прогон программы должен идти без записи. Однако так не происходит:
при входе в другую секцию (по команде sti) продолжается запись в окно трассировщика.
Да, кстати, программа имеет также частные секции с адресами выше 10000000.
Может ли ваш софт помочь в этом?



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 20 февраля 2013 17:45
· Личное сообщение · #11

ksol пишет:
Да, кстати, программа имеет также частные секции с адресами выше 10000000.
- как вариант просто увеличить данное значение. + см. Р.S.

ksol пишет:
Мне хотелось бы выполнить трассировку одной секции,
когда трассировщик при выходе EIP за пределы секции не остнавливал бы
трассировку, а только прекращал запись, и снова возобновлял запись при
входе EIP в эту секцию.
- на данном форуме есть талантливые люди которых можно послушать в части дельных советов. Так вот они в один голос тебе много раз могут повторить что трассировка не есть правильный метод для анализа работы программы(защиты) и с этим я согласен НО при анализе коротких участков кода (морфанутых или флоунутых что почти одно и тоже) ну может быть еще процедур проверки разного рода серийников в самом так сказать ядре процесса проверки данный метод может быть применен. Скрипт и затачивался на то чтобы анализировать КОРОТКИЕ участки кода В вашем же случае когда трасса прохода по программе хоть и будет несколько меньше за счет вашей задумки (обход некоторых участков кода) я думаю будет не читабельна.
Только по этой причине мне не хочется дорабатывать скрипт

P.S. Скрипт выложен по лицензии "как есть" и вы можете сами доработать его.
Алго: Вам нужно допилить переменную OGRADRESS которая отвечает за процедуру отсечки ненужного для трассы лога
так чтобы при eip > OGRADRESS вы выставили на нужную Вам секцию memorybreak на акцесс и по срабатывании бряка смело прыгайте на label: newsub: . Всего точек проверки OGRADRESS - 2 туда и вставляйте Ваш код



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 20 февраля 2013 18:18
· Личное сообщение · #12

баа а че это я туплю яж уже реализовал это в версии 1.2. Там есть возможность самому написать процедуру обхода в вашем случае 2 строчки : поставить меморибряк на вашу нужную секцию далее run а потом не забыть убрать бряк и все.



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 20 февраля 2013 18:44
· Личное сообщение · #13

Насчет OGRADRESS всё ясно. Но главное осталось: повторюсь, в программе есть одна (может быть)
секция, которую я никак не могу пройти. В ней чуть ли не через инструкцию выходы в разные
секции, и от туда почти сразу возврат в другое какое-то место исходной секции, и опять всё снова.
Наверное надо использовать графы Иды, но я это никогда не делал. Вот и всё.
Спасибо за ответ!



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 20 февраля 2013 19:00
· Личное сообщение · #14

myprog:
bprm начало секции, ее длина
run
ret

Способ остановки — по адресу (конец секции)
Run скрипта — при первом вхождении в секцию
Пробуй так



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 20 февраля 2013 19:03
· Личное сообщение · #15

Пока я набивал текст появилось ваше сообщение.
Поставлю я этот BPM и он что отменит по команде run вывод для другой секции.
То есть по сути в скрипте sti надо заменить на run? Проверю. Если это так, то и BPM скорее всего
не нужен.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 20 февраля 2013 19:11
· Личное сообщение · #16

вставляй код в место для кастомного кода . не надо ничего менять в коде скрипта



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 20 февраля 2013 19:17 · Поправил: ksol
· Личное сообщение · #17

Run скрипта — при первом вхождении в секцию
Мне нужна трассировка этой секции с раскрытием комментария. И только этой секции.



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 20 февраля 2013 19:19
· Личное сообщение · #18

я имею ввиду запускай скрипт когда ты уже в нужной секции

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

Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 22 февраля 2013 14:54
· Личное сообщение · #19

To Medsft
Насколько я вас, как надо, понял, реализовал ваше предложение, код ниже.
Результат прежний - инструкция tocnd cond не хочет работать!
И заменить, вроде, её нечем!
Code:
  1. var s1
  2. var s2
  3. var size
  4. mov s1, 10001000
  5. mov size, 10000
  6. mov s2, s1
  7. add s2, size
  8. L1:
  9. bpmc //remove BPM
  10. sti
  11. cmp eip, s1
  12. jb L2 //jump, if eip < s1
  13. cmp eip, s2
  14. ja L2 //jump, if eip > s2
  15. tocnd  "eip < s1 || eip > s2" //stop tracing conditional
  16.                   //  "eip > s1 && eip < s2"    //tracing conditional  
  17. L2:
  18. bprm s1, size
  19. eob L1
  20. run
  21. ret




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 23 февраля 2013 15:05
· Личное сообщение · #20

Всё работает!!!
Другой вопрос возник: как изменить в окне трассировщика в столбце Back нумерацию с
убывающей на возрастающую?



Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 23 февраля 2013 16:42
· Личное сообщение · #21

не понял какой столбец?




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

Создано: 23 февраля 2013 18:03
· Личное сообщение · #22

Видимо, в окне лога трассы в ольке. И сомневаюсь, что там можно менять.



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 24 февраля 2013 16:14
· Личное сообщение · #23

Да, в окне отладчика. В файле там вообще нет номеров.
Хотя это всё не главное.
To Medsft
Из вашего последнего комплекта в файле readme.txt как-то не
понятно нужен патч Shadow для запуска tracer_1.2 или нет?
Пишите: скопировать tracer_1_0.osc в директорию script.
А где она? А где взять этот файл? Из раннего комплекта -
там есть tracer_1_0.txt. Расширение менять? Но скорее всего
нужно запускать просто в ODBgScript'е ваш файл tracer_1_2.txt,
сменив его расширение. Остаётся Shadow: зачем он нужен?




Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 24 февраля 2013 18:26
· Личное сообщение · #24

ksol
Реши сам нужен он тебе или нет. Если будешь использовать OllyDbg Shadow - то нужен.
tracer_1_0.osc = tracer_1_2.txt. Менять ли ему расширение - дело вкуса - не нравится поменяй ;)
Папка "script" = да хоть "С:\Windows" если ты там скрипты хранишь. Но как правило в папке где установлен дебагер.
shadows.ini = ollydbg.ini для OllyDbg Shadow

-----
Don_t hate the cracker - hate the code.




Ранг: 330.4 (мудрец), 334thx
Активность: 0.160.17
Статус: Участник
ILSpector Team

Создано: 18 апреля 2013 15:56 · Поправил: Medsft
· Личное сообщение · #25

Version Tracer 1.03 (based on OllyDbgScript 1.82)
New features
+ new GUI-interface generator script !!! (OllyDbg PlugIn)
+ optimization LOOP command
+ exec custom code:
[if eip(instruction)== RET(IRET)]
{
}
AND
[if string on eip == string []]
{
}
AND
[if eip => address.Metod with out using breakpoint]
{
}
- russian language

bb8b_18.04.2013_EXELAB.rU.tgz - scriptgenerator.dll



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

Создано: 27 июля 2013 19:38
· Личное сообщение · #26

Когда-то тоже забавлялся скриптами.
Вот вам десяток трассировщиков.
Делайте с ними все, что хотите.


ea3d_27.07.2013_EXELAB.rU.tgz - ANTRACEP.rar


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


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