cheat-engine/Cheat Engine/pointerparser.pas
2015-02-23 20:02:58 +00:00

48 lines
1 KiB
ObjectPascal

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 unix}
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.