给定任意可执行文件,是否可以确定部分或全部间接分支目的地址?计算这些目的地的编程方法是什么?我之所以问这个问题,是因为我正在从可执行文件中重建CFG,并且找不到一种计算间接分支的干净方法。有时可以通过一些取证分析来确定操作数,但其他时候就不那么清楚了。
发布于 2013-06-26 15:41:25
在编译的程序中静态地计算可能的间接分支目的地是通过执行data-flow analysis来找出地址的可能值来可能的。
它在一些简单的事情上可能工作得很好,比如jump tables (这类东西通常是从switch语句中生成的)。
不过,在一般情况下,我认为很难从中获得像样的结果--特别是因为我怀疑你的分析需要某种堆分析才能有任何价值,而这并不容易,特别是在汇编方面,它可能会被加载和存储到内存中。
https://stackoverflow.com/questions/17298403
复制相似问题