如果xref窗口会显示调用的伪代码,也许就不会有今天...
前言
我又要在前言絮絮叨叨一下我是为什么要做这个小插件的了...就不看
在审查程序的漏洞的时候,我们可能会重点关注那么几个重点函数的调用:system肯定是重中之重,printf系列也可以注意一下有没有fmt漏洞,还有其他的一些库函数。然而这些检查需要我去看这个函数所有的调用,我希望能够审计函数的调用是否干净,比如system("ls");
就没什么值得怀疑的,但是system(v10);
我就可以看一下这个v10是一个硬编码的命令,还是一个可以被用户写入的变量;或者检查printf、sprintf里面是否有fmt或者越界。但是似乎没有一个界面或者工具来列举出所有的调用,我们都知道ida可以查询函数的交叉引用,对着一个函数/变量甚至一些常量按x就可以查看它的交叉引用表。但是用过的都知道,这个界面很干净,基本上提供不了什么信息。
如果有一个类似xref窗口可以提供反汇编,那该多好啊!
功能介绍
项目链接
按下ctrl+shift+c或是点击Edit->Plugins->Function Call Viewer
,打开输入框,输入函数名或地址
博客发布后我还会继续改进这个插件,因此本文的一些截图可能与实际略有出入。
然后回车,就可以看到这个函数的所有调用、以及调用者的地址啦!
双击你怀疑的调用,就会跳到对应的反汇编,手工确定这些调用是否安全
然后你也可以在该窗口内使用ctrl+f进一步的筛选你要搜索的值
由于本人技术有限,有一些Todo还未能实现,后续研究明白了我会加入以下功能:伪代码和反汇编窗口的右键菜单添加新的行为,支持在选定函数后右键或者使用快捷键可以直接查找这个函数的调用。以及优化搜索体验,现在的搜索是ida自带的,似乎不支持正则?如果这个地方支持正则匹配我想这样可以进一步优化你的使用体验。如果还有其他改进建议还请留言讨论,有发现bug可以在这里留言也可以在github上提issue给我!