之前写过一篇关于 IDA 在无 dmp 文件下如何定位到崩溃点的文章,由于其中涉及到公司项目,就仅限自己看了
正好今天看到一篇关于火绒软件误杀 explorer 的文章,并且有相关的复现过程
文章已经概述的很清楚,不过缺少软件的调试步骤,借此机会补充一下
该调试过程一共使用两个软件,IDA 和 010 Editor,以及调试文件,explorer.exe 和 pdb 文件,这两个文件可以从上面链接中的高赞回答中获取
010 Editor 是个调试器,里面有块功能是 EXE 的 PE 信息查看,需要另外安装 EXE.bt
那么开始吧,
打开 IDA,加载 exe 文件
选择 Portable executable for AMD64,会提示加载一些 dll,跳过就行
IDA 比较智能会提示是否连接微软官方 symbol server 并下载符号文件,并且也会提示输入 explorer.exe 的 pdb 文件路径,按照指示加载已下载的 pdb 文件就行
点击 Jump->Jump to function,弹出对话框,再点击 Search
输入要寻找的 api,即 IsHijackingProcessRunning
双击找到的 IsHijackingProcessRunning,会以 Graph View 显示汇编代码
在汇编代码的空白处鼠标右键选择 Text View,即可切换到文件阅读,方便查看
接着我们需要 IDA 给我们生成伪代码,鼠标在汇编代码处,按快捷键 F5 即可生成伪代码
里面有很多变量是 v 开头的,因为这些看似正确的代码其实并不准确,只是方便我们看清楚逻辑,v 开头的变量也是 IDA 自动生成的变量名,仅供参考
对于其他 api 也可以使用该方法去查看
顺便摘录下引用文章的小结=》explorer.exe 中 IsHijackingProcessRunning 的行为就是检测某些程序是否在运行,如果在运行则关闭 ShellFeedsCampaign 功能。
那么如何查看 exe 的 PE 时间戳,无论是 exe 还是 dll,两者的 PE 结构其实是类似的
安装好 010 Editor 后,打开它并加载 explorer.exe,软件会弹出提示框安装 exe.bt,安装就行,然后我们就可以看到 exe 的 PE 二进制数据
PE 时间戳可以在地址上直接查看,或者在下面的显示框中
好了,完毕,有问题在评论区中交流,谢谢观看