鉴于任意可执行文件,是否可以确定部分或全部间接分支目标地址?什么是计算这些目的地的程序化方法?我问,因为我正在从可执行文件重构CFG,并且无法找到计算间接分支的干净方法。有时候操作数可以通过一点法医分析来确定,但有时则不太清楚。
答案 0 :(得分:2)
通过执行data-flow analysis来查找地址的可能值,静态地计算编译程序中可能的间接分支目的地可能。
它可能适用于简单的事情,例如jump tables(通常由switch语句生成的东西)。
在一般情况下,我认为从中获得不错的结果将非常困难 - 特别是因为我怀疑你的分析需要某种堆分析具有任何价值,这并不容易,特别是在装配时可能充满了装载和存储的内存。