在 Radare2 中查找映射的内存页标志

逆向工程 视窗 雷达2 内存转储
2021-07-07 14:32:24

我有一个 notepad.exe 的内存转储。Radare 的iS打印部分为我提供了映射文件(可执行文件和它的 dll)以及许多简单标记为“Memory_Section”的部分,据我所知,这些部分是程序映射的内存页以形成堆。Radare 授予这些页面的权限,但不授予它们创建时使用的标志,特别是如果它们是共享的或私有的、保留的或提交的、文件支持的或匿名的等。我认为工作记忆通常是匿名和私有的,但我我在恶意软件分析的背景下工作,所以没有什么是理所当然的。

如何找到特定内存映射的特定类型?这可以静态完成,还是我需要以某种方式模拟内存转储?

1个回答

使用im获取类型和状态

它们不像windbg那样被破译,但你可以得到标志

雷达2

[0x7ff6c5153380]> im~0xcf39d2c000
0xcf39d2c000 +0x4000 rw- paddr=0x0000959e state=0x00001000 type=0x00020000 allocation_protect=0x00000004 Memory_Section
[0x7ff6c5153380]> iS~0xcf39d2c000
2   0x0000959e    0x4000 0xcf39d2c000      0x4000 -rw- Memory_Section_2
[0x7ff6c5153380]>       

风袋

0:003> !vprot cf`39d2c000
BaseAddress:       000000cf39d2c000
AllocationBase:    000000cf39cb0000
AllocationProtect: 00000004  PAGE_READWRITE
RegionSize:        0000000000004000
State:             00001000  MEM_COMMIT
Protect:           00000004  PAGE_READWRITE
Type:              00020000  MEM_PRIVATE

这些是通过调用 VirtualQuery/Ex API 返回的

MEMORY_BASIC_INFORMATION

https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-memory_basic_information