Core Function PTRRead
From Sputnik Wiki
PTRRead( <ptr>, <type>, <offset> )
Contents |
Description
Read data from a memory pointer optionally starting from a given index.
Parameters
ptr
The pointer to use.
type
The type of data to read
[TYPE] [WHAT IT IS] r Raw bytes c ASCII char C UNICODE char b unsigned byte B signed byte s signed int16 i signed int32 l signed int64 S unsigned int16 I unsigned int32 L unsigned int64 f float d double t pointer
offset
Offset to add to the pointer.
length
Optional; Only valid if type is "r" this defines how many bytes to read.
Return Value
Success: Returns the value requested or -1 if fail.
Failure: Returns null.
Remarks
None.
Example
$PTR = Alloc(300); PTRWrite($PTR, "f", 0, 133.77); PTRWrite($PTR, "l", 4, 777); PTRWrite($PTR, "i", 12, 1221); Println( PTRRead($PTR, "f", 0) ); Println( PTRRead($PTR, "l", 4) ); Println( PTRRead($PTR, "i", 12) ); Free($PTR);
If the type is a NUMBER instead of a STRING this function will READ that many BYTES from the pointer and return it as a binary variable example
#PTRRead($p, 100, 0); # Read 100 bytes from offset 0 #PTRRead($p, 100, 50); # Read 100 bytes from offset 50 #PTRRead($p, 70, 25); # Read 70 bytes from offset 25 my $GameCap = "Pacman 2.4"; my $GamePID = WinGetProcess($GameCap); $Value = GetUTF8Bytes("The Cat"); WriteMem($GamePID, "", 0x400300, $Value); // Grabs the raw UTF8 bytes from ram // and returns them as a binary variable Function GetUTF8Bytes( &$String ) { fixed( $p = $String ) { // Read the whole memory of the string // including all the extra unicode characters // and even grab its null terminator return PTRRead($p, "r", 0, StrLen($String) * @CharSize + 1); } }