Люди, дайте ссылки на статьи по этой теме, или обрисуйте общий подход к этому вопросу. P.s. Есть ли различия при разных упаковщиках (протекторах).
Я такое уже делал. У меня ушло на это 2-3 дня - ипользовал софтайс и хиев. Главное найти в файле место для вставки своего кода, обычно нули или СС. Потом найти конец распаковки (переход на распакованый код) заменить на переход в выбраное место - оттуда записать в нужные места команды, при этом учиывать что байты записываються справа налево. И вконец переход назад. Если там есть проверка на СRC нужно ее отменить. А вот что если места нет ?
Noble Ghost спасибо, коротко и ясно. все вопросы про *.exe отпали. Но с dll-ками проблема. Одну просто немогу распаковать. Peid пишет Microsoft Visual C++ 7.0 DLL Method 3. Другие dll-ки распаковываются на ура с помощью OllyDbg v1.10.
Дописать в конец файла, и увеличить RawSize последней секции и SizeOfImage на величину кратную значению (SectionAlignment). )
rs_ir я вот давно смотрю на эту глобальную тему и немного не понимаю, почему всё так сложно ?? Н уне проще ли взть айс, найти чего надо патчить непосредственно в упакованном модуле, когда последний загружен в память. Затем пишем дравер, реализуем в нём патчер с помощью аппаратного механизма, ну и запускаем всё это вместе. Зачем трахаца с запаковкой/распаковкой ? Хотя, конечно , метод данный не лишён недостатка - запуск их вместе возможен только с привелегиями system, а это не всегда бывает, хоть и часто.