Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   С++. Создание PE-файла. (https://forum.antichat.xyz/showthread.php?t=123832)

hiddenvi 05.06.2009 22:52

С++. Создание PE-файла.
 
Как просто записать текст в файл ясно, а как создать, PE-файл?
Например, имеется hello_world.exe на 1.5 кб размером. Нужно написать программу на С++, которая бы просто создавала такой файл. Т.е нужно как-то преобразовать для начала этот хелло_ворлд.ехе в текстовый вид, затем внести этот текст в исходный код приложения которое пишем - типа того, наверное.
Хранение файла в ресурсах не предлагать - это я знаю. Нужно узнать как без использования ресурсов, а просто записью в файл.
Заранее спасибо.

awdrg 05.06.2009 23:24

Насколько мне известно, преобразовать бинарник в текст будет мягко говоря проблематично...

0verbreaK 05.06.2009 23:27

PE-файл - можно сказать является тоже текстовым файлов, в котором все расположено по определенным смещениям и который парсит PE-загрузщик Windows, затем исполняет, была встречал пару статей по созданию руками PE-файла, в упаковщиках в последний раз 1 ссылка на статью есть

hiddenvi 05.06.2009 23:31

Цитата:

преобразовать бинарник в текст будет мягко говоря проблематично...
Мне лишь нужно, имея, определенный ехе-файл накодить программу, которая будет его создавать, при этом вариант с хранением его в ресурсах не катит, но, думаю, что катит любой другой вариант.
Я лишь предположил какой вариант может быть.
:confused:

desTiny 05.06.2009 23:32

шифруй base64, потом декодируй, если я тебя правильно понял

hiddenvi 05.06.2009 23:33

Возможно, Вы меня правильно поняли, но я Вас не понял. :)

NorB 05.06.2009 23:36

лолы

desTiny 05.06.2009 23:38

смотри гугл по словам base64. Когда найдёшь что-нибудь - шифруй свой exe base64 - получишь текст из нормальных печатаемых символов. В проге своей пишешь строку эту, делаешь от неё decode и пишешь в файл

bons 05.06.2009 23:41

в винхексе есть возможность представить хекс-код в виде массива на С. То есть открываешь свой хелловорлд в WinHex и экспортируешь его в виде массива в программу, которая должна этот хелловорлд как бы создать

NorB 05.06.2009 23:48

ЫЫы канеша да и она создаст программу%)
киньте пример уже рас пишите такое...

hiddenvi 05.06.2009 23:52

что-то не нашел там такого. где искать?

bons 06.06.2009 00:10

в WinHex:
1. Жмешь Ctrl+A чтобы выделить все
2. Меню Edit -> Copy Block -> C Source
3. В буфере обмена будет массив на С.

hiddenvi 06.06.2009 00:23

Цитата:

в WinHex:
1. Жмешь Ctrl+A чтобы выделить все
2. Меню Edit -> Copy Block -> C Source
3. В буфере обмена будет массив на С.
Все получилось. Это именно то, что я хотел. Благодарю!

Gar|k 06.06.2009 01:37

hiddenvi и зачем? o_O

x0man 06.06.2009 11:33

Gar|k
джоинер делает, палюбас :)))

slesh 07.06.2009 23:15

Теоретически тут нет никакой проблемы.
Достаточно иметь в руках четыре дока.
1) структура MZ стаба. Он может быть и 64 байта. так что не важно особо.
Темболее нам понадобиться тока 2 поля. - magic - сама сигнатура MZ
и поля - 3Ch - оффсет на PE заголовок. Тут очень просто делается.
2) структура PE header - тут придется попотеть и всётаки заполнить все поля структуры. Геморно, но быстро реализуемо.
3) структура таблицы импорта. тут она понадобиться потому как будешь юзать MessageBoxA из user32.dll ну и другие нужные функции.
Мороки с импортом тоже не очень много.
4) таблица опкодов. С её помошью ты можеш создавать уже код проги.
Для теста, там опокодо в особо не много.
всего 3
push число
call [адрес]
ret
так что 3 опкода для messagebox хватит.

x0man 09.06.2009 04:54

slesh
Бгг, теоритически, проблем никогда не бывает...
А на практике далеко не так как в теории...
это ни для кого не секрет...

metaldisc 09.06.2009 18:23

http://www.wasm.ru/print.php?article=win32appbyhand_en


Время: 04:25