![]() |
eXeL@B —› Вопросы новичков —› вопрос по теме патчинга исполняемых файлов |
Посл.ответ | Сообщение |
|
Создано: 27 сентября 2011 14:51 · Поправил: webzzter · Личное сообщение · #1 Добрый день, Набралось несколько вопросов по "патчингу" исполняемых файлов, на которые я пока не нашел ответа. первый. разбирая процедуры я часто натыкаюсь на INT3 или NOP которые идут после RETN выхода различных процедур, собственно использую это для переноса RETN и добавлению своей инструкции (обходов, записи в DS итп..).. насколько это правильно ?? второй. насколько я понимаю если мы добавляем свой код, добавляем в файл новые инструкции, после этого сбивается карта вызова процедур.. и нужно много фиксить всего итп.. включая контрольную сумму. так ктонибудь делает ?? третий. может кто ткнет носом или опишет возможные действия при необходимости добавления своего асм. кода в исполняемый файл.. ![]() |
|
Создано: 27 сентября 2011 15:18 · Личное сообщение · #2 webzzter пишет: насколько это правильно Это выравнивание кода, для увеличения скорости его работы. Если места хватает, то пиши туда, почему нет. webzzter пишет: после этого сбивается карта вызова процедур Ничего не сбивается. Да и карты такой нет в исполняемом файле. webzzter пишет: может кто ткнет носом или опишет возможные действия при необходимости добавления своего асм. кода в исполняемый файл Если кода много, то ищем в конце секции кода нули, ставим туда jmp пишем нужный код и ставим jmp обратно, если кода сильно много, то добавляем вторую секцию кода и пишем всё там. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 27 сентября 2011 15:32 · Личное сообщение · #3 |
|
Создано: 27 сентября 2011 15:38 · Личное сообщение · #4 |
|
Создано: 27 сентября 2011 15:40 · Личное сообщение · #5 |
|
Создано: 27 сентября 2011 15:44 · Личное сообщение · #6 |
|
Создано: 27 сентября 2011 15:45 · Поправил: neomant · Личное сообщение · #7 |
|
Создано: 27 сентября 2011 16:06 · Личное сообщение · #8 PE_Kill Он имеет ввиду, если добавить байт куда-то в середину исполняемого файла. Если рассматривать ехе как бинарь, то можно условно разделить его на 3 части: RawData до вставки кода, добавочный код и RawData после вставки кода. webzzter я внедряю свой код не заменяя инструкции а расширяя размер файла. Расклад такой работать не будет. И дело тут не в картах. Когда загрузчик проецирует образ на виртуальное пространство, он читает виртуальные оффсеты секций и по ним записывает физические данные из бинарника. Данные (и код ![]() Теперь в вашем случае. Когда вы всовываете байт (или более) в центр в произвольное место, вы нарушаете порядок соответствия виртуальных и физических данных, и это, как правило, приводит к невалидности той же таблицы импорта, экспорта и прочих. В результате имеем сообщение о невалидности Pe-файла ещё на стадии загрузки. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 27 сентября 2011 17:13 · Личное сообщение · #9 |
|
Создано: 27 сентября 2011 17:24 · Поправил: DMD · Личное сообщение · #10 коллеги, надо думать, опечатались ARCHANGEL пишет: Когда вы всовываете байт (или более) в центр в произвольное место, вы нарушаете порядок соответствия виртуальных и физических данных, и это, как правило, приводит к невалидности той же таблицы импорта, экспорта и прочих. вовсе нет. ТС своими вставками в худшем случае затрет начало какой-либо процедуры или блока под/с данными с последующей ошибкой типа "недопустимая операция" / какой-нибуть exception. PE_Kill пишет: Потом просто надо будет заново весь файл перекомпилировать, что без исходников невозможно. перекомпиляция exe - вот это действительно круто. а ТС, я пологаю, уже осознал собственные ошибки. ![]() |
|
Создано: 27 сентября 2011 17:46 · Личное сообщение · #11 |
|
Создано: 27 сентября 2011 18:04 · Поправил: DMD · Личное сообщение · #12 neomant пишет: Так вроде как и имелась в виду именно вставка дополнительных байт и куда, по-Вашему, эти самые байты планируется вставлять? если: webzzter пишет: патчингу" исполняемых файлов, на которые я пока не нашел ответа. первый. разбирая процедуры я часто натыкаюсь на INT3 или NOP которые идут после RETN выхода различных процедур, собственно использую это для переноса RETN и добавлению своей инструкции (обходов, записи в DS итп..).. ![]() |
|
Создано: 27 сентября 2011 18:20 · Поправил: neomant · Личное сообщение · #13 |
|
Создано: 27 сентября 2011 18:24 · Личное сообщение · #14 |
|
Создано: 27 сентября 2011 19:00 · Личное сообщение · #15 DMD Всё именно так. Опечаток нет, или вы с чем-то не согласны? Я понял, что webzzter хочет "расширить" файл примерно так: запустили WinHex (любой другой хекс-редактор), выделили место в файле, куда будем добавлять, выбрали Edit -> Paste Zero Bytes -> Вписали количество байт -> Изменили их значения. Тогда всё будет разворачиваться по изложенному мной сценарию. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 27 сентября 2011 23:08 · Личное сообщение · #16 Патч - модификация кода. В памяти, либо на диске, в последнем случае это называется инфектом, за это статью дают. В общем там и обсуждать нечего. Динамически требуется проверять контексты всех потоков(хотпатч даже ядро может выполнять). Статически вообще тупо. Динамический патч - не жизниспособный способ контроля кода, ибо детектится и выпиливается всем подряд(один клик мышью в рку выносит ваши патчи, восстанавливает код). В старших версиях системы это обнаруживается как разрушение целостности модулей и система останавливает свою работу(патчгурд). Патч не имеет никакого отношения к руткитам, любой код портящий кодосекции руткитом не может называться. ![]() |
|
Создано: 28 сентября 2011 12:41 · Личное сообщение · #17 |
|
Создано: 29 сентября 2011 21:16 · Поправил: Модератор · Личное сообщение · #18 |
|
Создано: 01 октября 2011 07:17 · Личное сообщение · #19 Столкнулся с такой проблемкой.. stripper анпакнулdll, добавив такой косяк: Code:
хотя в дампе не усматривалось ни какого намёка на сиё winapi Code:
соответственно, вызов к api релочился... а так как нуб в ручном отпаке, и всяких тулз по этому делу, пришлось на скорую руку покодить скрипт выводилки (на дельфи), облегчающий выявление, этих негодных (в данном случае) ячеек релокаций.. Точнее вспоминать техники работы с ними ![]() мож кому пригодиться ![]() |
|
Создано: 01 октября 2011 14:17 · Личное сообщение · #20 |
![]() |
eXeL@B —› Вопросы новичков —› вопрос по теме патчинга исполняемых файлов |