Tema: AOB Scan
Ver Mensaje Individual
  #7  
Antiguo 20-12-2017
Milworm99 Milworm99 is offline
Miembro
NULL
 
Registrado: nov 2017
Posts: 31
Reputación: 0
Milworm99 Va por buen camino
Cita:
Empezado por escafandra Ver Mensaje
Seguro que este tema te sirve para empezar.

Saludos.
Código:
Program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function Match(pData: PByte; bMask: PByte; szMask: PChar): Boolean;
begin
  while (szMask^ <> #0) do
  begin
    if (szMask^ = 'x') and (pData^ <> bMask^) then
    begin
      Result := false;
      exit;
    end;
    Inc(szMask);
    Inc(pData);
    Inc(bMask);
  end;
  Result:= (szMask^ = #0);
end;

function FindPattern(dwAddress, dwLen : Cardinal; bMask : PBYTE; szMask : PCHAR) : Cardinal;
var
i : Cardinal;
begin
  Result:= 0;
  for i := 0 to dwLen-1 do
    if(Match(PBYTE(dwAddress + i), bMask, szMask)) then
    begin
      Result := Cardinal((dwAddress + i));
      break;
    end;
end;

function test() : string;
begin
  Result := 'Hola'
end;

procedure Fin;
begin
end;

var
  i: Cardinal;
  dwLen: Cardinal;
  szMask: PCHAR;
  bMask: PBYTE;
  Addr: cardinal;
begin
  i := Cardinal($401000);
  dwLen := Cardinal($409000);
  bMask:= @Test;  // bMask contiene el código de la función a buscar puesto que es un puntero a la misma.
  szMask := PCHAR('xxxxxxxxxxx???xxx');
//  MaxLen:= Cardinal(@Fin)-Cardinal(@Test);  // máxima longitud de la máscara
  WriteLn(test);
  Addr:= FindPattern(i, dwLen, bMask, szMask);
  WriteLn(IntToHex(Addr,8));
  ReadLn;
end.
El codigo esta excelente, pero como lo haria para que scanee este Array of byte: 75 ? 38 87 ? ? ? ? 75 ? 8b ce
en un proceso determinado Ejemplo: Prueba.exe y al scanear ese array el address me lo muestre en un edit. Espero tu ayuda, gracias
Responder Con Cita