Сейчас на форуме: (+9 невидимых) |
eXeL@B —› Протекторы —› Декомпилятор ВМ |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 23 . 24 . >> |
Посл.ответ | Сообщение |
|
Создано: 03 марта 2010 12:33 · Личное сообщение · #1 Вашему вниманию предлагаются наработки по декомпиляции ВМ. Проект на сегодняшний день для меня завершен, но жаль если результат "ляжет на полку", может кому-нибудь и пригодится. Предлагаю сначала ознакомиться с обзором, и если будет интерес то могу выложить и сам плагин, или здесь или в личку заинтересованным лицам, каким образом, пока ещё не решил... Но если кто-либо ожидает увидеть "автоматическое чудо", то сразу скажу - его нет. Для того чтобы получить результат нужна ручная предварительная работа: - с исследуемой программы должна быть снята упаковка - точки входа в ВМ находятся вручную - возможно неоднократное "жамкание" клавиш в OllyDbg, а возможно и модификация кода, чтобы попасть в нужное место, в зависимости от защищенной функции - необходимо вручную прицепить к программе требуемый секцию - запись результатов в файл это тоже ручная работа, но уже более приятная Не всё гладко обстоит с определением реализаций ВМ, на сегодняшний день примерно каждая третья реализация автоматом не определяется, приходится под неё модернизировать плагин, т.к. не могу сразу предусмотреть все случаи "издевательств" ВМ с кодом примитивов. Лучше дела с восстановлением "исходного" кода защищенных функций - 70% нормально восстанавливается, хотя во многом это зависит от самой структуры функции. Таким образом, если будет заинтересованность и помощь в нахождении подобных ситуаций, то проект может быть доведен до релизной стадии. ЗЫ: Речь идет об Ореановских машинах. Нигде специально не упоминал. 9c41_03.03.2010_CRACKLAB.rU.tgz - VMSweeperLst.rar ----- Everything is relative... |
|
Создано: 01 ноября 2012 21:54 · Поправил: Kuzya69 · Личное сообщение · #2 |
|
Создано: 02 ноября 2012 00:01 · Поправил: vnekrilov · Личное сообщение · #3 Kuzya69 пишет: Может лучше в личку или Аську, чтоб здесь тему не засорять? Материалов по практике применения декомпилятора VM очень мало. До многого приходится доходить самому. Поэтому такая открытая переписка может оказаться полезной для всех, кто работает с декомпилятором, и которая показывает, на какие грабли не нужно наступать. | Сообщение посчитали полезным: plutos, VodoleY, BAHEK, obfuskator |
|
Создано: 02 ноября 2012 09:41 · Личное сообщение · #4 vnekrilov Если кому-то, что-то непонятно по Свиперу и Вмпроту, то спрашивайте - отвечу. ----- Everything is relative... | Сообщение посчитали полезным: vnekrilov |
|
Создано: 02 ноября 2012 14:18 · Поправил: Vamit · Личное сообщение · #5 Статья Будет полезна всем, имеющим дело с декомпилятором и протектором. ----- Everything is relative... | Сообщение посчитали полезным: Veliant, schokk_m4ks1k, SReg, daFix, Hugo Chaves, tihiy_grom, Gideon Vi, antipod, -Sanchez-, m0bscene, obfuskator, stas_02, zeppe1in, NikolayD, sivorog, bitgame, Jupiter, BoRoV, MattRoss |
|
Создано: 02 ноября 2012 14:52 · Поправил: schokk_m4ks1k · Личное сообщение · #6 |
|
Создано: 02 ноября 2012 15:06 · Личное сообщение · #7 schokk_m4ks1k Конечно не прав, статья вышла сегодня, а к тем пунктам которые изменились в ней имеются Примечания. ----- Everything is relative... | Сообщение посчитали полезным: Refcat |
|
Создано: 02 ноября 2012 15:17 · Личное сообщение · #8 |
|
Создано: 02 ноября 2012 15:26 · Личное сообщение · #9 |
|
Создано: 02 ноября 2012 16:08 · Личное сообщение · #10 |
|
Создано: 02 ноября 2012 16:12 · Личное сообщение · #11 |
|
Создано: 03 ноября 2012 06:47 · Личное сообщение · #12 |
|
Создано: 03 ноября 2012 11:04 · Личное сообщение · #13 Kuzya69 Восстановленный Свипером асм код имеет два адреса - начальный (адрес начала декомпиляции, на котором нажали F1) и конечный (адрес конца восстановленного кода). Если последний адрес по каким либо причинам Свипер вычислить не смог и он равен нулю, то и будет выдано это сообщение. ----- Everything is relative... | Сообщение посчитали полезным: Kuzya69 |
|
Создано: 03 ноября 2012 12:22 · Личное сообщение · #14 |
|
Создано: 03 ноября 2012 12:24 · Личное сообщение · #15 |
|
Создано: 03 ноября 2012 14:21 · Личное сообщение · #16 |
|
Создано: 03 ноября 2012 18:13 · Личное сообщение · #17 |
|
Создано: 04 ноября 2012 16:44 · Поправил: Kuzya69 · Личное сообщение · #18 Все оказалось до банальности просто. Надо быть вниманетельней. Правильно выбирать точку входа и границы областей. У меня свипер даже подменный код сам внедрил в программу. И этот код заработал. Я восхищаюсь вашим творением, мастер! Остался правда вопрос, почему подменный код, размером меньше украденного? В одном месте раза в два различие. Это что, чудеса деобсфускации? |
|
Создано: 04 ноября 2012 18:09 · Личное сообщение · #19 Kuzya69 Восстановленный код всегда меньше первоначального, т.к. при виртуализации протектор может ставить маркеры, которые требуют места, ну и в Свипере имеется оптимизация кода по размеру. Раза в два, конечно, подозрительно, на особе мелких функах такое может быть, но не на крупных... ----- Everything is relative... |
|
Создано: 04 ноября 2012 18:22 · Поправил: Kuzya69 · Личное сообщение · #20 Ну да, функи мелкие, просто интересовало: "А не пропустил, ли свипер чего?" Извините, если вопрос покажется глупым. А можно декомпиллятор использовать в полуавтоматическом режиме, при помощи вызова из скрипта? Интересует, можно-ли его вызвать из скрипта? И если да, то есть-ли какие возвращаемые значения у этого плагина, чтоб их в последствии использовать в скрипте? |
|
Создано: 09 ноября 2012 11:45 · Личное сообщение · #21 |
|
Создано: 12 ноября 2012 05:40 · Личное сообщение · #22 |
|
Создано: 12 ноября 2012 12:19 · Личное сообщение · #23 |
|
Создано: 12 ноября 2012 12:48 · Личное сообщение · #24 Vamit Инструкция, измененная плагином, длинней предыдущей из-за чего следующая инструкция после CALL искажается на один байт. Хотя, по идее, можно было бы менять в последовательности CALL->JMP API сам JMP API вместо CALL. Сама ситуация меня не напрягает просто чем не идея для последующей доработки плагина? |
|
Создано: 12 ноября 2012 12:53 · Личное сообщение · #25 |
|
Создано: 12 ноября 2012 13:24 · Поправил: ClockMan · Личное сообщение · #26 neprovad пишет: Хотя, по идее, можно было бы менять в последовательности CALL->JMP API сам JMP API вместо CALL. Цитата из фильма "Иван Васильевичь меняет проффесию" Когда вы говорите Иван Васильевичь в печатление такое что вы бредите! Что FF15 5C165300 CALL DWORD PTR DS:[53165C] или FF25 5C165300 JMP DWORD PTR DS:[53165C] длина комманд одинаковая, или вы хотите может чтоб сразу было JMP user32.DispatchMessageW ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. | Сообщение посчитали полезным: Jaa |
|
Создано: 12 ноября 2012 13:31 · Личное сообщение · #27 Вообще, сдаётся мне, он имеет в виду, что не менять call, а заставить его указывать на jmp [], который указывает на импорт и который уже и менять. И тогда проблем с длиной не будет. Чем его 1 перезаписанный байт не устраивает, я хз. Возможно, тем, что иногда лишний байт после колла, а иногда ДО, и не всегда ситуация распознаётся корректно. Впрочем, с предложенным вариантом, чтобы call указывал на jmp [], тоже не всё гладко. Иногда лишний байт перед коллом-это push reg32, который надо снимать со стека. | Сообщение посчитали полезным: neprovad |
|
Создано: 12 ноября 2012 18:17 · Поправил: neprovad · Личное сообщение · #28 А когда после CALL DispatchMessage идет вполне осмысленный переход? Code:
то появление POP ES на месте JMP не совсем то чего ждешь. [quote ]Когда вы говорите Иван Васильевичь в печатление такое что вы бредите![/quote] Единственное что я хочу чтобы плагин не вносил искажений в код. Вручную я уже все исправил но все же это немного утомляет. |
|
Создано: 12 ноября 2012 18:58 · Личное сообщение · #29 |
|
Создано: 22 июля 2013 21:49 · Поправил: NeverMore · Личное сообщение · #30 |
|
Создано: 04 декабря 2013 13:30 · Личное сообщение · #31 |
<< 1 ... 9 . 10 . 11 . 12 . 13 . 14 . 15 . 16 . 17 . 18 . 19 ... 23 . 24 . >> |
eXeL@B —› Протекторы —› Декомпилятор ВМ |