Un programa en Delphi para generar codigo basura y lograr quitar algunas firmas de AV en un malware hecho en Delphi.

Tiene las siguientes opciones :

[+] Generar constantes
[+] Generar variables
[+] Generar varios for
[+] Generar funciones con variables
[+] Generar funciones con for
[+] Generar codigo con todas las funciones anteriores juntas
[+] Se puede establecer una lontigud para cada opcion

Una imagen :

Imagen


El codigo :
// DH Junk Code Maker 0.4
// (C) Doddy Hackman 2016

unit junk;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
  Vcl.ComCtrls, Vcl.Styles.Utils.Menus, Vcl.Styles.Utils.SysStyleHook,
  Vcl.Styles.Utils.SysControls, Math, Vcl.Menus, Vcl.Imaging.pngimage,
  Vcl.ImgList;

type
  TFormHome = class(TForm)
    imgLogo: TImage;
    gbOutput: TGroupBox;
    mmOutput: TMemo;
    gbEnterLength: TGroupBox;
    txtLength: TEdit;
    udLength: TUpDown;
    gbType: TGroupBox;
    cmbOptions: TComboBox;
    gbOptions: TGroupBox;
    btnGenerate: TButton;
    ppOptions: TPopupMenu;
    copy: TMenuItem;
    clear: TMenuItem;
    ilIconos: TImageList;
    procedure btnGenerateClick(Sender: TObject);
    procedure clearClick(Sender: TObject);
    procedure copyClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormHome: TFormHome;

implementation

{$R *.dfm}
// Functions

function dh_generate_string(option: string; length_string: integer): string;
const
  letters1: array [1 .. 26] of string = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
    'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
    'x', 'y', 'z');
const
  letters2: array [1 .. 26] of string = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
    'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
    'X', 'Y', 'Z');
const
  numbers: array [1 .. 10] of string = ('0', '1', '2', '3', '4', '5', '6', '7',
    '8', '9');

const
  cyrillic: array [1 .. 44] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?');

const
  no_idea1: array [1 .. 13] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?');

const
  no_idea2: array [1 .. 28] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '??', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '??');

const
  no_idea3: array [1 .. 13] of string = ('??', '?', '?', '?', '?', '?', '?',
    '_', '?', '`', '?', '_', '?');

const
  no_idea4: array [1 .. 26] of string = ('?', '?', '€', '?', 'l', '?', '™', 'O',
    'e', '?', '?', '?', '?', '?', '?', '?', '?', '-', '/', '·', 'v', '8', '?',
    '˜', '?', '=');

const
  no_idea5: array [1 .. 33] of string = ('?', '?', '?', '?', 'n', '?', '?', '?',
    '?', '?', '?', 'G', '?', '?', '?', 'e', 'ß', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '8', 'S', '?');

const
  no_idea6: array [1 .. 32] of string = ('?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?', '?',
    '?', '?', '?', '?', '?', '?', '?', '?', '?');
var
  code: string;
  gen_now: string;
  i: integer;
  index: integer;
begin

  gen_now := '';

  for i := 1 to length_string do
  begin
    if (option = '1') then
    begin
      gen_now := gen_now + letters1[RandomRange(1, Length(letters1) + 1)];
    end
    else if (option = '2') then
    begin
      gen_now := gen_now + letters2[RandomRange(1, Length(letters2) + 1)];
    end
    else if (option = '3') then
    begin
      gen_now := gen_now + numbers[RandomRange(1, Length(numbers) + 1)];
    end
    else if (option = '4') then
    begin
      gen_now := gen_now + cyrillic[RandomRange(1, Length(cyrillic) + 1)];
    end
    else if (option = '5') then
    begin
      gen_now := gen_now + no_idea1[RandomRange(1, Length(no_idea1) + 1)];
    end
    else if (option = '6') then
    begin
      gen_now := gen_now + no_idea2[RandomRange(1, Length(no_idea2) + 1)];
    end
    else if (option = '7') then
    begin
      gen_now := gen_now + no_idea3[RandomRange(1, Length(no_idea3) + 1)];
    end
    else if (option = '8') then
    begin
      gen_now := gen_now + no_idea4[RandomRange(1, Length(no_idea4) + 1)];
    end
    else if (option = '9') then
    begin
      gen_now := gen_now + no_idea5[RandomRange(1, Length(no_idea5) + 1)];
    end
    else if (option = '10') then
    begin
      gen_now := gen_now + no_idea6[RandomRange(1, Length(no_idea6) + 1)];
    end
    else
    begin
      gen_now := gen_now + letters1[RandomRange(1, Length(letters1) + 1)];
    end;
  end;
  code := gen_now;

  Result := code;
end;

function message_box(title, message_text, type_message: string): string;
begin
  if not(title = '') and not(message_text = '') and not(type_message = '') then
  begin
    try
      begin
        if (type_message = 'Information') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONINFORMATION);
        end
        else if (type_message = 'Warning') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONWARNING);
        end
        else if (type_message = 'Question') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONQUESTION);
        end
        else if (type_message = 'Error') then
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONERROR);
        end
        else
        begin
          MessageBox(FormHome.Handle, PChar(message_text), PChar(title),
            MB_ICONINFORMATION);
        end;
        Result := '[+] MessageBox : OK';
      end;
    except
      begin
        Result := '[-] Error';
      end;
    end;
  end
  else
  begin
    Result := '[-] Error';
  end;
end;

//

procedure TFormHome.btnGenerateClick(Sender: TObject);
var
  id: string;
  i, y: integer;
  vars, vars2, name, name2, value, value2: string;
  strings, strings2: string;
  functions, code: string;
  limit_random: integer;
begin

  if (StrToInt(txtLength.Text) > 0) then
  begin

    if (cmbOptions.ItemIndex = 0) then
    begin
      for i := 1 to StrToInt(txtLength.Text) do
      begin
        name := dh_generate_string('1', 5);
        value := dh_generate_string('1', 20);
        mmOutput.Lines.Add('const ' + name + '=' + '''' + value + '''' + ';');
      end;
      mmOutput.Lines.Add('');
    end
    else if (cmbOptions.ItemIndex = 1) then
    begin

      vars := 'var ';
      strings := '';

      for i := 1 to StrToInt(txtLength.Text) do
      begin
        name := dh_generate_string('1', 5);
        value := dh_generate_string('1', 20);
        if (i = StrToInt(txtLength.Text)) then
        begin
          vars := vars + name + ':string;';
        end
        else
        begin
          vars := vars + name + ',';
        end;
        if (i = StrToInt(txtLength.Text)) then
        begin
          strings := strings + name + ':=' + '''' + value + '''' + ';';
        end
        else
        begin
          strings := strings + name + ':=' + '''' + value + '''' + ';' +
            sLineBreak;
        end;
      end;

      id := dh_generate_string('1', 5);

      code := 'procedure gen_vars_' + id + ';' + sLineBreak + vars + sLineBreak
        + 'begin' + sLineBreak + strings + sLineBreak + 'end;';

      mmOutput.Lines.Add(code);
      mmOutput.Lines.Add('');

    end
    else if (cmbOptions.ItemIndex = 2) then
    begin
      vars := 'var i,y:integer;';
      strings := '';
      for i := 1 to StrToInt(txtLength.Text) do
      begin
        value := dh_generate_string('3', 2);

        if (i = StrToInt(txtLength.Text)) then
        begin
          strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' + sLineBreak +
            sLineBreak;
          strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
            'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;';
        end
        else
        begin
          strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' + sLineBreak +
            sLineBreak;
          strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
            'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;' + sLineBreak
            + sLineBreak;
        end;
      end;

      id := dh_generate_string('1', 5);

      code := 'procedure gen_fors_' + id + ';' + sLineBreak + vars + sLineBreak
        + 'begin' + sLineBreak + strings + sLineBreak + 'end;';

      mmOutput.Lines.Add(code);
      mmOutput.Lines.Add('');

    end
    else if (cmbOptions.ItemIndex = 3) then
    begin
      code := '';
      functions := '';

      for i := 1 to StrToInt(txtLength.Text) do
      begin
        vars := 'var ';
        strings := '';
        limit_random := StrToInt(dh_generate_string('3', 1));
        if (limit_random = 0) then
        begin
          limit_random := 5;
        end;
        for y := 1 to limit_random do
        begin
          name := dh_generate_string('1', 5);
          value := dh_generate_string('1', 20);
          if (y = limit_random) then
          begin
            vars := vars + name + ':string;';
          end
          else
          begin
            vars := vars + name + ',';
          end;
          if (y = limit_random) then
          begin
            strings := strings + name + ':=' + '''' + value + '''' + ';';
          end
          else
          begin
            strings := strings + name + ':=' + '''' + value + '''' + ';' +
              sLineBreak;
          end;
        end;

        id := dh_generate_string('1', 5);

        if (i = StrToInt(txtLength.Text)) then
        begin
          functions := 'function gen_vars_' + id + '():string;' + sLineBreak +
            vars + sLineBreak + 'begin' + sLineBreak + strings + sLineBreak +
            'Result :=' + '''' + id + '''' + ';' + sLineBreak + 'end;' +
            sLineBreak;
        end
        else
        begin
          functions := 'function gen_vars_' + id + '():string;' + sLineBreak +
            vars + sLineBreak + 'begin' + sLineBreak + strings + sLineBreak +
            'Result :=' + '''' + id + '''' + ';' + sLineBreak + 'end;' +
            sLineBreak + sLineBreak;
        end;

        code := code + functions;

      end;

      mmOutput.Lines.Add(code);
      // mmOutput.Lines.Add('');
    end
    else if (cmbOptions.ItemIndex = 4) then
    begin

      code := '';

      for i := 1 to StrToInt(txtLength.Text) do
      begin

        vars := 'var i,y:integer;';
        strings := '';
        limit_random := StrToInt(dh_generate_string('3', 1));

        if (limit_random = 0) then
        begin
          limit_random := 5;
        end;
        for y := 1 to limit_random do
        begin
          value := dh_generate_string('3', 2);

          if (i = limit_random) then
          begin
            strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' +
              sLineBreak;
            strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
              'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;' +
              sLineBreak;
          end
          else
          begin
            strings := strings + 'i := 0;' + sLineBreak + 'y := 0;' +
              sLineBreak;
            strings := strings + 'for i := 0 to ' + value + ' do' + sLineBreak +
              'begin' + sLineBreak + 'inc(y);' + sLineBreak + 'end;' +
              sLineBreak;
          end;
        end;

        id := dh_generate_string('3', 5);

        if (i = StrToInt(txtLength.Text)) then
        begin
          functions := 'function gen_fors_' + id + '():integer();' + sLineBreak
            + vars + sLineBreak + 'begin' + sLineBreak + strings + 'Result :=' +
            id + ';' + sLineBreak + 'end;' + sLineBreak;
        end
        else
        begin
          functions := 'function gen_fors_' + id + '():integer();' + sLineBreak
            + vars + sLineBreak + 'begin' + sLineBreak + strings + 'Result :=' +
            id + ';' + sLineBreak + 'end;' + sLineBreak + sLineBreak;
        end;

        code := code + functions;

      end;

      mmOutput.Lines.Add(code);
      // mmOutput.Lines.Add('');

    end
    else if (cmbOptions.ItemIndex = 5) then
    begin

      code := '';
      functions := '';

      for i := 1 to StrToInt(txtLength.Text) do
      begin

        vars := 'var ';
        strings := '';
        vars2 := 'var ';
        strings2 := '';

        limit_random := StrToInt(dh_generate_string('3', 1));

        if (limit_random = 0) then
        begin
          limit_random := 5;
        end;
        for y := 1 to limit_random do
        begin
          name := dh_generate_string('1', 20);
          name2 := dh_generate_string('1', 20);
          value := dh_generate_string('1', 20);
          value2 := dh_generate_string('3', 2);

          if (y = limit_random) then
          begin
            vars := vars + name + ':string;';
          end
          else
          begin
            vars := vars + name + ',';
          end;

          if (y = limit_random) then
          begin
            strings := strings + name + ':=' + '''' + value + '''' + ';';
          end
          else
          begin
            strings := strings + name + ':=' + '''' + value + '''' + ';' +
              sLineBreak;
          end;

          vars2 := 'var i,y:integer;';

          if (y = limit_random) then
          begin
            strings2 := strings2 + 'i := 0;' + sLineBreak + 'y := 0;' +
              sLineBreak;
            strings2 := strings2 + 'for i := 0 to ' + value2 + ' do' +
              sLineBreak + 'begin' + sLineBreak + 'inc(y);' + sLineBreak +
              'end;' + sLineBreak;
          end
          else
          begin
            strings2 := strings2 + 'i := 0;' + sLineBreak + 'y := 0;' +
              sLineBreak;
            strings2 := strings2 + 'for i := 0 to ' + value2 + ' do' +
              sLineBreak + 'begin' + sLineBreak + 'inc(y);' + sLineBreak +
              'end;' + sLineBreak;
          end;
        end;

        id := dh_generate_string('1', 5);

        if (i = StrToInt(txtLength.Text)) then
        begin
          functions := 'function gen_functions_' + id + '():string;' +
            sLineBreak + vars + sLineBreak + vars2 + sLineBreak + 'begin' +
            sLineBreak + strings + sLineBreak + strings2 + 'Result :=' + '''' +
            id + '''' + ';' + sLineBreak + 'end;' + sLineBreak;
        end
        else
        begin
          functions := 'function gen_functions_' + id + '():string;' +
            sLineBreak + vars + sLineBreak + vars2 + sLineBreak + 'begin' +
            sLineBreak + strings + sLineBreak + strings2 + 'Result :=' + '''' +
            id + '''' + ';' + sLineBreak + 'end;' + sLineBreak + sLineBreak;
        end;

        code := code + functions;
      end;

      mmOutput.Lines.Add(code);

    end;

    message_box('DH Junk Code Maker 0.4', 'Enjoy the junk source',
      'Information');
  end
  else
  begin
    message_box('DH Junk Code Maker 0.4',
      'The length should be greater than zero', 'Warning');
  end;
end;

procedure TFormHome.clearClick(Sender: TObject);
begin
  mmOutput.clear;
  message_box('DH Junk Code Maker 0.4', 'Output cleaned', 'Information');
end;

procedure TFormHome.copyClick(Sender: TObject);
begin
  mmOutput.SelectAll;
  mmOutput.CopyToClipboard;
  message_box('DH Junk Code Maker 0.4', 'Output copied to the clipboard',
    'Information');
end;

end.

// The End ?
Si quieren bajar el programa lo pueden hacer de aca :

[Enlace externo eliminado para invitados].
[Enlace externo eliminado para invitados].

Eso seria todo.
Gracias
"Concentrarse en las fortalezas, reconocer las debilidades, las oportunidades y tomar la guardia contra las amenazas."

―Sun Tzu
Responder

Volver a “Nuestros Programas”