PDA

Ver la Versión Completa : Signature Scanner en delphi


carlosprotos
07-03-2015, 04:21:59
He visto a alguien usar ese método en delphi pero no me lo quizo mostrarr , son funciones que hacen encontrar una dirección en la memoria
a traves de una serie de bytes o algo asi . Scanner -> ($A1,$04,$00 ,$00, $55 ,$75,$0B,$44) , (xx??xxxx) o algo asi en c++ , pero no delphi alguien sabe al respecto?

Casimiro Notevi
07-03-2015, 09:53:48
Como no te expliques mejor con lo que necesitas.

Mav
08-03-2015, 18:23:17
¿Qe es lo que buscas realmente¿ :
Escanear un portable/ejecutable para saber con que compilador está hecho,
saber si está " empaquetado", y con qué packer ... etc ; al estilo de Peid, Pexplorer, RDG Packer Detector, DIE, protection_ID, ExeInfoPE ...etc :):)

carlosprotos
09-03-2015, 16:33:28
¿Qe es lo que buscas realmente¿ :
Escanear un portable/ejecutable para saber con que compilador está hecho,
saber si está " empaquetado", y con qué packer ... etc ; al estilo de Peid, Pexplorer, RDG Packer Detector, DIE, protection_ID, ExeInfoPE ...etc :):)

Una asignature escanner , que es un auto buscador de address con cadena de bytes -> en si es un buscador de address para editar algunos bytes.

Bytes 00 00 00 00 00 00 00 00 ,etc -> yo quiero editar 2 bytes (ejemplo)
asi , en c++ creo que hay mas acerca de eso.

Mav
09-03-2015, 23:42:30
Vale, lo que buscas entonces es un "Patcher", algo así como esto:

{$APPTYPE CONSOLE}
Program patch_programa;

Uses Windows;
Const
IntroMessage : string = 'Programa 2.70, Crack by cualquiera!...';
TargetFileName : string = 'programa.exe';
TargetBackupName : string = 'programa.bak';
TargetFileLength : longint = 568352;
NumberOfBytes = 21;
TargetOffsets : Array [1..NumberOfBytes] Of Longint = ($000B1F,$0043C0,$007EA9,$007EAA,$00ACA3,$00E3D4,$00E69F,$00EC77,$00ECAC,$00ECED,$00F8D4,$01772B,
$01772C,$01772D,$0178F6,$01A36C,$01AD5F,$01AD60,$01AD61,$01AE54,$021055);
TargetBytes : Array [1..NumberOfBytes] Of Byte = ($EB,$EB,$00,$00,$00,$00,$EB,$EB,$EB,$EB,$EB,$E9,$F3,$00,$EB,$00,$E9,$BE,$00,$EB,$EB);

var f: File Of Byte;
ErCode: Byte;

Function FileOpen:Integer;
Begin
{$I-}
Assign(f,TargetFileName);
FileMode := 2;
Reset(F);
{$I+}
ErCode:=0;
If IOResult<>0 Then ErCode:=1 Else
If FileSize(f)<>TargetFileLength Then ErCode:=2;
If ErCode=0 Then FileOpen:=0 Else FileOpen:=-1;
End;

Procedure ShowErr(ErCode:Byte);
Begin
WriteLn;
Write('Error..: ') ;
Case ErCode Of
1: Writeln(TargetFileName,' No se encuentra o se está usando.');
2: Writeln(TargetFileName,' :Tamaño de archivo distinto. Será otra versión.');
End;
Readln;
Halt;
End;

Procedure FileModifyAndClose;
var j:byte;
Begin
{$I-}
For j:=1 to NumberOfBytes Do
Begin
Seek(f,TargetOffsets[j]);
Write(f,TargetBytes[j]);
End;
Close(F);
{$I+}
If IOResult=0 Then Writeln(TargetFileName,' Se ha cambiado con éxito!')
Else Writeln('Eeeeee! Error desconocido ',TargetFileName,' !');
End;

Procedure ShowIntro;
Begin
Writeln;
Writeln(IntroMessage);
Writeln;
End;

Procedure MakeBackup;
begin
Write('Haciendo copia del archivo : ');
If CopyFile(PChar(TargetFileName),PChar(TargetBackupName),True) Then
Writeln(TargetBackupName) Else
Begin
Writeln('Error : Ya existe la copia o no hay espacio en disco.');
ReadLn;
Halt;
End;
end;

Begin
ShowIntro;
If FileOpen<0 Then ShowErr(ErCode) Else MakeBackup;
FileModifyAndClose;
ReadLn;
End.

escafandra
10-03-2015, 00:27:03
Revisa este hilo (http://clubdelphi.com/foros/showthread.php?t=73268).

Saludos.