如何在IDA中查看Win64系统Wow64子进程地址空间内加载的全部DLL
查看Wow64进程中32位与64位DLL的方法
Wow64子系统会为32位进程维护两个独立地址空间:32位兼容空间(加载32位模块)和64位内核过渡空间(加载64位核心模块如ntdll.dll)。以下是具体查看方法:
一、查看32位模块(IDA直接操作)
加载32位PE文件后,可通过两种方式获取32位DLL列表:
- 按下
Ctrl+Shift+M打开Modules窗口,直观查看所有加载到32位地址空间的模块(含32位ntdll.dll)。 - 在IDA输出窗口执行IDC脚本:
脚本会自动打印所有32位模块名称。for (auto m = get_first_module(); m != BADADDR; m = get_next_module(m)) { print(get_module_name(m), "\n"); }
二、查看64位模块(需结合系统工具或调试)
64位模块运行在独立的64位地址空间,无法通过静态分析直接获取,可通过以下方式查看:
方法1:系统命令行工具
- 在IDA调试时,通过
Debugger > Process info获取目标32位进程的PID。 - 以管理员身份打开命令提示符,执行:
命令输出会列出所有加载的模块,通过路径区分:tasklist /m /fi "PID eq [进程PID]"C:\Windows\System32\ntdll.dll是64位版本,C:\Windows\SysWOW64\ntdll.dll是32位版本。
方法2:进程工具辅助
使用Process Explorer找到目标32位进程,右键选择Properties > Image,切换到Modules标签页,可查看全量模块列表,同样通过路径区分32/64位版本。
方法3:IDA调试器内存映射查看
- 启动IDA调试器运行目标进程。
- 按下
Shift+F7打开Memory窗口,查看内存映射。Wow64的64位地址空间通常位于高地址区域(靠近0x7FFFFFFFFFFF),找到对应64位ntdll的内存块后,右键选择Jump to module即可查看其基础信息。
注:IDA Free版本调试器对Wow64 64位空间的支持有限,若无法直接查看,建议结合方法1/2获取模块信息后,手动加载64位ntdll到IDA进行分析。
三、对比两个ntdll版本
分别将以下文件加载到对应版本的IDA中,可直观对比两者差异:
- 32位ntdll:
C:\Windows\SysWOW64\ntdll.dll(用32位IDA加载) - 64位ntdll:
C:\Windows\System32\ntdll.dll(用64位IDA加载)
内容的提问来源于stack exchange,提问作者CarloC
相关产品推荐
相关产品推荐

