Сейчас на форуме: asfa, Rio (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Построение графа
Посл.ответ Сообщение

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

Создано: 15 октября 2013 18:56
· Личное сообщение · #1

Установил плагин OllyFlow в OllyDbg v1.10. Не пойму, можно ли в нём задать
начало построения графа из произвольного места кода?
Подскажите, пожалуйста, кто знает!




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

Создано: 16 октября 2013 11:31
· Личное сообщение · #2

Нет. Эта версия не умеет. Только графы кода функции целиком, ссылки к и от функции(xrefs to, from), графы колстеков и модулей(не нашёл в чём отличия от xrefs from). Недостаток - код для желаемого графа должен быть проанализирован, чего часто не добиться в существующих версиях olly. Поэтому альтернативы ida пока нет

-----
IZ.RU


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

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

Создано: 16 октября 2013 18:54
· Личное сообщение · #3

DenCoder, спасибо! XRefs, Flowchart - совсем не работают, когда нахожусь в секции другой, чем с OEP.
Предлагает выполнить анализ кода. А зачем? когда видны вызовы типа USER32.GetDlgItem! И лишь
опция call graph строит, да и то для секции с OEP, анализ которой мне совсем не нужен!
А было бы здорово, если бы работало как в Иде!




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

Создано: 16 октября 2013 21:19
· Личное сообщение · #4

ksol это не так часто необходимо, а когда надо, не сложно и иду запустить

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 188.1 (ветеран), 419thx
Активность: 0.140
Статус: Участник

Создано: 17 октября 2013 09:19 · Поправил: crypto
· Личное сообщение · #5

ksol
Для программ, написанных на Дельфи, IDR создает исходный код без построения графов, в нем используется другая технология. В принципе, эту технологию можно перенести на программы, написанные, например, на С или С++.



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

Создано: 17 октября 2013 19:07
· Личное сообщение · #6

Isaev
Привычки к Иде нет. Хотя вот запустил. И её контекстная опция "Create function" ,похоже, решает
задачу - граф строится и для другой секции. Дело у меня усложняется тем, что при рестарте
адреса ряда секций с кодом меняются - значение мл. слова сохраняется, а у старшего - изменяется.
Ну, да ладно.
crypto
Часть программы написана на С/C++ - как видно по специфическим функциям. А код защиты,
а это очень много, скорее всего - на ассемблере.



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

Создано: 24 октября 2013 19:26
· Личное сообщение · #7

Запустил, но оказывается всё не совсем как надо! Самая важная секция в Иде автоматом при старте
не анализируется. У меня в ней на инструкции "100053В4 CALL 1000652B" в OllyDbg стоит ВР .
Установил и в Иде ВР на 100053В4, запустил программу, а она проскочила её. В Иде в окрестности
этой точки - цифры. Сделал анализ с этого адреса - получил ерунду. Попытался сделать анализ
для всей секции через меню Edit - не получилось. Она анализирует только начальный кусок.
Пытался выделить всю секцию, и сделать анализ - не получилось.
При старте программы этой секции. да и многих других, нет, появляется после запуска Debagger'a.
Секция является магистралью. Из неё идет большое число межсекционных переходов. А адреса
начала и конца этой секции в OlyDbg и Иде совпадают. В Иде выравнивание - byte, base: 0000, а что
в OllyDbg мне не известно.
Подскажите, пожалуйста, как заставить Иду делать самой анализ секций с кодом, если, конечно,
это возможно. Или здесь надо делать что другое?




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

Создано: 25 октября 2013 02:18 · Поправил: Dr0p
· Личное сообщение · #8

ksol

Мы не понимаем что ты понимаешь под графом". И каким боком отладчик к графам относится совершенно не понятно

Тот холст что ты в иде видишь не граф, это графическое отображение блоков кода.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 октября 2013 02:33
· Личное сообщение · #9

до до истенные одепты, графами называют колстек вызовов?

ksol мне вот интересно зачем вам это надо? неужели десяток функций запомнить не можете




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

Создано: 25 октября 2013 16:16
· Личное сообщение · #10

reversecode пишет:
ksol мне вот интересно зачем вам это надо? неужели десяток функций запомнить не можете

Да вообще-то с графом нагляднее. Иногда помогает предугадать логику и найти нужную функцию

-----
IZ.RU





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 октября 2013 17:05
· Личное сообщение · #11

ниразу за всю жизнь не пригодилось

1) после беглого анализа каждой функции, даем ей какоето осмысленное название
2) цикл (1) по всем функциям которые ее вызывают и которые находятся рядом с ней
3) профит, который дает точное понимание происходящего




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

Создано: 25 октября 2013 17:23
· Личное сообщение · #12

reversecode
Да, асм у тебя крови Не все и не всегда так могут, а разгрузить мозг от рутинной работы - одна из причин, по которым и была сотворена ЭВМ.

-----
IZ.RU




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

Создано: 25 октября 2013 19:03
· Личное сообщение · #13

Я попытаюсь более подробнее сказать о программе. Программа сильно защищена. Вначале она
распаковывается. Потом от ОЕР до главного окна отладчику надо преодолеть типичные зацепки
вида IsDebuggerPresent, NtGlobalFlag и т.п., с чем успешно справляются также стандартные для
этого плагины OllyDbg. Затем открывается главное окно, потом диалоговое окно для ввода имени
и кода. Я перехватил момент, где данные уже считались из их полей. Это точка 100053В4. Далее
на 100067СА выводится сообщение, что код неверный. Моя задача подойти как можно ближе ко
2-й точке, что сделать совсем не просто.
Секция, которая включает эти точки, для кода начинается с 10001000, и является магистралью
на которую навешено большое число других частных секций, на некоторых видны таймеры. В
целом это дерево с навешанными ветвями является антиотладочным построением, которое
простой трассировой не удаётся преодолеть - имеются ловушки из которых выход только через
рестарт.
Вот я и попытался обратиться к графам. Построить хотел граф входов/выходов на участке
100053В4 - 100067СА.
Кажется, при первом запуске Иды я получал осмысленный код для этой секции, и даже какой-то
граф. А теперь и код не получаю! Удалял её файл *.idb, и заставил её по новой создать -
всё по-прежнему! Не дизассемблирует - пишет какие-то цифры.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 25 октября 2013 19:09 · Поправил: reversecode
· Личное сообщение · #14

программа настоль суровая что даже после запуска и дампа ее, в ней весь код пошифрован?
1) там вм? тогда смысла в вашем построении графа нет, нужно ее разбирать побайтно ))
2) там не вм? дампим уже запущенную программу, и грузим ее в ида для изучения
3) ваш вариант



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

Создано: 27 октября 2013 15:48
· Личное сообщение · #15

Да, в Иду я запускаю дамп! Сделать его было не трудно, т.к. таблица IAT является хорошей.
Посмотрел внимательно как Ида дизассемблирует эту секцию 10001000 и сравнил с OllyDbg
на чём она спотыкается. Вот стою я на самом начале, даю Edit->Code - создаётся примерно 5
правильных инструкций. Встаю на следующую строчку после правильной, Edit->Code - ещё
создается 3 - 5 строчек. В принципе так можно дизассемблировать всю секцию. Но её длина
равна 10000h.
А останавливается Ида на jmp к частной секции, адрес которой при рестарте сменится.
Секция 10001000 является деревом с ветвями из других изменяемых секций.
Проблема, видимо, в том, что Ида видит изменение адресной части инструкции, и поэтому останавливается на ней. OllyDbg на такие мелочи не обращает внимания!
Пытался убрать файл базы - так она вместо одного создаёт целую кучу! Она где-то ещё
внутри хранит, видимо, т.к. после переименования файла, на нажатие кл. g - она предлагает
мне адреса этой самой секции.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 октября 2013 16:04
· Личное сообщение · #16

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

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

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

Создано: 27 октября 2013 16:45
· Личное сообщение · #17

Нет, не могу. Спасибо за предложение!



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

Создано: 31 октября 2013 18:59
· Личное сообщение · #18

Всё - разобрался! Получил в Иде дизассемблированный код для всей этой секции,
и пробрался к нужной конечной точке, вблизи её там построил потоковый граф,
теперь опять стоит анализ.


 eXeL@B —› Вопросы новичков —› Построение графа
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати