|
|
|
@ -40,12 +40,15 @@ def find_zone_offsets() -> Tuple[int, int, int, int, int]:
|
|
|
|
for i in range(20):
|
|
|
|
for i in range(20):
|
|
|
|
char_ptr = pwndbg.aglib.memory.u64(ptr)
|
|
|
|
char_ptr = pwndbg.aglib.memory.u64(ptr)
|
|
|
|
ptr += 8
|
|
|
|
ptr += 8
|
|
|
|
if (
|
|
|
|
name_str = None
|
|
|
|
pwndbg.aglib.memory.string(char_ptr).decode()
|
|
|
|
if pwndbg.aglib.memory.is_kernel(char_ptr):
|
|
|
|
in pwndbg.aglib.kernel.symbol.POSSIBLE_ZONE_NAMES
|
|
|
|
try:
|
|
|
|
):
|
|
|
|
name_str = pwndbg.aglib.memory.string(char_ptr).decode()
|
|
|
|
name_off = i * 8 + pcp_off # plus 1 to skip over previous
|
|
|
|
except Exception:
|
|
|
|
break
|
|
|
|
continue
|
|
|
|
|
|
|
|
if name_str is not None and name_str in pwndbg.aglib.kernel.symbol.POSSIBLE_ZONE_NAMES:
|
|
|
|
|
|
|
|
name_off = i * 8 + pcp_off
|
|
|
|
|
|
|
|
break
|
|
|
|
assert name_off, "can't find name offset"
|
|
|
|
assert name_off, "can't find name offset"
|
|
|
|
prev = pwndbg.aglib.memory.u64(ptr)
|
|
|
|
prev = pwndbg.aglib.memory.u64(ptr)
|
|
|
|
ptr += 8
|
|
|
|
ptr += 8
|
|
|
|
|