En fin, como estoy un poco familiarizado con Delphi, se me ocurrió hacer, o por lo menos comenzar a estudiar sobre el tema de los crypter.
Me baje el código de fuente del OPCypter y a la hora de analizarlo hay lineas que la verdad no entiendo o no les encuentro el sentido...
Creo que es una gran idea analizarlo en conjunto ya que no solo me ayudaría a mi, si no también a otros principiantes.
Por empezar voy a dejar el código entero y más abajo las dudas en cuestión:
Código: Seleccionar todo
unit Builder;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, StdCtrls, uEOF;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
edtFile: TEdit;
btnFile: TButton;
btnBuild: TButton;
btnAbout: TButton;
Open: TOpenDialog;
XPManifest1: TXPManifest;
Save: TSaveDialog;
procedure btnFileClick(Sender: TObject);
procedure btnAboutClick(Sender: TObject);
procedure btnBuildClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function MakeXor(Buffer :String; Key :Integer) :String;
var
i,c,x :Integer;
begin
for i := 1 to Length(Buffer) do
begin
c := Integer(Buffer[i]);
x := c xor Key;
Result := Result + Char(x);
end;
end;
procedure TForm1.btnFileClick(Sender: TObject);
begin
if Open.Execute then
edtFile.Text := Open.FileName;
end;
procedure TForm1.btnAboutClick(Sender: TObject);
begin
MessageBoxA(0,'Open Source Cryter'+#10+#13+
''+#10+#13+
'Author: Xash'+#10+#13+
'Description: Simple a crypter for beginner'+#10+#13+
'Thanks: steve10120'+#10+#13+
''+#10+#13+
'[FR] www.hacksecu.com'+#10+#13+
'[EN] www.hackhound.org', 'About', 64);
end;
procedure TForm1.btnBuildClick(Sender: TObject);
var
Buffer :String;
begin
if not Save.Execute then
Exit;
Buffer := ReadFile(edtFile.Text);
Buffer := MakeXor(Buffer, 1337);
MessageBoxA(0, 'Crypted!', 'Information', 64);
end;
end.
Código: Seleccionar todo
function MakeXor(Buffer :String; Key :Integer) :String;
var
i,c,x :Integer;
begin
for i := 1 to Length(Buffer) do
begin
c := Integer(Buffer[i]);
x := c xor Key;
Result := Result + Char(x);
end;
end;
Otra pregunta es si el Key es lo que determina la encriptación del archivo.
Código: Seleccionar todo
CopyFile(PChar(ExtractFilePath(ParamStr(0))+'Stub/Stub.exe'), PChar(Save.FileName), False);
WriteEof(Save.FileName, Buffer, '[1]', '[2]');
EOF, buscando en internet encontré que es el final del archivo, vi que en varios crypters lo nombran, ¿Cuál es la finalidad? ¿Qué significan esos [1] y [2]?
Y finalmente, se que es una duda bruta pero tampoco entiendo la finalidad del Stub y su trabajo en conjunto con el crypter, si alguien me lo pudiera explicar se lo agradecería.
Desde ya muchas gracias. Saludos.