Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ехе файл в статическую переменную / 17 сообщений из 17, страница 1 из 1
19.09.2007, 21:17:09
    #34812737
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Есть маленькое exe приложение. Возможно ли статически поместить его в переменную чтобы потом во время работы программы сохранить его на диск и запустить.
(Нужно это потому что программа на скриптовом языке с синтаксисом С, а потому ограниченна в возможностях)
...
Рейтинг: 0 / 0
19.09.2007, 22:52:58
    #34812852
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
ну запиши его в виде hex-dump'а
...
Рейтинг: 0 / 0
20.09.2007, 13:10:52
    #34814195
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Вирус? :)

или (кроме Hex-дампа) есть еще более компактное UUE ...
правда, возни больше
...
Рейтинг: 0 / 0
20.09.2007, 13:29:46
    #34814272
pegasus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Конечно можно 8) Просто открываешь свой exe и тупо дописываешь к нему другой exe, а в конце можешь структуру дописать, которая бы указывала откуда надо читать (смещение в файле) и скоко

struct ExFileInfo {
DWORD offset;
DWROD size;
};

А в exe к которому дописал надо делать так. Он сам себя открывает на чтение, файловый указатель переводит на конец себя, читает структуру ExFileInfo и основываясь на ее данных, читает прилинкованый файл, и при желании копирует его в нужную директории и запускает. Вот и все.
...
Рейтинг: 0 / 0
20.09.2007, 17:38:04
    #34815479
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Кроик Семёнили (кроме Hex-дампа) есть еще более компактное UUE ...
правда, возни большеПравда???? UUE компактнее чем дамп? Никогда бы не подумал.
...
Рейтинг: 0 / 0
20.09.2007, 20:14:02
    #34815952
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Yurman wrote:

> Есть маленькое exe приложение. Возможно ли статически поместить его в
> переменную чтобы потом во время работы программы сохранить его на диск
> и запустить.
Да.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
20.09.2007, 20:15:26
    #34815954
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Кроик Семён wrote:

> есть еще более компактное UUE ...
uue потребует 4 байта для представления 3х иходных.

Я такое делал, можно просто тупо перегнать утилитой исходный файл в
определение массива с иницализацией, и включить это в проект.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
20.09.2007, 22:26:07
    #34816125
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Основной файл у меня не exe а специальное приложения для Cad среды, его структуру я не знаю, это к тому чтобы открыть и дописать exe в него.
...
Рейтинг: 0 / 0
20.09.2007, 22:26:31
    #34816126
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Поискал про hex dump нашел пример только как в процессе программы загрузить файл.
Помогите сделать это статически, вот например:

char BatFile[]="@del readme.txt";

void main()
{
FILE *f = fopen( "delete.bat", "wt");
fprintf(f,"%s",BatFile[]="@del );
fclose(f);
}

В результате я получаю файл delete.bat

Тоже самое надо только с exe файлом, только вот в строку как с bat файлом не могу его засунуть
а как представить его в виде hex в исходнике, в какой тип поместить и как сохранить я не знаю
...
Рейтинг: 0 / 0
20.09.2007, 22:35:51
    #34816137
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Исправление fprintf(f,"%s",BatFile[]="@del ) читать как fprintf(f,"%s",BatFile);
...
Рейтинг: 0 / 0
21.09.2007, 09:32:15
    #34816585
Gwa
Gwa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Поместите Ваш файл в ресурс программы
(в ресурс можно загнать любой файл),
а во время работы записывайте его на диск и запускайте оттуда
(с диска то есть)
...
Рейтинг: 0 / 0
21.09.2007, 09:44:35
    #34816616
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
YurmanТоже самое надо только с exe файлом, только вот в строку как с bat файлом не могу его засунуть
а как представить его в виде hex в исходнике, в какой тип поместить и как сохранить я не знаю

Считай его в std::vector<unsigned char>
...
Рейтинг: 0 / 0
21.09.2007, 11:50:53
    #34817158
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Ну е-мое, никто не хочет hex dump в двоичку перегнать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
FILE* f = fopen("a.exe", "w");
const char* hexDump = "C0FFEE";
const char* digits = "0123456789ABCDEF";
unsigned char buf[ 512 ];

memset(buf,  0 , sizeof(buf));

for (int i, j =  0 ; hexDump[i] != '\0';)
{
  unsigned char upper = (std::lower_bound(digits, digits +  16 , hexDump[i++]) - digits;
  if (hexDump[i] == '\0' || upper ==  16  )
    throw  1 ;
  unsigned char bottom = std::lower_bound(digits, digits +  16 , hexDump[i++])- digits;
  if  (buttom ==  16  )
    throw  1 ;
  buf[j++] = (upper <<  4 ) | buttom;
  if (j == sizeof(buf))
  {
    fwrite(buf, sizeof(buf[ 0 ]), sizeof(buf), f);
    j =  0 ;
    memset(buf,  0 , sizeof(buf));
  }  
}

char c;
while((c=getchar()) != EOF)
{
putchar(s[((unsigneg char) (c & (mask << 4))) >> 4]);
putchar(s[c & mask]);
}
...
Рейтинг: 0 / 0
21.09.2007, 11:54:20
    #34817176
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Ой забыл в крнце буфер сбросить, но это уже сам
...
Рейтинг: 0 / 0
21.09.2007, 19:47:33
    #34818978
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Вот как пока получилось:

//Фрагмент exe файла в hex
char Data[]={0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00};
int main()
{
FILE *f;
f=fopen( "start.exe", "w" );
fwrite( Data, sizeof( char ), 16, f );
fclose( f );
return 0;
}

Немного неудобно конечно что для каждого числа в Data надо ставить "0x" и ","
но для этого можно сделать утилитку.
Если кто знает подскажите как проще представить статически переменную Data.


Пытался сделать утилиту которая из exe файла делала бы heх в нужном мне формате (чтобы им инициализировать статический массив),
скачал исходники программы которая делает hex из любого файла, но она какаято глючная,
надо найти нормальную 100% рабочую.
...
Рейтинг: 0 / 0
21.09.2007, 19:48:30
    #34818981
Yurman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
С примеров blinded пока не разбирался, сходу не понял че к чему, буду смотреть.
...
Рейтинг: 0 / 0
21.09.2007, 22:57:09
    #34819138
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ехе файл в статическую переменную
Yurmanскачал исходники программы которая делает hex из любого файла, но она какаято глючная, надо найти нормальную 100% рабочую.Плохо искал. Гугли bin2hex, получишь сотни вариантов этой утилиты. Подбери себе по вкусу.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ехе файл в статическую переменную / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]