On-line: Pasha, гостей 0. Всего: 1 [подробнее..]
АвторСообщение



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 14.02.10 01:32. Заголовок: Встроенный EXE


Всем, привет !
1. Можно ли поместить внешний EXE файл в ресурс своей проги ?
2. Можно ли поместить внешний EXE файл в EXE-шник своей проги ?

Спасибо: 0 
Цитата Ответить
Ответов - 23 , стр: 1 2 All [только новые]





Пост N: 61
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 15.02.10 09:58. Заголовок: Насколько я знаю, к ..


Насколько я знаю, к "хвосту" EXEшника можно подписывать что угодно, работоспособности при этом он не теряет :) Вероятно можно, предварительно запомнив размер своего EXE, подписывать к его хвосту второй EXE...

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 15.02.10 10:56. Заголовок: Тогда сразу вопрос, ..


Тогда сразу вопрос, а как запустить этот "подклеейнный" exe-шник ?

Спасибо: 0 
Цитата Ответить



Пост N: 62
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 16.02.10 14:59. Заголовок: Ну, как... Видимо Fr..


Ну, как... Видимо Fread() основного ехе на чтение, Fwrite()-> Новый_ехешник.exe и типа запустить... Сразу говорю, - сам не пробовал...

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 16.02.10 20:08. Заголовок: Ну это понятно. А во..


Ну это понятно. А вот можно ли вырезанный блок сохранить как exe-шник в памяти и пустить его оттуда ?
Я как-то развлекался с джойнером приклеивая exe-шники к картинкам. Все работало, но антивирус ругался на мои творения, мол троян. Тоже не вариант.

Спасибо: 0 
Цитата Ответить



Пост N: 63
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 17.02.10 11:50. Заголовок: Честно говоря с памя..


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

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 17.02.10 14:29. Заголовок: Loach пишет: с памя..


Loach пишет:

 цитата:
с памятью не пробовал

:)))

А в мемо поле нельзя засадить?


Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 1125
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.02.10 14:58. Заголовок: ММК пишет: А в мем..


ММК пишет:

 цитата:

А в мемо поле нельзя засадить?


Лучше в BLOB ....

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 64
Зарегистрирован: 02.10.08
ссылка на сообщение  Отправлено: 17.02.10 15:31. Заголовок: А как все это решает..


А как все это решает вопрос запуска приложения "из памяти" ?

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 17.02.10 16:13. Заголовок: Loach пишет: А как ..


Loach пишет:

 цитата:
А как все это решает вопрос запуска приложения "из памяти" ?


Ну, для рывка, решит вопрос с антивирусом.
А с памятью это ты Сережа придумал :)))
У меня тем более с памятью не очень :((
Может прочитать в GGG , а потом RUN GGG....

:))) Как в клубе "Что, где , как "

Спасибо: 0 
Цитата Ответить
постоянный участник




Пост N: 143
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 19.02.10 13:24. Заголовок: Прошу прощенья за во..


Прошу прощенья за вопрос, благородные доны... :) - а зачем всё это извратованье надо? в смысле - брать откуда-то чего-то заранее заготовленное, превращать его "на лету" в EXEшник и запускать... видимо (как понимаю) чтобы не класть в папку с приложением "подчиненные" (вызываемые из него) EXEшки (чтобы юзер чего не надо не тыкал - ибо "чего не надо" на виду не лежит)?.. или я не прав - и в этом есть некая (пока) недоступная мне цель..

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 19.02.10 14:54. Заголовок: Нет, никакой недос..


Нет, никакой недоступной пониманию цели не преследуется. Ваша логика безупречна. Я нашел пару реализаций на С, но все сложно, надо PE понимать. Я такое не потяну.
С наступающим.

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.02.10 14:57. Заголовок: fil пишет: Я такое ..


fil пишет:

 цитата:
Я такое не потяну.


А под хорошую закусочку ? :))

Вот смотри, забугорцы вроде нормальный вариант предложили, а с такой сишной пр-кой думаю наши
спецы тебе помогут!

http://boxedapp.com/boxedappsdk/

С наступающим :)))

Спасибо: 0 
Цитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 20.02.10 19:50. Заголовок: Ну ежели спецы помог..


Ну ежели спецы помогут ..

Но пока я этим импортным людям объяснил чего хочу - уфф. Каждый, в стиле Петра, спрашивал - чего ОН хочет. И советовали - кликни, мол, 2 раз на экзешник он и запустится (in memory)

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 831
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.02.10 23:49. Заголовок: fil пишет: Каждый, ..


fil пишет:

 цитата:
Каждый, в стиле Петра, спрашивал - чего ОН хочет.



Наверное это потому, что вы достаточно туманно объясняете, что вы хотите (конечную цель) и причину возникновения таких "хотелок" А если честно, то совсем не объясняете.
Тем не менее, не зная как и где вы объясняли, и что вам ответили, но по указанному адресу я достаточно быстро нашел такой пример

HANDLE h =     
BoxedAppSDK_CreateVirtualFile(
_T("1.exe"),
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_NEW,
0,
NULL);
...
DWORD nWritten;
WriteFile(h, pData, dwSize, &nWritten, NULL);
CloseHandle(h);
...
CreateProcessA(NULL, "1.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

Дальше дело техники..

P.S. Внимательно посмотрев еще раз

BoxedAppSDK_Init();    

HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hModule, _T("BIN1"), _T("BIN"));
HGLOBAL hResData = LoadResource(hModule, hResInfo);
LPVOID lpData = LockResource(hResData);
DWORD dwSize = SizeofResource(hModule, hResInfo);

HANDLE hFile =
BoxedAppSDK_CreateVirtualFile(
_T("app1.exe"),
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_NEW,
0,
NULL);

DWORD temp;
WriteFile(hFile, lpData, dwSize, &temp, NULL);

CloseHandle(hFile);

ShellExecute(NULL, NULL, _T("app1.exe"), NULL, NULL, SW_SHOW);


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.02.10 01:12. Заголовок: Возможно я обяснял н..


Возможно я обяснял не так, хотел не того.. Особенно не зная как и где я это объяснял, и что мне ответили

Сайт это я смотрел и функции эти на C++. Но вот как это реализовать под xHarbour ?

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 832
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.02.10 09:53. Заголовок: Для начала 1. Можно..


Для начала

 цитата:
1. Можно ли поместить внешний EXE файл в ресурс своей проги ?
2. Можно ли поместить внешний EXE файл в EXE-шник своей проги ?


1. Можно, и EXE и DLL, и WAV, MP3 и т.д. В файле ресурсов объявить ресурс как RCDATA
Возможен встречный вопрос как его извлечь?
Используя функции API, вот эта часть примера иллюстрирует общепринятую технику

 цитата:
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResInfo = FindResource(hModule, _T("BIN1"), _T("BIN"));
HGLOBAL hResData = LoadResource(hModule, hResInfo);
LPVOID lpData = LockResource(hResData);
DWORD dwSize = SizeofResource(hModule, hResInfo);


2. Можно. Есть такая техника как injection. Но эту технику используют в основном хацкеры и нормальный антивирус просто обязан реагировать на подобную возню. Для учетных программ и задач, для которых используют xHb - это через верх.
fil пишет:

 цитата:
Но вот как это реализовать под xHarbour ?


Вы же не забыли, что результирующая программа на xHarbour - это C/C++ (в зависимости от C компилятора и ключей компиляции xHb) программа?
Если предположить, что у вас BoxedApp имеется в наличии, то какие трудности?
Пишите функцию-враппер и вперед. Можете разбить на несколько функций, к примеру, для BoxedAppSDK_Init написать свою функцию-переходник.
Самая большая проблема для вас - это заполучить BoxedApp (если вы не хотите писать что-то подобное собственными руками ) или что-то ему подобное ( Callback File System ТМ со товарищи ).

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.02.10 12:19. Заголовок: BoxedAppSDK у меня е..


BoxedAppSDK у меня есть. Правда, я слабо представляю его использование

Может быть это поинтереснее

http://forum.sources.ru/index.php?s=87b05e3df260f4aec50b5d6400cd7bf2&showtopic=257376

Спасибо: 0 
Цитата Ответить
постоянный участник


Пост N: 833
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.02.10 12:53. Заголовок: И все таки нафига ва..


И все таки нафига вам это нужно? Ну я понимаю, но хочу чтобы вы озвучили (написали)
fil пишет:

 цитата:
Правда, я слабо представляю его использование


Не представляю что-там можно не представлять
А если не представляете может не оно вам нужно? Может подручными средствами обойтись?
Например

 цитата:
 
/*
* hello.prg
*/

PROCEDURE main()
//
OutStd("Hello from resources!")

ErrorLevel( 7 )
//
RETURN



 цитата:
// testres.rc
1001 RCDATA "hello.exe"



 цитата:
 
/*
* testres.prg
*/
#define IDR_HELLO 1001

PROCEDURE main()
LOCAL cFileOut := hb_dirTemp() + "\" + "he$$o.tmp"
LOCAL nSize, hProcess, nRet
//
DELETE FILE cFileOut

nSize := RCDataToFile( IDR_HELLO, cFileOut )

IF nSize > 0
hProcess := hb_processOpen( cFileOut ) ; nRet := hb_processValue( hProcess, .t. )
QOut( nRet )
ENDIF
//
RETURN

//
RETURN

#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"

// JE -> JumpIfEqual
#define JE( _val1_, _val2_, _retval_ ) \
if ( _val2_ == _val1_ ) { dwRet = _retval_; goto ret_code; }

HB_FUNC( RCDATATOFILE )
{
HMODULE hModule = GetModuleHandle( NULL );
HRSRC hResInfo;
HGLOBAL hResData;
LPVOID lpData;
DWORD dwSize, dwRet;
HANDLE hFile;

hResInfo = FindResource( hModule, MAKEINTRESOURCE(hb_parnl(1), RT_RCDATA );
JE( hResInfo, NULL, -1 )

hResData = LoadResource( hModule, hResInfo );
JE( hResData, NULL, -2 )

lpData = LockResource( hResData );
JE( lpData, NULL, -3 )

dwSize = SizeofResource( hModule, hResInfo );
hFile = CreateFile( hb_parc(2), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, (DWORD) NULL, NULL );
JE( hFile, INVALID_HANDLE_VALUE, -4 )

WriteFile( hFile, lpData, dwSize, &dwRet, NULL );
if ( dwRet != dwSize )
{
dwRet = -5;
}
CloseHandle( hFile );

ret_code:
hb_retnl( dwRet ) ;
}
#pragma ENDDUMP


P.S. Немного поправил код.
Каждый вызов hProcess := hb_processOpen( ... )
обязательно должен закрываться hb_processValue( hProcess, ... ), освобождая handle процесса!
P.P.S. Оказывается для xHb еще и вызов FClose( hProcess ) нужен..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 834
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 21.02.10 13:28. Заголовок: Если вы заметили, пр..


Как вы заметили, пример написан для Harbour.
Для xHb заменяем hb_processOpen на hb_OpenProcess,
используем вместо hb_dirTemp() GetEnv("TEMP") или hb_getEnv("TEMP") (что есть).

P.S. В Harbour вообще можно обойтись встроенными функциями и win_LoadResource из hbwin.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 21.02.10 13:37. Заголовок: Ну так и замечательн..


Ну так и замечательно. Спасибо за помощь.

Спасибо: 0 
Цитата Ответить
Ответов - 23 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 98
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет