作为Windows与Debug的结合体,WinDbg是专为Windows平台设计的调试工具,具备调试用户模式程序、内核模式程序以及dump文件等多种功能。WinDbg的调试命令体系主要由三部分构成:基本命令、元命令以及扩展命令。其中,基本命令和元命令是调试器内置的功能,值得注意的是,元命令总是以“.”为前缀,而扩展命令则是以“!”为前缀。接下来,我们将通过实例结合命令的方式来探索WinDbg的强大功能。
1.version
此命令用于查看当前WinDbg的版本信息,执行结果如图19-1所示。
2.lm
此命令用于显示当前加载的模块信息,包括模块名称、模块在内存中的起始地址及结束地址、模块路径等,执行结果如图19-2所示。
3.!dlls
此命令用于查看当前进程加载的所有模块信息,执行结果如图19-3所示。
图19-1 使用version命令查看WinDbg的版本信息
图19-2 使用lm命令显示模块信息
图19-3 使用!dlls命令查看当前进程加载的模块信息
4.!peb
此命令用于显示当前进程的环境块(Process Environment Block,PEB)信息,执行结果如图19-4所示。
图19-4 使用!peb命令查看当前进程的环境块信息
dumpbin.exe是Visual Studio提供的一个用于查看和分析二进制文件的命令行工具,可以用于检查文件的结构、导出函数、查看导入和导出表、查看资源以及其他信息。
1.查看文件头
使用dumpbin可以查看二进制文件的文件头信息,包括文件类型、目标平台等重要信息。执行命令dumpbin-headers filename,结果如图19-5所示。
图19-5 查看ConsoleProcess.exe文件头数据
2.查看导入函数
dumpbin可以列出一个可执行文件或程序集文件导入的函数,显示它们从哪些库中导入。执行命令dumpbin/imports filename,结果如图19-6所示。
图19-6 查看ConsoleProcess.exe导入的函数
3.查看导出函数
使用dumpbin-exports filename命令可以查看一个.dll文件导出的函数列表,执行结果如图19-7所示。
图19-7 查看ConsoleProcess.exe导出函数列表
dumpbin工具还提供了其他选项,如查看文件的重定位信息、导出表中的函数详细信息等。若要获取详细的选项列表和使用方法,可以在命令行中输入dumpbin/?进行查看。
DLL Export Viewer是一款适合开发和安全研究人员使用的动态链接库(Dynamic Link Library,DLL)函数查看器,可以查看动态链接库文件中的输出函数、COM类型库及相应的偏移地址,对于经常调试程序的用户很有帮助。DLL Export Viewer无须安装,直接运行dllexp.exe即可,主界面如图19-8所示。
图19-8 运行dllexp.exe打开主界面
1.导出标准系统DLL
DLL Export Viewer提供了多种载入.dll文件的方式,默认情况下将导出Windows系统级文件kernel32.dll、user32.dll中的API函数,如图19-9所示。
图19-9 导出系统级文件的API函数
2.导出自定义DLL
DLL Export Viewer支持从指定的.dll文件中加载函数,如果选择此选项,必须在浏览处的文本框中指定.dll文件的绝对路径。另外,也可以使用通配符指定多个.dll文件,如图19-10所示。
图19-10 选择指定的.dll文件导出
例如,当我们选择桌面目录下的user32.dll文件,可以看到如图19-11所示的函数列表。
图19-11 选择桌面目录下的user32.dll文件进行导出
3.导出进程DLL
DLL Export Viewer可以导入指定系统进程当前所加载的.dll文件函数。操作时,需在进程下拉框中指定一个进程,例如选择WeChat.exe,如图19-12所示。
图19-12 选择WeChat.exe进程导出
执行上述操作后,便可以看到WeChat.exe进程加载的所有函数列表,如图19-13所示。
图19-13 WeChat.exe加载的函数列表
pestudio是一款用于静态分析Windows可执行文件的工具,包括分析其依赖项与组件,以及导出与转发的函数等。该工具的官方下载地址为https://www.winitor.com/download,用户可以选择下载免费版本进行使用。
pestudio的使用方法非常简单,只需在启动之后将需要分析的程序拖入即可,分析完毕后在indicator区域显示被分析程序的基本情况,如图19-14所示。
图19-14 indicator区域显示程序的基本情况
pestudio通过利用程序的哈希值,直接在VirusTotal网站上查询并显示相关信息。如果该程序在virustotal上已有查询结果,这些结果将被直接展示出来,如图19-15所示。
图19-15 关联virustotal显示披露的相关信息
该工具的libraries选项可展示被分析的二进制程序所有关联的.dll库,具体列表如图19-16所示。
图19-16 关联的.dll库列表
imports选项展示了可执行文件导入的外部库和函数的功能,这一功能有助于分析人员识别程序调用了哪些库和函数,进而初步判断程序可能存在的恶意行为,如图19-17所示。
图19-17 查看二进制文件导入函数