eXeL@B —› Софт, инструменты —› Трассировщик на основе OllyDbgScript |
Посл.ответ | Сообщение |
|
Создано: 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 |
|
Создано: 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 |
|
Создано: 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 |
|
Создано: 05 февраля 2013 21:52 · Поправил: Medsft · Личное сообщение · #4 Забыл напомнить: не забывайте push reg и pop reg как обертку Вашего кода. (см.мануал к ollydbgscript). Eip желательно не трогать поскольку он записывается в локальные переменные и ваш код может повлиять на дальнейшую работу основного тела скрипта. Во всем есть конечно свои исключения))) Реализации остановки работы скрипта при наличии Вашей кастомной процедуры не предусмотрено поскольку данный метод может быть использован в цикле т.е. несколько раз так что если необходимо остановить тело реализуйте этот функционал в своей процедуре. P.S. Поправлена бага при выборе метода остановки в некоторых случаях был невозможено включение слежения за регистрами P.S.S. Не забываем решетки в искомой строке например #BB00??30# |
|
Создано: 06 февраля 2013 22:05 · Личное сообщение · #5 |
|
Создано: 07 февраля 2013 09:53 · Личное сообщение · #6 |
|
Создано: 07 февраля 2013 10:17 · Личное сообщение · #7 |
|
Создано: 07 февраля 2013 15:19 · Поправил: Medsft · Личное сообщение · #8 Ребята ))) просьба проверьте на других версиях оли скрипт, и отпишите здесь пожалуйста. Может и вообще этот патч не нужен )))) А также весьма интересен разговор об недостающих функциях скрипта. Время свободное появилось ))) З.Ы. Реально забыл даже по какой причине пришлось его делать этот патч. Вполне вероятно что данный пробел сейчас в других версиях олки исправлен |
|
Создано: 07 февраля 2013 15:25 · Личное сообщение · #9 |
|
Создано: 17 февраля 2013 14:28 · Личное сообщение · #10 Уважаемый Medsft Может быть ваш софт поможет ответить на мой вопрос, который я уже задавал в теме "Почти условная трассировка" в разделе для новичков, но ответа там не было. Я смотрю программу, код которой в противоотладочных целях, разбит на большое число секций. Мне хотелось бы выполнить трассировку одной секции, когда трассировщик при выходе EIP за пределы секции не остнавливал бы трассировку, а только прекращал запись, и снова возобновлял запись при входе EIP в эту секцию. Команды ODbgScript, кажется, не могут это обеспечить. Они продолжают запись и для другой секции при входе в неё командой sti. По логике, так не должно бы быть. После срабатывания условия останова в команде tocnd дальнейший прогон программы должен идти без записи. Однако так не происходит: при входе в другую секцию (по команде sti) продолжается запись в окно трассировщика. Да, кстати, программа имеет также частные секции с адресами выше 10000000. Может ли ваш софт помочь в этом? |
|
Создано: 20 февраля 2013 17:45 · Личное сообщение · #11 ksol пишет: Да, кстати, программа имеет также частные секции с адресами выше 10000000. - как вариант просто увеличить данное значение. + см. Р.S. ksol пишет: Мне хотелось бы выполнить трассировку одной секции, когда трассировщик при выходе EIP за пределы секции не остнавливал бы трассировку, а только прекращал запись, и снова возобновлял запись при входе EIP в эту секцию. - на данном форуме есть талантливые люди которых можно послушать в части дельных советов. Так вот они в один голос тебе много раз могут повторить что трассировка не есть правильный метод для анализа работы программы(защиты) и с этим я согласен НО при анализе коротких участков кода (морфанутых или флоунутых что почти одно и тоже) ну может быть еще процедур проверки разного рода серийников в самом так сказать ядре процесса проверки данный метод может быть применен. Скрипт и затачивался на то чтобы анализировать КОРОТКИЕ участки кода В вашем же случае когда трасса прохода по программе хоть и будет несколько меньше за счет вашей задумки (обход некоторых участков кода) я думаю будет не читабельна. Только по этой причине мне не хочется дорабатывать скрипт P.S. Скрипт выложен по лицензии "как есть" и вы можете сами доработать его. Алго: Вам нужно допилить переменную OGRADRESS которая отвечает за процедуру отсечки ненужного для трассы лога так чтобы при eip > OGRADRESS вы выставили на нужную Вам секцию memorybreak на акцесс и по срабатывании бряка смело прыгайте на label: newsub: . Всего точек проверки OGRADRESS - 2 туда и вставляйте Ваш код |
|
Создано: 20 февраля 2013 18:18 · Личное сообщение · #12 |
|
Создано: 20 февраля 2013 18:44 · Личное сообщение · #13 Насчет OGRADRESS всё ясно. Но главное осталось: повторюсь, в программе есть одна (может быть) секция, которую я никак не могу пройти. В ней чуть ли не через инструкцию выходы в разные секции, и от туда почти сразу возврат в другое какое-то место исходной секции, и опять всё снова. Наверное надо использовать графы Иды, но я это никогда не делал. Вот и всё. Спасибо за ответ! |
|
Создано: 20 февраля 2013 19:00 · Личное сообщение · #14 |
|
Создано: 20 февраля 2013 19:03 · Личное сообщение · #15 |
|
Создано: 20 февраля 2013 19:11 · Личное сообщение · #16 |
|
Создано: 20 февраля 2013 19:17 · Поправил: ksol · Личное сообщение · #17 |
|
Создано: 20 февраля 2013 19:19 · Личное сообщение · #18 |
|
Создано: 22 февраля 2013 14:54 · Личное сообщение · #19 To Medsft Насколько я вас, как надо, понял, реализовал ваше предложение, код ниже. Результат прежний - инструкция tocnd cond не хочет работать! И заменить, вроде, её нечем! Code:
|
|
Создано: 23 февраля 2013 15:05 · Личное сообщение · #20 |
|
Создано: 23 февраля 2013 16:42 · Личное сообщение · #21 |
|
Создано: 23 февраля 2013 18:03 · Личное сообщение · #22 |
|
Создано: 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: зачем он нужен? |
|
Создано: 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. |
|
Создано: 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 |
|
Создано: 27 июля 2013 19:38 · Личное сообщение · #26 Когда-то тоже забавлялся скриптами. Вот вам десяток трассировщиков. Делайте с ними все, что хотите. ea3d_27.07.2013_EXELAB.rU.tgz - ANTRACEP.rar |
eXeL@B —› Софт, инструменты —› Трассировщик на основе OllyDbgScript |