我自己是一个静态分析人;十年前我基本上放弃了动态逆向工程。所以这几天,我的流程通常是定位我的输入进入我感兴趣的模块的位置,然后进行大量的静态分析,以确定我的输入如何操纵程序的状态。我发现了一些巧妙的错误,例如这种方式的信息泄露;然而,与使用大量动态分析和动态输入生成(例如,随机模糊测试)的同行相比,我无疑要慢得多。
您通常采取哪些步骤来发现闭源程序中的漏洞?
我自己是一个静态分析人;十年前我基本上放弃了动态逆向工程。所以这几天,我的流程通常是定位我的输入进入我感兴趣的模块的位置,然后进行大量的静态分析,以确定我的输入如何操纵程序的状态。我发现了一些巧妙的错误,例如这种方式的信息泄露;然而,与使用大量动态分析和动态输入生成(例如,随机模糊测试)的同行相比,我无疑要慢得多。
您通常采取哪些步骤来发现闭源程序中的漏洞?
这就是我通常这样做的方式,尽管这在很大程度上取决于目标/项目,而且这只是我自己喜欢的方式:
PS:阅读文档也是发现一些漏洞的好方法,以及阅读更改日志、差异补丁、提交消息等...如果您可以访问源代码(有时您可以部分访问目标的源代码,即使对于闭源应用程序)。
只有我的 2 美分。