最近经常能看到有人问如何对照文件格式文档,调试分析程序中正在解析的是什么结构?这里总结了几点方法,欢迎补充,不过有时还是需要靠经验。
(a)污点追踪分析:标记文件内容为污点,再使用ida污点分析的相关插件来分析寄存器对应的文件内容,结合010editor文件格式分析脚本来定位文件结构。
(b)执行指令比对:记录正常文件与异常文件的执行指令(od、immdbg都有trace功能),然后再作代码diff,比对代码的差异性,再根据文件内容的差异性整体分析。
(c)条件消息断点:在一些可能导致漏洞的变量都设置条件消息断点,在log中记录他的值,不少变量都会被循环操作的,根据变量记录的结果,找到其中的规律来定位文件结构。
(d)假设法:有时分析漏洞真的是靠猜的,假设对应某个文件结构,再调试分析去证实。
(e)开源软件符号表加载:比如分析libpng漏洞,优先找个使用libpng且开源并提供有符号的软件,比如Firefox,分析libpng时直接使用firefox符号表去调试firefox就很容易定位结构,libpng函数也直接识别,或者你也可以直接编译libpng制作符号表。
以上就是对文件漏洞分析中定位文件字段的方法,谢谢阅读,希望能帮到大家,请继续关注,我们会努力分享更多优秀的文章。