[Delphi] DH Server Manager 0.3

Iniciado por BigBear, 24 Abril 2015, 17:25 PM

0 Miembros y 1 Visitante están viendo este tema.

BigBear

Un simple programa en Delphi para modificar ejecutables con las siguientes opciones :

  • File Pumper
  • Extension Spoofer
  • Icon Changer

    Una imagen :



    Código (delphi) [Seleccionar]

    // DH Server Manager 0.3
    // (C) Doddy Hackman 2015
    // Based on : http://www.nerdprogrammer.in/2014/05/the-rats-crew-aio.html

    unit dhserverman;

    interface

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

    type
      TForm1 = class(TForm)
        PageControl1: TPageControl;
        TabSheet1: TTabSheet;
        TabSheet2: TTabSheet;
        TabSheet3: TTabSheet;
        GroupBox1: TGroupBox;
        ruta_archivo: TEdit;
        Button1: TButton;
        GroupBox2: TGroupBox;
        Button2: TButton;
        StatusBar1: TStatusBar;
        TabSheet5: TTabSheet;
        GroupBox3: TGroupBox;
        GroupBox4: TGroupBox;
        count: TEdit;
        UpDown1: TUpDown;
        tipo_cantidad: TComboBox;
        GroupBox5: TGroupBox;
        ruta_icono: TEdit;
        Button3: TButton;
        GroupBox6: TGroupBox;
        Image1: TImage;
        OpenDialog1: TOpenDialog;
        OpenDialog2: TOpenDialog;
        GroupBox7: TGroupBox;
        usefilepumper: TCheckBox;
        iconchanger: TCheckBox;
        extensiones: TComboBox;
        selectextension: TCheckBox;
        GroupBox8: TGroupBox;
        mi_extension: TCheckBox;
        esta_extension: TEdit;
        extensionchanger: TCheckBox;
        TabSheet4: TTabSheet;
        Image2: TImage;
        GroupBox9: TGroupBox;
        Image3: TImage;
        Memo1: TMemo;
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(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;

    //

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      if OpenDialog1.Execute then
      begin
        ruta_archivo.Text := OpenDialog1.FileName;
      end;
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    var
      change: dword;
      valor: string;
      tipocantidad: string;
      tipoextension: string;
      extensionacambiar: string;
    begin

      if not(FileExists(ruta_archivo.Text)) then
      begin
        ShowMessage('Select File to change');
      end
      else
      begin

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

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

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

        if (extensionchanger.Checked) then
        begin
          if not(selectextension.Checked and mi_extension.Checked) then
          begin
            if (selectextension.Checked) then
            begin
              extensionacambiar := extensiones.Items[extensiones.ItemIndex];
              extension_changer(ruta_archivo.Text, extensionacambiar);
            end;
            if (mi_extension.Checked) then
            begin
              extension_changer(ruta_archivo.Text, esta_extension.Text);
            end;
          end;
        end;

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

    end;

    procedure TForm1.Button3Click(Sender: TObject);
    begin
      if OpenDialog2.Execute then
      begin
        ruta_icono.Text := OpenDialog2.FileName;
        Image1.Picture.LoadFromFile(OpenDialog2.FileName);
      end;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      OpenDialog1.InitialDir := GetCurrentDir;
      OpenDialog2.InitialDir := GetCurrentDir;
      OpenDialog2.Filter := 'Icons|*.ico|';
    end;

    end.

    // The End ?


    Un video con ejemplos de uso :

    [youtube=640,360]https://www.youtube.com/watch?v=LPz__TqhQ0E[/youtube]

    Si quieren bajar el programa lo pueden hacer de aca.