Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 14.02.10 01:32. Заголовок: Встроенный EXE
Всем, привет ! 1. Можно ли поместить внешний EXE файл в ресурс своей проги ? 2. Можно ли поместить внешний EXE файл в EXE-шник своей проги ?
|
|
|
Ответов - 23
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 61
Зарегистрирован: 02.10.08
|
|
Отправлено: 15.02.10 09:58. Заголовок: Насколько я знаю, к ..
Насколько я знаю, к "хвосту" EXEшника можно подписывать что угодно, работоспособности при этом он не теряет :) Вероятно можно, предварительно запомнив размер своего EXE, подписывать к его хвосту второй EXE...
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 15.02.10 10:56. Заголовок: Тогда сразу вопрос, ..
Тогда сразу вопрос, а как запустить этот "подклеейнный" exe-шник ?
|
|
|
|
| |
Пост N: 62
Зарегистрирован: 02.10.08
|
|
Отправлено: 16.02.10 14:59. Заголовок: Ну, как... Видимо Fr..
Ну, как... Видимо Fread() основного ехе на чтение, Fwrite()-> Новый_ехешник.exe и типа запустить... Сразу говорю, - сам не пробовал...
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 16.02.10 20:08. Заголовок: Ну это понятно. А во..
Ну это понятно. А вот можно ли вырезанный блок сохранить как exe-шник в памяти и пустить его оттуда ? Я как-то развлекался с джойнером приклеивая exe-шники к картинкам. Все работало, но антивирус ругался на мои творения, мол троян. Тоже не вариант.
|
|
|
|
| |
Пост N: 63
Зарегистрирован: 02.10.08
|
|
Отправлено: 17.02.10 11:50. Заголовок: Честно говоря с памя..
Честно говоря с памятью не пробовал, даже не знаю как подступиться, извини...
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 17.02.10 14:29. Заголовок: Loach пишет: с памя..
Loach пишет: :))) А в мемо поле нельзя засадить?
|
|
|
|
| постоянный участник
|
Пост N: 1125
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.02.10 14:58. Заголовок: ММК пишет: А в мем..
ММК пишет: цитата: | А в мемо поле нельзя засадить? |
| Лучше в BLOB ....
|
|
|
|
| |
Пост N: 64
Зарегистрирован: 02.10.08
|
|
Отправлено: 17.02.10 15:31. Заголовок: А как все это решает..
А как все это решает вопрос запуска приложения "из памяти" ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 17.02.10 16:13. Заголовок: Loach пишет: А как ..
Loach пишет: цитата: | А как все это решает вопрос запуска приложения "из памяти" ? |
| Ну, для рывка, решит вопрос с антивирусом. А с памятью это ты Сережа придумал :))) У меня тем более с памятью не очень :(( Может прочитать в GGG , а потом RUN GGG.... :))) Как в клубе "Что, где , как "
|
|
|
|
| постоянный участник
|
Пост N: 143
Зарегистрирован: 06.02.07
|
|
Отправлено: 19.02.10 13:24. Заголовок: Прошу прощенья за во..
Прошу прощенья за вопрос, благородные доны... :) - а зачем всё это извратованье надо? в смысле - брать откуда-то чего-то заранее заготовленное, превращать его "на лету" в EXEшник и запускать... видимо (как понимаю) чтобы не класть в папку с приложением "подчиненные" (вызываемые из него) EXEшки (чтобы юзер чего не надо не тыкал - ибо "чего не надо" на виду не лежит)?.. или я не прав - и в этом есть некая (пока) недоступная мне цель..
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 19.02.10 14:54. Заголовок: Нет, никакой недос..
Нет, никакой недоступной пониманию цели не преследуется. Ваша логика безупречна. Я нашел пару реализаций на С, но все сложно, надо PE понимать. Я такое не потяну. С наступающим.
|
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 20.02.10 14:57. Заголовок: fil пишет: Я такое ..
fil пишет: А под хорошую закусочку ? :)) Вот смотри, забугорцы вроде нормальный вариант предложили, а с такой сишной пр-кой думаю наши спецы тебе помогут! http://boxedapp.com/boxedappsdk/ С наступающим :)))
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 20.02.10 19:50. Заголовок: Ну ежели спецы помог..
Ну ежели спецы помогут .. Но пока я этим импортным людям объяснил чего хочу - уфф. Каждый, в стиле Петра, спрашивал - чего ОН хочет. И советовали - кликни, мол, 2 раз на экзешник он и запустится (in memory)
|
|
|
|
| постоянный участник
|
Пост 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);
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 21.02.10 01:12. Заголовок: Возможно я обяснял н..
Возможно я обяснял не так, хотел не того.. Особенно не зная как и где я это объяснял, и что мне ответили Сайт это я смотрел и функции эти на C++. Но вот как это реализовать под xHarbour ?
|
|
|
|
| постоянный участник
|
Пост 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 ТМ со товарищи ).
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 21.02.10 12:19. Заголовок: BoxedAppSDK у меня е..
|
|
|
|
| постоянный участник
|
Пост 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 ) нужен..
|
|
|
|
| постоянный участник
|
Пост 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.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 21.02.10 13:37. Заголовок: Ну так и замечательн..
Ну так и замечательно. Спасибо за помощь.
|
|
|
Ответов - 23
, стр:
1
2
All
[только новые]
|
|