eXeL@B —› Софт, инструменты —› Imprec, IAT autosearch. Как оно работает? |
Посл.ответ | Сообщение |
|
Создано: 14 июня 2012 16:26 · Личное сообщение · #1 |
|
Создано: 14 июня 2012 17:11 · Личное сообщение · #2 |
|
Создано: 14 июня 2012 17:17 · Личное сообщение · #3 |
|
Создано: 14 июня 2012 17:19 · Поправил: Flint · Личное сообщение · #4 |
|
Создано: 14 июня 2012 17:35 · Личное сообщение · #5 Hexxx а сырки scylla не катят ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 14 июня 2012 17:41 · Личное сообщение · #6 |
|
Создано: 14 июня 2012 18:12 · Поправил: Hexxx · Личное сообщение · #7 ajax пишет: а сырки scylla не катят Scylla ищет дизасмом опкоды вызова или прыжка через память, т.е. FF 15 или FF 25. Это наверно именно то что делает imprec. Судя потому как оно ошибается Hellspawn пишет: вроде как раз вот так т.е. если в определенном куске памяти скопилось какое-то количество адресов за пределами модуля, то это IAT? ----- Реверсивная инженерия - написание кода идентичного натуральному |
|
Создано: 14 июня 2012 19:36 · Личное сообщение · #8 |
|
Создано: 14 июня 2012 19:39 · Личное сообщение · #9 |
|
Создано: 14 июня 2012 23:19 · Личное сообщение · #10 Hexxx ну если грубо, то да: Code:
тут просто проверяется вхождения адреса, хоть в какой либо модуль, можно дальше можно тут же проверить, что это именно кодовая секция и т.д. ----- [nice coder and reverser] |
|
Создано: 15 июня 2012 00:20 · Поправил: Hexxx · Личное сообщение · #11 Это понятно, но как отличить от глобальных переменных хранящих адрес экспортируемой функции в другом модуле? Импорты бывают разные Например берем самый худший вариант: изначально импортируется в бинарь только одна функция. Дальше бинарь накрыт протектором херящим импорт. Как найти IAT для такого бинаря? ----- Реверсивная инженерия - написание кода идентичного натуральному |
|
Создано: 15 июня 2012 01:50 · Личное сообщение · #12 |
|
Создано: 15 июня 2012 01:57 · Личное сообщение · #13 Hexxx пишет: Например берем самый худший вариант: изначально импортируется в бинарь только одна функция. Дальше бинарь накрыт протектором херящим импорт. Как найти IAT для такого бинаря? У бинаря найдется адрес - xxxx, который будет попадать в адресное пространство какого-то модуля (скорее всего в кодосекцию). У модуля будут экспортируемые функции - yyyy. Если xxxx = yyyy, значит скорее всего это импорт. ----- Nulla aetas ad discendum sera |
|
Создано: 15 июня 2012 11:11 · Личное сообщение · #14 |
|
Создано: 15 июня 2012 11:12 · Личное сообщение · #15 |
|
Создано: 15 июня 2012 11:35 · Личное сообщение · #16 |
|
Создано: 15 июня 2012 11:56 · Поправил: DillerInc · Личное сообщение · #17 |
|
Создано: 15 июня 2012 13:48 · Личное сообщение · #18 ясно, в общем я пишу плагин к IDA, чтобы можно было импорт по полным дампам памяти восстанавливать. Вся инфа в них есть, никакая антиотладка не мешает, лепота. Только тулзов нет ----- Реверсивная инженерия - написание кода идентичного натуральному | Сообщение посчитали полезным: mak |
|
Создано: 16 июня 2012 14:01 · Личное сообщение · #19 |
|
Создано: 16 июня 2012 17:21 · Личное сообщение · #20 DillerInc дамп всех регионов памяти .exe, типа как region dump в lordpe/petools. дальше прогон импорта по адресам сиих регионов. имхо. PS: когда-то в одной группе была мысля сделать анпакер (exe, конечно, большой бы получался) на основе полного дампа регионов - но, много тонкостей, руки не дошли. ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 16 июня 2012 21:35 · Поправил: Hexxx · Личное сообщение · #21 DillerInc пишет: а можно подробнее о том, как это выглядит? Дампы которые делает windbg, process explorer, task manager и т.д. можно грузить в IDA. Дамп чем хорош: 1) он содержит ВСЮ память процесса т.е. не бывает такой ситуации когда у тебя переходники ведут в протектор, а ты забыл их сдампить. 2) все DLL находятся на одних и тех же адресах не смотря на ASLR. ибо это же полный дамп памяти процесса 3) протекторы не блокируют создание таких дампов Да и не смогут Я могу апаратно рушить всю винду (BSOD), и забирать инфу о процессе из полного дампа физической памяти. Т.е. невозможно отличить, кто спровоцировал дамп. 4) в дампе есть "контекст" известно какой процесс и какой поток что делал. Используя эмуляторы можно сколько угодно имитировать всевозможные вызовы и смотреть, что будет. Пока что я хочу сделать прогамму минимум: написать плагин к IDA, чтобы сохранять импорт в текстовый файл в формате импрека. А там может допилю до полноценной тулзы для получения полностью восстановленного exe из IDA. Как это будет происходить восстановление импорта. Плагин находит IAT и показывает какие из указателей в нем в какой экспорт сейчас указывают. Будет как в импреке дерево и видно где чистый thunk, а где в протектор смотрит. Дальше можно, используя какие угодно свои IDC/python скрипты или плагины к IDA, менять адреса в IAT на правильные. Т.е. патчить базу IDA, так чтобы IAT выглядела коректно. Когда все будет готово можно будет сохранить импорт как текстовый файл в формате импрека, или даже сохранить сразу восстановленый бинарь. ----- Реверсивная инженерия - написание кода идентичного натуральному |
eXeL@B —› Софт, инструменты —› Imprec, IAT autosearch. Как оно работает? |
Эта тема закрыта. Ответы больше не принимаются. |