漏洞分析与IDA工具的运用
1. 漏洞初步分析与栈缓冲区检测
在进行漏洞分析时,栈缓冲区的情况是一个重要的分析点。例如,存在这样的栈布局, var_418 被合并成一个数组,而 var_818 似乎只是一个单字节(在 var_818 和 var_418 之间有 1023 个未定义字节)。对于这种栈布局, GetMemberSize 会报告 var_818 为 1 字节, var_418 为 1036 字节,这可能不是我们期望的结果。调用 findStackBuffers(0x08048B38, 16) 的输出如下,无论 var_818 被定义为单字节还是 1024 字节的数组:
sub_8048B38: possible buffer var_818: 1024 bytes
sub_8048B38: possible buffer var_418: 1036 bytes
我们可以创建一个主函数,遍历数据库中的所有函数,并为每个函数调用 findStackBuffers ,这样可以快速找出程序中栈缓冲区的使用情况。不过,要确定这些缓冲区是否会溢出,还需要对每个函数进行额外(通常是手动)的研究。静态分析的繁琐正是模糊测试如此流行的原因。
超级会员免费看
订阅专栏 解锁全文
735

被折叠的 条评论
为什么被折叠?



