Русский / Russian English / Английский

Сейчас на форуме: Veliant, CompCrasher, _MBK_, rthax (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Крэки, обсуждения —› Исследование загрузки и патча программы с помощью лодыря
Посл.ответ Сообщение

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 21 января 2015 20:54 New!
Цитата · Личное сообщение · #1

Вопрос к знатокам...
Столкнулся со следующей задачей. Имеется упакованная программа, которая запускается с помощью лодыря. При этом лодырь сначала запускает программу с подавленным потоком, затем патчирует код программы, после чего возобновляет поток, и программа запускается. Возник вопрос: как можно посмотреть в отладчике процесс патчирования кода программы? Я пытался подключить отладчик при подавленном потоке, но ничего не происходит, поскольку код не распакован, и заполнен нолями. Пытался подключить отладчик при возобновлении потока, но тоже ничего не получил. Как можно решить этот вопрос?

Ранг: 92.3 (постоянный)
Статус: Участник

Создано: 21 января 2015 21:12 · Поправил: vovanre New!
Цитата · Личное сообщение · #2

Попробуй через VEH отладчик в Cheat Engine.

// Можно оба проца заморозить через процесс хакер.

Ранг: 511.2 (!)
Статус: Модератор

Создано: 21 января 2015 21:19 New!
Цитата · Личное сообщение · #3

как вариант продебадижить код лоадера?


Ранг: 328.7 (мудрец)
Статус: Участник

Создано: 21 января 2015 21:41 New!
Цитата · Личное сообщение · #4

может все таки не ПАТЧИРОВАНИЕ?


Ранг: 676.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 21 января 2015 22:46 New!
Цитата · Личное сообщение · #5

После кода лоадера пишем примерно такой же свой, который читает контекст потока для определения, с какого адреса поток начнёт выполняться. Туда лепим опкод EBFE (short jump на самого себя), если х86. Предварительно 2 байта исходных читаем и можем даже вывести на экран (в файл). Далее отпускаем поток, он зацикливается. Аттачимся к нему дебаггером, восстанавливаем байты, вин!

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 22 января 2015 12:08 New!
Цитата · Личное сообщение · #6

vnekrilov это случайно не енигма с патчером? может посмотреть в сторону армы? когда юзалось антидетач?

Добавлено спустя 2 минуты
ARCHANGEL пишет:
После кода лоадера пишем примерно такой же свой

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

Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 22 января 2015 12:43 New!
Цитата · Личное сообщение · #7

ARCHANGEL пишет:
После кода лоадера пишем примерно такой же свой, который читает контекст потока для определения, с какого адреса поток начнёт выполняться. Туда лепим опкод EBFE


Я нашел немного другое решение. После остановки лоадера на инструкции ResumeThread установил бряку на WriteProcessMemory, и здесь в стеке прекрасно видно по каким адресам в коде программы лоадер записывает нужные байты (запись нужных байтов проводится по-байтно). Далее я использовал утилиту от Нарвахи - PUPE, с помощью которой на первой пропатченной инструкции записываю байты EBFE (бесконечный цикл). Это я делаю потому, что при патчировании лоадером кода программы уже пройдена ее OEP. После этого запускаю дальше лоадер, он завершает свою работу, и программа виснет в бесконечном цикле на инструкции с байтами EBFE. А вот дальше идет затык. При попытке подключения отладчика к процессу программа тупо закрывается с кодом ошибки DEADCODE (-559038242).

VodoleY пишет:
vnekrilov это случайно не енигма с патчером


Сама программа защищена VMProtect. Отладчик настроен так, что протектор ее не обнаруживает (я со своими настройками плагинов распаковал эту программу, и свободно подключаю отладчик к полностью запущенной программе), а на зацикленной программе получаю вышеуказанный код ошибки, и программа закрывается. Надо посмотреть антидетач


Ранг: 990.3 (! ! !)
Статус: Модератор
Author of DiE

Создано: 22 января 2015 13:13 New!
Цитата · Личное сообщение · #8

vnekrilov попробуй вот это

http://www.openrce.org/blog/view/1846/ICanAttach,_a_plugin_to_bypass_anti-attaching_tricks
или
https://tuts4you.com/download.php?view.3253

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


Ранг: 329.6 (мудрец)
Статус: Участник

Создано: 22 января 2015 17:19 New!
Цитата · Личное сообщение · #9

Опять вопрос в порядке консультации. При подключении отладчика к зацикленному процессу, программа благополучно закрывается с кодом ошибки DEADCODE (-559038242). Применение разных плагинов антидетача ничего не дает. Как я понимаю, запущенная программа с протектором ловит отладчик, и тупо закрывается. Какие еще можно использовать приемы для подключения отладчика к запущенной программе?

Ранг: 254.2 (наставник)
Статус: Участник

Создано: 22 января 2015 17:31 · Поправил: TryAga1n New!
Цитата · Личное сообщение · #10

Перечислить все потоки (не важно каким способом), заморозить все, кроме MainThread'a и уже после этого приаттачиться дебаггером.

А вот и антидебаг трик от дероко, в котором используется Exit code DEADC0DE
http://blog.w4kfu.com/tag/unpackme


Ранг: 676.7 (! !)
Статус: Участник
ALIEN Hack Team

Создано: 22 января 2015 17:50 New!
Цитата · Личное сообщение · #11

DEADCODE - это константа внутри вмпрота. Так он реагирует, если спалит отладчик. Суть в том, что аттач проходит, но после него плаги "не успевают" скрыть дебаггер, т.к. нет останова. Управление получает поток вмпрота, и юзается какой-то антидебаг трюк, что приводит к детекту.
 eXeL@B —› Крэки, обсуждения —› Исследование загрузки и патча программы с помощью лодыря

Видеокурс ВЗЛОМ