|
|
|
@ -116,10 +116,13 @@ def first_kernel_ro_page() -> pwndbg.lib.memory.Page | None:
|
|
|
|
if base is None:
|
|
|
|
if base is None:
|
|
|
|
return None
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
banner = pwndbg.aglib.symbol.lookup_symbol_addr("linux_banner")
|
|
|
|
fallback_mappings = []
|
|
|
|
fallback_mappings = []
|
|
|
|
for mapping in pwndbg.aglib.kernel.vmmap.kernel_vmmap_pages():
|
|
|
|
for mapping in pwndbg.aglib.kernel.vmmap.kernel_vmmap_pages():
|
|
|
|
if mapping.vaddr < base:
|
|
|
|
if mapping.vaddr < base:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
|
|
|
|
if banner is not None and banner in mapping:
|
|
|
|
|
|
|
|
return mapping
|
|
|
|
if not mapping.read or mapping.write or mapping.execute:
|
|
|
|
if not mapping.read or mapping.write or mapping.execute:
|
|
|
|
fallback_mappings.append(mapping)
|
|
|
|
fallback_mappings.append(mapping)
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
@ -148,6 +151,8 @@ def kconfig() -> pwndbg.lib.kernel.kconfig.Kconfig | None:
|
|
|
|
config_end = pwndbg.aglib.symbol.lookup_symbol_addr("kernel_config_data_end")
|
|
|
|
config_end = pwndbg.aglib.symbol.lookup_symbol_addr("kernel_config_data_end")
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
mapping = first_kernel_ro_page()
|
|
|
|
mapping = first_kernel_ro_page()
|
|
|
|
|
|
|
|
if mapping is None:
|
|
|
|
|
|
|
|
return None
|
|
|
|
result = next(pwndbg.search.search(b"IKCFG_ST", mappings=[mapping]), None)
|
|
|
|
result = next(pwndbg.search.search(b"IKCFG_ST", mappings=[mapping]), None)
|
|
|
|
|
|
|
|
|
|
|
|
if result is not None:
|
|
|
|
if result is not None:
|
|
|
|
@ -173,7 +178,7 @@ def kcmdline() -> str:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pwndbg.lib.cache.cache_until("start")
|
|
|
|
@pwndbg.lib.cache.cache_until("start")
|
|
|
|
def kversion() -> str:
|
|
|
|
def kversion() -> str | None:
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
if has_debug_symbols("linux_banner"):
|
|
|
|
if has_debug_symbols("linux_banner"):
|
|
|
|
version_addr = pwndbg.aglib.symbol.lookup_symbol_addr("linux_banner")
|
|
|
|
version_addr = pwndbg.aglib.symbol.lookup_symbol_addr("linux_banner")
|
|
|
|
|