Как просто записать текст в файл ясно, а как создать, PE-файл? Например, имеется hello_world.exe на 1.5 кб размером. Нужно написать программу на С++, которая бы просто создавала такой файл. Т.е нужно как-то преобразовать для начала этот хелло_ворлд.ехе в текстовый вид, затем внести этот текст в исходный код приложения которое пишем - типа того, наверное. Хранение файла в ресурсах не предлагать - это я знаю. Нужно узнать как без использования ресурсов, а просто записью в файл. Заранее спасибо.
PE-файл - можно сказать является тоже текстовым файлов, в котором все расположено по определенным смещениям и который парсит PE-загрузщик Windows, затем исполняет, была встречал пару статей по созданию руками PE-файла, в упаковщиках в последний раз 1 ссылка на статью есть
Мне лишь нужно, имея, определенный ехе-файл накодить программу, которая будет его создавать, при этом вариант с хранением его в ресурсах не катит, но, думаю, что катит любой другой вариант. Я лишь предположил какой вариант может быть.
смотри гугл по словам base64. Когда найдёшь что-нибудь - шифруй свой exe base64 - получишь текст из нормальных печатаемых символов. В проге своей пишешь строку эту, делаешь от неё decode и пишешь в файл
в винхексе есть возможность представить хекс-код в виде массива на С. То есть открываешь свой хелловорлд в WinHex и экспортируешь его в виде массива в программу, которая должна этот хелловорлд как бы создать
в WinHex: 1. Жмешь Ctrl+A чтобы выделить все 2. Меню Edit -> Copy Block -> C Source 3. В буфере обмена будет массив на С.
Теоретически тут нет никакой проблемы. Достаточно иметь в руках четыре дока. 1) структура MZ стаба. Он может быть и 64 байта. так что не важно особо. Темболее нам понадобиться тока 2 поля. - magic - сама сигнатура MZ и поля - 3Ch - оффсет на PE заголовок. Тут очень просто делается. 2) структура PE header - тут придется попотеть и всётаки заполнить все поля структуры. Геморно, но быстро реализуемо. 3) структура таблицы импорта. тут она понадобиться потому как будешь юзать MessageBoxA из user32.dll ну и другие нужные функции. Мороки с импортом тоже не очень много. 4) таблица опкодов. С её помошью ты можеш создавать уже код проги. Для теста, там опокодо в особо не много. всего 3 push число call [адрес] ret так что 3 опкода для messagebox хватит.
slesh Бгг, теоритически, проблем никогда не бывает... А на практике далеко не так как в теории... это ни для кого не секрет...