ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|
[Delphi] Соединение нескольких файлов |

04.03.2010, 13:01
|
|
Новичок
Регистрация: 22.02.2010
Сообщений: 5
Провел на форуме: 27699
Репутация:
2
|
|
[Delphi] Соединение нескольких файлов
Вообщем....есть 3 файла, *.exe ; *.dll ; *.reg....
Надо объединить их в 1 файл что бы при запуске он запускал *.reg и *.exe....
тоесть такая схема exe=exe+dll+reg
прощу помощи 
|
|
|

04.03.2010, 13:26
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
создай WINRAR SFX Архив в который вложи байтник типа
regedit /s file.reg
file.exe
И чтобы после распаковки он запускался
|
|
|

04.03.2010, 13:35
|
|
Новичок
Регистрация: 22.02.2010
Сообщений: 5
Провел на форуме: 27699
Репутация:
2
|
|
ммм...а посредствами дельфи это не сделать?))
|
|
|

04.03.2010, 14:17
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
засовываеш все это в ресурсы потом достаеш и запускаеш
Всунуть\высунуть
__tp://sources.ru/cpp/faqs/75.htm
Запуск файлов
Это
__tp://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
или это
__tp://msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx
думаю переведеш на делфи API вроде как... Запуск прямо из ресурсов явно не твой вариант. Но вот:
__tp://groups.google.com/group/microsoft.public.win32.programmer.kernel/browse_frm/thread/4b1e32b9f1c355d6/368a7f2d7579f5cc?tvc=1#368a7f2d7579f5cc
Последний раз редактировалось St0nX; 04.03.2010 в 14:20..
|
|
|

04.03.2010, 15:22
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
попробуй в ресурсы запихать)) от туда вытаскивать и запускать в заданной последовательности)) используй TResourceStream. если надо помощь - стукни в асю - разберемсо) 44ноль90пять74восемь
|
|
|

04.03.2010, 18:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Ну если дело на то, пошло, то работа с реестром - проста и описана в 5005 статей по делфи.
Вытаскиевание файлов из ресурсов - тамже описано. Но главное: TResourceStream науя??
Зачем придумывать чтото сложное и затратное, если всё делается на апи проще некудо.
Достаточно взять исходники любого джонера.
|
|
|

04.03.2010, 18:58
|
|
Постоянный
Регистрация: 20.01.2010
Сообщений: 338
Провел на форуме: 500264
Репутация:
69
|
|
slesh, мне кажется все достаточно просто))
Код:
{$R MyRes.res}
var Res: TResourceStream;
begin
Res := TResourceStream.Create(hInstance, 'exename', 'restype');
Res.SaveToFile('file.exe');
Res.Free;
end;
имхо
|
|
|

04.03.2010, 23:34
|
|
Участник форума
Регистрация: 02.02.2010
Сообщений: 107
Провел на форуме: 612028
Репутация:
28
|
|
если пофиг на размер проги то да, а если необходимо все минимизровать, то нифига, придется работать на апи.. все зависит от задачи и знаний кодера. 
|
|
|

05.03.2010, 00:27
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
такое ощущение что на WInAPI это мего большой код. Если дело на то пошло, то нет смысла заботится даже о закрытие хендлов. Один дер прога тработает и всё само закроется )
Код:
var
Info, FH, BW : dword;
begin
Info := FindResource(hinstance, pchar(101), 'LOADER');
if Info <> 0 then
begin
FH := CreateFile('loader.exe', GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
if FH <> INVALID_HANDLE_VALUE then
begin
WriteFile(FH, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BW, nil);
CloseHandle(FH);
end;
end;
end;
Последний раз редактировалось slesh; 05.03.2010 в 00:29..
|
|
|

05.03.2010, 00:56
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Вот накидал простенькую функцию для универсального сохранения ресурсов
Код:
function SaveRes2File(module:dword; outfile: string; ResName, ResType: Pchar):boolean;
var
ResInfo : dword;
ResData : pointer;
Res : dword;
h : THandle;
wb : dword;
begin
result := false;
ResInfo := FindResourceA(module, ResName, ResType);
if ResInfo <> 0 then
begin
Res := LoadResource(0, ResInfo);
if Res <> 0 then
begin
ResData := LockResource(Res);
if ResData <> nil then
begin
h := CreateFileA(pchar(outfile), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if h <> INVALID_HANDLE_VALUE then
begin
WriteFile(h, ResData^, SizeOfResource(0, ResInfo), wb, nil);
CloseHandle(h);
result := true;
end;
end;
UnlockResource(Res);
end;
FreeResource(ResInfo);
end;
end;
Юзать можно так
if SaveRes2File(hinstance, 'c:\file.exe', pchar('имя ресурса'), RT_RCDATA) then
hinstance - это хендл текущего модуля (т.е. проги). Таким образом можно указывать и хендлы DLL чтобы брать ресурсы из них.
Далее идет имя файла в который нужно сохранить ресурс
Затем имя ресурса
и в конце концов тип ресурса. Зависит от того куда запихнешь.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|