Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   AOB Scan (https://www.clubdelphi.com/foros/showthread.php?t=92650)

Milworm99 19-12-2017 05:48:06

AOB Scan
 
Hola gente de la comunidad clubdelphi, como puedo hacer un scan automatico de Array of byte de un determinado proceso y que el address me lo muestre en un edit.

Proceso: Ejemplo.exe
Array of byte: 75 ? 38 87 ? ? ? ? 75 ? 8b ce

El address del array of byte scaneado, quiero que me lo muestre en un edit.

He estado investigando y probando varios codigos en diferentes paginas web, pero no me ha funcionado.

Espero su ayuda, muchas gracias

Ñuño Martínez 19-12-2017 11:44:41

No tengo ni idea de qué es lo que quieres hacer. ¿Qué es "un scan automático de ARRAY OF BYTE"? ¿Y ese address del que hablas, qué dirección es, el del inicio del proceso?

Milworm99 19-12-2017 13:15:56

Array of Byte Scan igual a este video: https://www.youtube.com/watch?v=HQtkeu9lt4U&app=desktop

Lo que hace es scanear un array of byte de un determinado proceso y el address se lo muestra en un edit.

Aqui hay un ejemplo, pero no tengo idea como aplicarlo: http://www.delphipraxis.net/180513-s...hi-arxlex.html

Ñuño Martínez 19-12-2017 18:15:50

Algo aclara el vídeo, pero poco. ¿Exactamente, qué quieres hacer?

Milworm99 19-12-2017 23:00:35

Lo que hace el AOB Scan, es scanear un valor en array of byte, en un proceso determinado, y al scanear arroja solo un address, y ese address lo que quiero es que se muestre en un Edit.

Es igual como si scanearamos en el Cheat Engine este array of byte: 75 ? 38 87 ? ? ? ? 75 ? 8b ce en el proceso `Ejemplo.exe` solo me arrojara un address.

Lo mismo quiero hacer en delphi, scanear automaticamente este array of byte: 75 ? 38 87 ? ? ? ? 75 ? 8b ce y el resultado del addres me lo muestre en un edit. A eso le llaman FindPattern/AoBScan

escafandra 20-12-2017 07:47:25

Seguro que este tema te sirve para empezar.

Saludos.

Milworm99 20-12-2017 15:37:18

Cita:

Empezado por escafandra (Mensaje 523627)
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


La franja horaria es GMT +2. Ahora son las 01:00:01.

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