![]() |
С++. Создание PE-файла.
Как просто записать текст в файл ясно, а как создать, PE-файл?
Например, имеется hello_world.exe на 1.5 кб размером. Нужно написать программу на С++, которая бы просто создавала такой файл. Т.е нужно как-то преобразовать для начала этот хелло_ворлд.ехе в текстовый вид, затем внести этот текст в исходный код приложения которое пишем - типа того, наверное. Хранение файла в ресурсах не предлагать - это я знаю. Нужно узнать как без использования ресурсов, а просто записью в файл. Заранее спасибо. |
Насколько мне известно, преобразовать бинарник в текст будет мягко говоря проблематично...
|
PE-файл - можно сказать является тоже текстовым файлов, в котором все расположено по определенным смещениям и который парсит PE-загрузщик Windows, затем исполняет, была встречал пару статей по созданию руками PE-файла, в упаковщиках в последний раз 1 ссылка на статью есть
|
Цитата:
Я лишь предположил какой вариант может быть. :confused: |
шифруй base64, потом декодируй, если я тебя правильно понял
|
Возможно, Вы меня правильно поняли, но я Вас не понял. :)
|
лолы
|
смотри гугл по словам base64. Когда найдёшь что-нибудь - шифруй свой exe base64 - получишь текст из нормальных печатаемых символов. В проге своей пишешь строку эту, делаешь от неё decode и пишешь в файл
|
в винхексе есть возможность представить хекс-код в виде массива на С. То есть открываешь свой хелловорлд в WinHex и экспортируешь его в виде массива в программу, которая должна этот хелловорлд как бы создать
|
ЫЫы канеша да и она создаст программу%)
киньте пример уже рас пишите такое... |
что-то не нашел там такого. где искать?
|
в WinHex:
1. Жмешь Ctrl+A чтобы выделить все 2. Меню Edit -> Copy Block -> C Source 3. В буфере обмена будет массив на С. |
Цитата:
|
hiddenvi и зачем? o_O
|
Gar|k
джоинер делает, палюбас :))) |
Теоретически тут нет никакой проблемы.
Достаточно иметь в руках четыре дока. 1) структура MZ стаба. Он может быть и 64 байта. так что не важно особо. Темболее нам понадобиться тока 2 поля. - magic - сама сигнатура MZ и поля - 3Ch - оффсет на PE заголовок. Тут очень просто делается. 2) структура PE header - тут придется попотеть и всётаки заполнить все поля структуры. Геморно, но быстро реализуемо. 3) структура таблицы импорта. тут она понадобиться потому как будешь юзать MessageBoxA из user32.dll ну и другие нужные функции. Мороки с импортом тоже не очень много. 4) таблица опкодов. С её помошью ты можеш создавать уже код проги. Для теста, там опокодо в особо не много. всего 3 push число call [адрес] ret так что 3 опкода для messagebox хватит. |
slesh
Бгг, теоритически, проблем никогда не бывает... А на практике далеко не так как в теории... это ни для кого не секрет... |
http://www.wasm.ru/print.php?article=win32appbyhand_en
|
| Время: 04:25 |