PDA

Ver la Versión Completa : AOB Scan


Milworm99
19-12-2017, 05:48:06
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-signature-scanner-delphi-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 (http://clubdelphi.com/foros/showthread.php?p=505954) te sirve para empezar.

Saludos.

Milworm99
20-12-2017, 15:37:18
Seguro que este tema (http://clubdelphi.com/foros/showthread.php?p=505954) te sirve para empezar.

Saludos.

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