addressed comments

pull/3390/head
jxuanli 1 month ago
parent ac34ad5d37
commit b958d62055

@ -384,22 +384,15 @@ class Aarch64PagingInfo(ArchPagingInfo):
@property @property
@pwndbg.lib.cache.cache_until("stop") @pwndbg.lib.cache.cache_until("stop")
def module_start(self): def module_start(self):
# this is only used for marking the end of module_start
self.module_end = -1
res = None res = None
for page in kernel_vmmap_pages(): for page in kernel_vmmap_pages()[::-1]:
if page.start >= self.kbase: if page.start >= self.kbase:
continue
if page.start < self.vmalloc:
break break
if page.execute: if page.execute:
res = page.start res = page.start
if res is None: break
return INVALID_ADDR
prev = None
for page in kernel_vmmap_pages():
if page.start >= res:
if prev is not None and page.start > prev + 0x1000:
break
prev = self.module_end = page.end
return res return res
def _PAGE_OFFSET(self, va): # aka PAGE_START def _PAGE_OFFSET(self, va): # aka PAGE_START
@ -576,7 +569,7 @@ class Aarch64PagingInfo(ArchPagingInfo):
page = pages[i] page = pages[i]
if page.start > self.kbase + self.ksize: if page.start > self.kbase + self.ksize:
continue continue
if self.module_start <= page.start < self.module_end: if self.module_start <= page.start < self.kbase:
page.objfile = self.KERNELDRIVER page.objfile = self.KERNELDRIVER
continue continue
if page.start < self.kbase: if page.start < self.kbase:

@ -34,6 +34,7 @@ class KernelVmmap:
self.pi = pwndbg.aglib.kernel.arch_paginginfo() self.pi = pwndbg.aglib.kernel.arch_paginginfo()
if self.pi: if self.pi:
self.sections = self.pi.markers() self.sections = self.pi.markers()
self.adjust()
def get_name(self, addr: int) -> str: def get_name(self, addr: int) -> str:
if addr is None or self.sections is None: if addr is None or self.sections is None:
@ -423,9 +424,9 @@ def kernel_vmmap() -> Tuple[pwndbg.lib.memory.Page, ...]:
pages = kernel_vmmap_pages() pages = kernel_vmmap_pages()
kv = KernelVmmap(pages) kv = KernelVmmap(pages)
kv.adjust()
if kernel_vmmap_mode == "monitor" and pwndbg.aglib.arch.name == "x86-64": if kernel_vmmap_mode == "monitor" and pwndbg.aglib.arch.name == "x86-64":
# TODO: check version here when QEMU displays the x bit for x64 # TODO: check version here when QEMU displays the x bit for x64
# see: https://github.com/pwndbg/pwndbg/pull/3020#issuecomment-2914573242
for page in pages: for page in pages:
if page.objfile == kv.pi.ESPSTACK: if page.objfile == kv.pi.ESPSTACK:
continue continue

Loading…
Cancel
Save