Сейчас на форуме: (+5 невидимых) |
eXeL@B —› Протекторы —› Нашел OEP, но проблема с импортом! |
Посл.ответ | Сообщение |
|
Создано: 15 мая 2019 11:30 · Личное сообщение · #1 Господа, всех вас приветствую! У меня такой вопрос к опытным людям, которые, возможно, сталкивались с такой проблемой, когда нашел OEP, а Import по каким-то причинам получался битый, хотя сравниваю упакованную программу VMProtect-ом с не упакованной той же программой - все совпадает, но все равно битый импорт получается, или вообще размер самого импорта отличается от оригинала. Подскажите, если знаете, в чем причина неправильного импорта? Прошу помочь! Буду рееально благодарен тем, кто реально поможет! Добавлено спустя 6 минут OEP найти не проблема, а вот с импортом чета проблема какая-то. Я уже пробовал искать импорт по первому вызову API функции в точки входа, но без результатно. Логика VMProtect-а такова: 1) Занести в stack адрес API функции 2) Вызвать API при помощи команды RET 3) Уже загадка)))) Добавлено спустя 30 минут Нашел вот такую штуку интересную: В регистр EAX заносится число 52ADA7DD, потом далее идет команда LEA EAX,[EAX+24006623], где при сложении 2 чисел 52ADA7DD+24006623=76AE0E00(kernel32.GetStartupInfoA). Вот тут уже загвостка: Откуда брать импорт, если адрес функции берется при помощи операции сложения, без заноса в стек, и вызывается, кстати, командой call eax, хотя бывает так, что заносит в стек и вызывается через RET. |
|
Создано: 15 мая 2019 13:13 · Личное сообщение · #2 FOXHACKBOK > Подскажите, если знаете, в чем причина неправильного импорта? Ничего удивительного что протектор скрывает импорт. Странно что функция элементарна(сложение), обычно сложение используется для релокации, если применяется ко всем указателям в пределах проекции. Но тут не так, тк смещение не выравнено на страницу, видимо просто совпадение. Раз известна IAT и функция шифрования(константа), то примените её к каждому элементу. Судя по всему у вмп всё шифрование основано на использовании констант, это значит что легко восстанавливается. ----- vx |
|
Создано: 15 мая 2019 15:10 · Личное сообщение · #3 Дело в том, что если программа огромная, я же не буду каждую функцию WinAPI восстанавливать, если размер IAT составляет 0x800, это же смешно. То что VMProtect, да и вообще, любой протектор, как не крути, будет скрывать импорт это я знаю. Страница в том то все и дело, что выравнена под оригинал, если бы программа была бы не упакована. Дело в том, что там где реальный импорт - функции имеют только часть адреса функции, в то время, когда основная часть где-то в коде. Я видео прикрепил, можете глянуть, как это все происходит. Компания хитро все сделал! Добавлено спустя 0 минут a0c4_15.05.2019_EXELAB.rU.tgz - 2019-05-15_160536.png Добавлено спустя 0 минут cc1f_15.05.2019_EXELAB.rU.tgz - 2019-05-15_160632.png Добавлено спустя 1 минуту 01b3_15.05.2019_EXELAB.rU.tgz - 2019-05-15_160725.png Добавлено спустя 1 минуту 83da_15.05.2019_EXELAB.rU.tgz - 2019-05-15_160814.png Добавлено спустя 1 минуту 3d7a_15.05.2019_EXELAB.rU.tgz - 2019-05-15_160846.png Добавлено спустя 2 минуты Вот собственно видео. Добавлено спустя 5 минут Было бы правильней сказать, что куски адреса импорта разбросаны по коду, ну и прикиньте все это вручную восстанавливать, проще лоадер написать Добавлено спустя 21 минуту Самое что интересно, что адреса функций разбросаны по программе, а не как обычно все в одой таблице импорте. Так что вот так вот. Эта новая версия VMProtect-а. |
|
Создано: 15 мая 2019 15:33 · Личное сообщение · #4 |
|
Создано: 15 мая 2019 15:44 · Личное сообщение · #5 Не, готовое мне не надо Мне самому интересно распаковывать такие сложные вещи. Вот собственно сам скриншот, посмотрите 5fdd_15.05.2019_EXELAB.rU.tgz - 2019-05-15_163257.png Добавлено спустя 5 минут difexacaw пишет: А никто не говорил что это делается вручную, для этого есть компилятор или скрипты на крайняк. Или вы всё готовое хотите ? Причем тут компилятор, когда речь идет о распаковки VMProtect? Компилятор то не будет распаковывать такие вещи Если есть скрипты, то они не работатю и устаревшие, в то время когда уже все новое. Чета я еще не видел ниодного скрипта по распаковке VMProtect-та за 2017,2018, 2019. Раньше я распаковывал VMProtect-ты, но щас то уже все новое, вот в чем дело, а хочется новое что-то узнать, может есть такие, которые может распаковывали подобный алгоритм. Добавлено спустя 10 минут Я готов заплатить за мануал распаковки VMProtect новых версии, так что я не обижу. Тем более я ценю профессионалов! |
|
Создано: 15 мая 2019 16:30 · Личное сообщение · #6 FOXHACKBOK Получается что хоть значение константа, но она разная для разных апи. В таком случае это трудность. Тогда есть пути решения два. 1. Нужно выделить все переходники, для этого нужно получить их адреса. 2. Накопить переходники. Для этого нужны соотвествующие инструменты, типо этого Во втором случае я бы использовал наследование указателей, это применялось недавно но немного в иной задаче, позволяет получить всю цепочку источник-приёмник данных и таким образом найти все переходники на вызываемые апи. Но вы врядле это сделаете, для вас задача не подьёмная к сожалению. ----- vx |
|
Создано: 15 мая 2019 17:30 · Личное сообщение · #7 Понимаешь, пока ты будешь собирать все переходники - ты состаришься все таки объем файла не 10kb, где контролируешь все. Мне кажется, это не кому не под силу, потому как это очень, очень трудоемкая работа бегать по коду и собирать все функции, ну и постепенно восстанавливать импорт. Теперь я понимаю, почему нету unpacker-ов новых по распаковке VMPRotect, я не говорю про скрипты. |
|
Создано: 15 мая 2019 17:36 · Поправил: difexacaw · Личное сообщение · #8 FOXHACKBOK Что вы всё про ручной разбор говорите. Забудь про кнопки с отладчиком, это всё автоматикой делается. Визор выполняет каждую инструкцию апп, вызывает соотвествующий событию монитор. Это не является проблемой - всё отлично крутится, в частности вмп. Вопрос в том, как это сделать не используя подобные инструменты. > Мне кажется, это не кому не под силу Когда сработает триггер на выполнение в образе, мы получим источник адреса. Не вижу проблемы. EP кстате тоже находится автоматикой, на любых протекторах, даже не известных. ----- vx | Сообщение посчитали полезным: FOXHACKBOK |
|
Создано: 15 мая 2019 18:41 · Личное сообщение · #9 |
|
Создано: 15 мая 2019 18:45 · Поправил: difexacaw · Личное сообщение · #10 FOXHACKBOK Максимум что я могу сделать это взять твой семпл, написать обработку(это не долго) и записать видео. Врядле это чем то тебе поможет. Инструмент который я юзаю не паблик, да и не в этом дело. Можно взять паблик, я ссылку выше приводил, но в любом случае придётся покодить как я и говорил. Иначе задачу решить невозможно. ----- vx |
|
Создано: 15 мая 2019 18:47 · Личное сообщение · #11 |
|
Создано: 15 мая 2019 18:53 · Поправил: difexacaw · Личное сообщение · #12 FOXHACKBOK Нет не распаковывает. Я эту задачу пока не решил Но у вас вопрос не про депак, а про выделение стабов к экспорту. Это я могу легко решить. Но нужно понимать что адреса будут накоплены, тоесть те апи которые не вызывались не будут обработаны. ----- vx |
|
Создано: 15 мая 2019 18:54 · Личное сообщение · #13 |
|
Создано: 15 мая 2019 18:59 · Личное сообщение · #14 |
|
Создано: 15 мая 2019 19:06 · Личное сообщение · #15 |
|
Создано: 15 мая 2019 19:08 · Поправил: difexacaw · Личное сообщение · #16 FOXHACKBOK Вот тебе для общего ознакомления видео как происходит работа с автоматикой(поиск EP) Ок, посмотрю этот семпл. ----- vx |
|
Создано: 16 мая 2019 13:48 · Поправил: difexacaw · Личное сообщение · #17 |
|
Создано: 16 мая 2019 22:18 · Личное сообщение · #18 |
|
Создано: 17 мая 2019 21:33 · Личное сообщение · #19 |
|
Создано: 17 мая 2019 21:51 · Поправил: difexacaw · Личное сообщение · #20 FOXHACKBOK Не всё так сложно, в малварке используются куда более сложные способы. Если импорт не собран в одном месте, это не означает что ссылки нельзя найти и его пересобрать. Что бы получить экспорт должна пройти выборка из пе таблиц, тоесть разобраны экспортные таблицы и сохранены в память. В принципе возможно построить зависимости, вот только такое решение весьма сомнительно - нужны огромные обьёмы памяти для хранения таблиц, каждая выборка должна сохраняться(те на каждый адрес в ап +4 в таблицах, причём не простых таблицах, а avl). Вот только какой смысл собирать импорт для вм не понятно. Можно на лету пофиксить вызовы, но это не имеет смысла. Сначала нужно чётко сформулировать задачу. К вм применяется девирт, а не фикс импорта. Кстате EP найдена общим способом - третье AI событие(первые два ветвления; далее можно по вызовам увидеть стандартный сишный init). Для вас это наверно не важно, но важно для меня(искал общее решение), я по этому вставил это в монитор. ----- vx |
eXeL@B —› Протекторы —› Нашел OEP, но проблема с импортом! |