间接跳转目的地计算

时间:2013-06-25 13:16:01

标签: assembly llvm reverse-engineering decompiler

鉴于任意可执行文件,是否可以确定部分或全部间接分支目标地址?什么是计算这些目的地的程序化方法?我问,因为我正在从可执行文件重构CFG,并且无法找到计算间接分支的干净方法。有时候操作数可以通过一点法医分析来确定,但有时则不太清楚。

1 个答案:

答案 0 :(得分:2)

通过执行data-flow analysis来查找地址的可能值,静态地计算编译程序中可能的间接分支目的地可能

它可能适用于简单的事情,例如jump tables(通常由switch语句生成的东西)。

在一般情况下,我认为从中获得不错的结果将非常困难 - 特别是因为我怀疑你的分析需要某种堆分析具有任何价值,这并不容易,特别是在装配时可能充满了装载和存储的内存。