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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Реверсинг (https://forum.antichat.xyz/forumdisplay.php?f=94)
-   -   *.exe в hex и обратно?[need help] (https://forum.antichat.xyz/showthread.php?t=178329)

cheater_man 12.02.2010 19:29

*.exe в hex и обратно?[need help]
 
Имеется *.exe. Его нужно запихнуть в исходник проги (я использую C#).И потом его создать, тоесть тело этого exe должно лежать в компилируемом exe'шнике.
Делаю я это так:
1. Открываю собственно этот *.exe в WinHex.
2. Сохраняю в hex.
Получается что-то вроде
Код:

\x4D\x5A\x99\x01\... бла.. бла... бла...
3.Пихаю эту штуку в исходник проги, как string
Код:

public string hex = " \x4D\x5A\x99\x01\... бла.. бла... бла... ";
4. Записываю в файл с помощью StreamWriter
Код:

....
            path = @"D:\hex_to_exe.exe";
            StreamWriter sw = new StreamWriter(path);
            sw.WriteLine(hex);
            sw.Close();
....

Все отлично. Файл создан, но сам exe не работает, в cmd пишет что ошибка EXE файла.
Открываем exe созданный нами hex_to_exe.exe с помощью WinHex и видим
Код:

\x4D\x5A\xC2\x99\x01\xC3\x8F\x00\xC2\x89\x01\.....
size = 143 665 byte

смотрим оригинал
Код:

\x4D\x5A\x99\x01\xCF\x00\x89\x01\x80\x00\x40\.....
size = 105 881 byte

В чем проблема????? Никак разобраться немогу :( Помогите please!
Если есть возможность приведите исходники :)

mr.The 12.02.2010 19:38

Ага, было подобное. Решил как-то так:
Цитата:

string str = System.Text.Encoding.GetEncoding("iso-8859-5").GetString(...)

cheater_man 13.02.2010 02:27

Цитата:

Сообщение от mr.The
Ага, было подобное. Решил как-то так:

Программа неумещается в памяти??? Что за фигня???
делаю так:
Код:

public byte[] byt = {
        0x4D, 0x5A, 0x99, 0x01............
                              };
            path = @"D:\hex_to_exe.exe";
            string str = Encoding.GetEncoding("iso-8859-5").GetString(byt);
            System.IO.StreamWriter sw = new System.IO.StreamWriter(path);
            sw.WriteLine(str);
            sw.Close();

как бэ тоже самое
Код:

\x4D\x5A\xC2\x99\x01\xD0\xAF\x00\xC2\x89.......
вот откуда он берется... я в непонятках...


sn0w 13.02.2010 14:13

Вложений: 1
используйте CreateFile/WriteFile из винапи

кста вспомнил, кадата делал
в аттаче подобная тулза для генерации с хидера из файла

patcher 13.02.2010 15:36

2cheater_man:
Я бы решил твою проблему по-другому. Если тебе нужно из своей программы создатьдругую, то можно просто создаваемый файл запихнуть в ресурсы главного софта, а по нажатию кнопки (или как там тебе нужно) извлечь его оттудова!

cheater_man 13.02.2010 15:47

Цитата:

Сообщение от sn0w
используйте CreateFile/WriteFile из винапи

кста вспомнил, кадата делал
в аттаче подобная тулза для генерации с хидера из файла

WinApi в C# гоморно :( Так что твоё предложение некатит, есть другой способ???
Цитата:

Я бы решил твою проблему по-другому. Если тебе нужно из своей программы создатьдругую, то можно просто создаваемый файл запихнуть в ресурсы главного софта, а по нажатию кнопки (или как там тебе нужно) извлечь его оттудова!
А я что по твоему делаю? Я тоже пихаю hex файла в исходник потом его сохраняю в файл! Тут пходу все дело в кодеровке?

patcher 13.02.2010 16:30

Возможно мы не поняли друг друга так как хотелось бы, потому просто приведу пример на Delphi: http://www.188.ru/195062 .
А вот статья, как все это сделать на Делфи, думаю в С такое возможно тоже: http://articles.org.ru/cfaq/index.php?qid=186

patcher 13.02.2010 16:32

Вот пример выдергивания файла изи ресурсов компиленой проги на С :
http://forum.sources.ru/index.php?showtopic=228575&hl=
а именно тот пост поможет создать ресурсы:
http://forum.sources.ru/index.php?sh...post&p=1904033

Kaimi 13.02.2010 16:41

Попробуй типа
Код:

byte[] byt = {0x4D, 0x5A, ....};
FileStream stream = new FileStream("C:\\file.exe", FileMode.Create);
BinaryWriter w = new BinaryWriter(stream);
w.Write(byt);
w.Close();


cheater_man 13.02.2010 19:53

Цитата:

Сообщение от Kaimi
Попробуй типа
Код:

byte[] byt = {0x4D, 0x5A, ....};
FileStream stream = new FileStream("C:\\file.exe", FileMode.Create);
BinaryWriter w = new BinaryWriter(stream);
w.Write(byt);
w.Close();


Кaimi ты гений!11адын адын!!!11!! :)
CLOSED :)


Время: 20:23