Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Signature Scanner en delphi (https://www.clubdelphi.com/foros/showthread.php?t=87848)

carlosprotos 07-03-2015 04:21:59

Signature Scanner en delphi
 
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

Cita:

Empezado por Mav (Mensaje 489732)
¿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:
Código Delphi [-]
{$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.

Saludos.


La franja horaria es GMT +2. Ahora son las 21:49:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi