Can memoryReadInt read null address?
Code: Select all
pointer_offset = {0x8, 0x24, 0x18};
local pointer = memoryReadIntPtr(proc, staticbase_ptr, pointer_offset);
printf("pointer [%x].\n", pointer);
for i = 0, 768 do
local tmp = memoryReadInt(proc, pointer + i * 4);
local curbaseptr_addr = memoryReadInt(proc, tmp + 0x4);
tarptr_addr = memoryReadInt(proc, curbaseptr_addr + 0x11C); --LINE 422
if( tarptr_addr ~= 0 ) then
tarbaseptr_addr = curbaseptr_addr;
taridptr_addr = tartempptr_addr;
coroutine.yield();
end
end
Code: Select all
pointer [8be0628]
WARNING: Failure reading memory from 0x2D4FDC0 at 0x4 in memoryReadInt(). Error code 299 (Only part of a ReadProcessMemory or WriteProcessMemory request was completed.)
script\pwenak2.lua:422 attempt to perform arithmetic on local 'curbaseptr_addr' (a nill value)
this is the result in auto it
Code: Select all
Local $POINTER = memread(memread(memread(memread($APP_BASE_ADDRESS) + 0x8) + 0x24) + 0x18)
ConsoleWrite("Pointer=" & Hex($POINTER) & @CRLF)
For $I=0 To 768
Local $CUR_BASE = memread(memread($POINTER + $I*0x4) + 0x4)
ConsoleWrite("Cur Base=" & Hex($CUR_BASE) & @CRLF)
ConsoleWrite("TAR Base=" & Hex(memread($cur_base + 0x11C)) & @CRLF)
If $TAR = memread($cur_base + 0x11C) Then
$TAR_BASE = $CUR_BASE
$TARID = $TAR_TEMP
ExitLoop
EndIf
Next
Code: Select all
Pointer=08BE0628
Cur Base=00000000
TAR Base=00000000
Cur Base=00000000
TAR Base=00000000
Cur Base=00000000
TAR Base=00000000
Cur Base=00000000
TAR Base=00000000
Cur Base=00000000
TAR Base=00000000
Cur Base=00000000
TAR Base=00000000
Cur Base=00000000
TAR Base=00000000
Cur Base=158BE160
TAR Base=80104961
Cur Base=13B2A6B8
TAR Base=80104962
Cur Base=159E2DF0
TAR Base=80104963
Cur Base=15F18958
TAR Base=80104964
Cur Base=08FD3740
TAR Base=80104965
Cur Base=15F2E800
TAR Base=80104966
Cur Base=08A08EE0
TAR Base=80104967
Cur Base=164B47F0
TAR Base=80104968