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

 eXeL@B —› Вопросы новичков —› Callback для каждой инструкции в OllyDbg PDK 1.10
<< . 1 . 2 .
Посл.ответ Сообщение

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

Создано: 21 октября 2014 15:51
· Личное сообщение · #1

Приветствую.

Есть ли в OllyDbg PDK 1.10 callback, который будет вызываться перед каждой следующей инструкцией, передавая ему в качестве аргумента эту самую инструкцию?

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

Заранее благодарю за возможные ответы.



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

Создано: 23 октября 2014 16:39 · Поправил: dosprog
· Личное сообщение · #2

b0r3d0m пишет:
Понимания процесса чего? Это раздел для новичков.


Просто запустите любую программу в отладчике в режиме "Animate->Trace In"
И понаблюдайте за её работой.

После этого начинайте думать, как фильтровать инструкции.
Если не пропадёт охота этим заниматься.

Прислушайтесь к тому, что сказал Vodoley. Он дело говорит.



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

Создано: 23 октября 2014 16:46 · Поправил: b0r3d0m
· Личное сообщение · #3

dosprog пишет:
Просто запустите любую программу в отладчике в режиме "Animate->Trace In"
И понаблюдайте за её работой.


Запускал.

dosprog пишет:
После этого начинайте думать, как фильтровать инструкции.


Так ведь придумал, на основе других ответов в данном треде. Чем такой способ плох? Без VMProtect'а, повторюсь снова.

dosprog пишет:
Прислушайтесь к тому, что сказал Vodoley. Он дело говорит.


Я не спорю, что в случае VMProtect'а данный плагин не будет иметь никакого особого смысла, это я понял.

Теперь забудьте на секунду о VMPotect'е -- мне интересно, почему этот код не работает так, как ожидается.



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

Создано: 23 октября 2014 16:50 · Поправил: dosprog
· Личное сообщение · #4

b0r3d0m пишет:
Так ведь придумал,


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





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

Создано: 23 октября 2014 18:23 · Поправил: VodoleY
· Личное сообщение · #5

dosprog пишет:
)) Это круто, я признал.
Но в таком случае начинает работать принцип "если информация исчерпывающа - то она бесполезна ввиду её нереального объёма".

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

b0r3d0m пишет:
VodoleY пишет:
потому что нет понимания процесса. Арчи. наверно пора.

Понимания процесса чего? Это раздел для новичков.

ты когданибудь морфы разбирал? когда 2 равноценные ветки кода исполняются рандомно? я уже молчу, что у ВМпрота очень жестокая антиотладка.. любой твой бряк, може запустить антиотладочный трюк вмпрота и ты буш искать причину неработасти плага.. до скончания веков.. разбери десяток примитивов вмпрота руками, отчисти от мусора, может прийдет понимание.. почему твой плаг будет бесполезен. про ПОЧЕМУ НЕ РАБОТАЕТ.. первое предположение антиотладки и CRC проверка кода вмпрота


ТЕПЕРЬ БЕЗ ВМ ПРОТА. я не зря тебе задавал вопрос о том.. на чем работает олька.. ты в курсе? что по факту.. нельзя остановиться на какойто комманде? дебаг апи это не позволяет.. это типа кондишинал брейк. т.е по факту.. олька делает тот же самый, анимейт трейс и на каждом шаге сравнивает условия. Т.е. плаг то написать можно. ток нафига? я тебе уже рассказал как это проще сделать. даже расписал вариации реализации

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....


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

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

Создано: 23 октября 2014 18:43
· Личное сообщение · #6

VodoleY пишет:
первое предположение антиотладки и CRC проверка кода вмпрота


Трассировка через меню OllyDbg работает ведь почему-то, только из плагина нет. И почему Вы опять про VMProtect говорите? Приведённый мной код не работает даже в случае незапакованных приложений (например, notepad.exe).



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

Создано: 23 октября 2014 18:47 · Поправил: VodoleY
· Личное сообщение · #7

b0r3d0m пишет:
И почему Вы опять про VMProtect говорите?

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

З.Ы, и кода твоего никто не видел. где уверенность что ты гдето не наглючил?

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




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

Создано: 23 октября 2014 18:52
· Личное сообщение · #8

VodoleY пишет:
и кода твоего никто не видел


Я его приводил ранее в этой же теме -- http://pastie.org/9669901

VodoleY пишет:
где уверенность что ты гдето не наглючил?


Никакой уверенности в этом я не выражал. Я как раз-таки уверен в обратном, поэтому и спросил.



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

Создано: 23 октября 2014 19:20
· Личное сообщение · #9

я не хочу никого обидеть.. но рвется анекдот. подходит начинающий чайник к реверсеру, показывает ему кусок кода и грит "где у меня ошибка?" тот смотрел.. смотрел.. и грит.."В ДНК".
это я к чему. переименуйте тему в "напишите за меня плаг, вот вам ТЗ"

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....




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

Создано: 23 октября 2014 19:26
· Личное сообщение · #10

VodoleY пишет:
я не хочу никого обидеть..


Нет, хотите.

Я узнал общую концепцию, написал код, расписал по шагам то, что в нём происходит, и спросил лишь, что не так с вызовом функции Startruntrace, потому что именно она не работает, как я того ожидаю. Переписывать и, тем более, писать код с нуля я никого не прошу и, уж тем более, не заставляю.

Шутить каждый может.




Ранг: 127.3 (ветеран), 44thx
Активность: 0.090
Статус: Участник

Создано: 23 октября 2014 23:45
· Личное сообщение · #11

b0r3d0m
Есть же исходник COMMAND LINE PLUGIN FOR OLLYDBG, который умеет запускать трассировку.

-----
zzz


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


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

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

Так, давайте поп порядку. Если вы хотите трассировать код и снимать трассы (опять влияние Криса и статей про деобфускацию), то должны уяснить одну простою вещь. И заключается она в том, что эта хрень с трассами на практике ни хрена не работает. Во-первых, вмпрот будет проверять взведенный TF. Во-вторых, можно создать несколько потоков и синхрозировать их, тогда ваша трассировка никогда не закончится, так и будет висеть поток, ожидая освобождения объекта, в то время как другой поток не будет получать управления, т.к. int1 и int3 имеют более высокий IRQL, и переключение контекста попросту не будет выполняться. Но даже если и будет, то что вы получите на выходе? Тьму адресов с переходами? И что дальше? И что вы вцепились в этот плагин? Хотите плагин - смотрите сорцы ODBGScript - он опенсорсный, и там всё это есть.

-----
Stuck to the plan, always think that we would stand up, never ran.


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

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

Создано: 24 октября 2014 08:05 · Поправил: VodoleY
· Личное сообщение · #13

ARCHANGEL забей. я пытался обьяснить человеку, теории дал чуть больше чем докуя. человек не может поставить правильно ТЗ изза скудности понимания процесса, а теперь просит чтоб выправили его код плага.. ибо его код.. не арбайтен
PS и тут арх вы не совсем правы, можно использовать трассы, но надо понимать как они работают и что хош получить и что тебе противостоит. ясный пень что если прыгать голой жопой на шашку то получишь говно
PSS лично я б тоже хотел др. вариант трассопостроителя, не такой как в анимейте. чтоб можно было выидеть содержимое всех регистров команды + в случае [] содержимое ячейки памяти. может есть уже такое добро ввиде плага? ибо я свой корявый трассировщик для этого делал, но прятаться от антидебага меня ну очень ломает

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 24 октября 2014 09:31
· Личное сообщение · #14

VodoleY
1 олька в trace into логает все регистры, но с памятью у неё траблы, её показывает только конечную. А 2 олька, насколько помню, память вполне себе нормально логает в трассе.



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

Создано: 24 октября 2014 12:08
· Личное сообщение · #15

Спасибо большое за ответы!

zeppe1in пишет:
Есть же исходник COMMAND LINE PLUGIN FOR OLLYDBG, который умеет запускать трассировку.


Благодарю, гляну, что там.

ARCHANGEL пишет:
Во-первых, вмпрот будет проверять взведенный TF


Проверять и делать что? Завершать выполнение отлаживаемого приложения? Если так, то при трассировке исследуемой мной программы такого не наблюдается. Нет, я Вам верю, не подумайте, просто сказал. Может, только на отдельные участки кода добавлена проверка на установленный TF, не знаю.

ARCHANGEL пишет:
Но даже если и будет, то что вы получите на выходе? Тьму адресов с переходами?


То, что искать все условные переходы в приложении, защищённом VMProtect'ом, бессмысленно -- это я уже понял из данной темы, за что всем ещё раз большое спасибо. Но у меня ситуация несколько другая -- я знаю, после вызова какой именно процедуры появляется запись в лог о том, что приложение работать на данном компьютере не будет. Да, эта процедура довольно большая и содержит много вызовов других процедур, но всё же. В таком случае кол-во переходов, может быть, не будет столь уж невероятным? Или VMProtect на каждые 20 строк дизассемблированного кода добавляет по одному своему условному переходу для запутывания анализа приложения? Если так, то, пожалуйста, соглашусь с Вами и в этом случае.

Кстати, а что насчёт вот такого способа?

Поставить хардварный бряк на начало строки, сообщающей о невозможности запустить программу на данном компьютере, добежать до той самой процедуры, после вызова которой в логе появляется эта строчка, и следить за всеми вызовами других процедур в процессе трассировки, получив в итоге самостоятельно собранный Call Stack (может быть, на основе этих данных я смогу хотя бы приблизительно понять, как именно действовало приложение перед принятием решения о невозможности запуска)? Встроенный в OllyDbg Call Stack у меня в данном случае не работает, потому что, как мне уже подсказали в другой теме, VMProtect "запутывает" его специально.

Не прокатит? Да, всё сильно зависит от конкретного исследуемого приложения, я понимаю, но что по поводу общей концепции? На мой взгляд, CALL'ов должно быть гораздо меньше, чем условных переходов.




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

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

b0r3d0m пишет:
Встроенный в OllyDbg Call Stack у меня в данном случае не работает, потому что, как мне уже подсказали в другой теме, VMProtect "запутывает" его специально.

Плюньте вы на этот вмпрот - не для вас это... И все ваши подходы к нему работать не будут. А в окне стека из любой функи, защищенной вмпротом, найти выход в открытый код легко - только для этого нужно понимать как устроен вмпрот.

-----
Everything is relative...


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

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

Создано: 24 октября 2014 12:33
· Личное сообщение · #17

Vamit пишет:
Плюньте вы на этот вмпрот - не для вас это...


Я бы с удовольствием, но решить задачу как-то надо.

Vamit пишет:
А в окне стека из любой функи, защищенной вмпротом, найти выход в открытый код легко - только для этого нужно понимать как устроен вмпрот.


Хорошо, с чего начать посоветуете? Искать статьи по ручному распаковыванию VMProtect'а?



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

Создано: 24 октября 2014 12:45
· Личное сообщение · #18

b0r3d0m пишет:
Встроенный в OllyDbg Call Stack у меня в данном случае не работает, потому что, как мне уже подсказали в другой теме, VMProtect "запутывает" его специально.

вы не любите кошек? да вы просто не умеете их готовить

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





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

Создано: 24 октября 2014 15:13
· Личное сообщение · #19

b0r3d0m пишет:
Хорошо, с чего начать посоветуете? Искать статьи по ручному распаковыванию VMProtect'а?

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

-----
Everything is relative...



<< . 1 . 2 .
 eXeL@B —› Вопросы новичков —› Callback для каждой инструкции в OllyDbg PDK 1.10
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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