From b958d620552abb724379b0755ae5f55267f5fec9 Mon Sep 17 00:00:00 2001 From: jxuanli Date: Wed, 5 Nov 2025 12:41:56 -0800 Subject: [PATCH] addressed comments --- pwndbg/aglib/kernel/paging.py | 17 +++++------------ pwndbg/aglib/kernel/vmmap.py | 3 ++- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/pwndbg/aglib/kernel/paging.py b/pwndbg/aglib/kernel/paging.py index e02702913..07513f7cb 100644 --- a/pwndbg/aglib/kernel/paging.py +++ b/pwndbg/aglib/kernel/paging.py @@ -384,22 +384,15 @@ class Aarch64PagingInfo(ArchPagingInfo): @property @pwndbg.lib.cache.cache_until("stop") def module_start(self): - # this is only used for marking the end of module_start - self.module_end = -1 res = None - for page in kernel_vmmap_pages(): + for page in kernel_vmmap_pages()[::-1]: if page.start >= self.kbase: + continue + if page.start < self.vmalloc: break if page.execute: res = page.start - if res is None: - 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 + break return res def _PAGE_OFFSET(self, va): # aka PAGE_START @@ -576,7 +569,7 @@ class Aarch64PagingInfo(ArchPagingInfo): page = pages[i] if page.start > self.kbase + self.ksize: continue - if self.module_start <= page.start < self.module_end: + if self.module_start <= page.start < self.kbase: page.objfile = self.KERNELDRIVER continue if page.start < self.kbase: diff --git a/pwndbg/aglib/kernel/vmmap.py b/pwndbg/aglib/kernel/vmmap.py index 82b89abf8..653a6985e 100644 --- a/pwndbg/aglib/kernel/vmmap.py +++ b/pwndbg/aglib/kernel/vmmap.py @@ -34,6 +34,7 @@ class KernelVmmap: self.pi = pwndbg.aglib.kernel.arch_paginginfo() if self.pi: self.sections = self.pi.markers() + self.adjust() def get_name(self, addr: int) -> str: 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() kv = KernelVmmap(pages) - kv.adjust() if kernel_vmmap_mode == "monitor" and pwndbg.aglib.arch.name == "x86-64": # 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: if page.objfile == kv.pi.ESPSTACK: continue