cheat-engine/Cheat Engine/pointerparser.pas
2019-12-19 17:49:30 +01:00

52 lines
1.1 KiB
ObjectPascal
Executable file

unit pointerparser;
{$mode delphi}
interface
uses
Classes, SysUtils;
function getPointerAddress(address: ptruint; const offsets: array of integer; var hasError: boolean): ptruint;
implementation
{$ifdef windows}
uses newkernelhandler, ProcessHandlerUnit;
{$endif}
{$ifdef darwin}
uses macport,newkernelhandler, ProcessHandlerUnit;
{$endif}
{$ifdef jni}
uses unixporthelper, newkernelhandler, ProcessHandlerUnit;
{$endif}
function getPointerAddress(address: ptruint; const offsets: array of integer; var hasError: boolean): ptruint;
var realaddress, realaddress2: PtrUInt;
count: PtrUInt;
check: boolean;
i: integer;
begin
realaddress2:=address;
for i:=length(offsets)-1 downto 0 do
begin
realaddress:=0;
check:=readprocessmemory(processhandle,pointer(realaddress2),@realaddress,processhandler.pointersize,count);
if check and (count=processhandler.pointersize) then
realaddress2:=realaddress+offsets[i]
else
begin
result:=0;
exit;
end;
end;
result:=realAddress2;
hasError:=false;
end;
end.