【问题标题】:Indirect jump destination calculation间接跳转目的地计算
【发布时间】:2013-06-22 07:31:03
【问题描述】:

给定一个任意可执行文件,是否可以确定部分或全部间接分支目标地址?计算这些目的地的编程方法是什么?我问是因为我正在从可执行文件中重建 CFG,并且无法找出计算间接分支的干净方法。有时操作数可以通过一点取证分析来确定,但有时就不是那么清楚了。

【问题讨论】:

  • 你说的是反汇编找不到的目的地?基本上使用指令集模拟器。或者简单分析。其中一些你将无法完全解决(不模拟所有真实世界的代码路径)。
  • 只用静态分析能做到吗?

标签: assembly llvm reverse-engineering decompiler


【解决方案1】:

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

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

不过,在一般情况下,我认为很难从中获得体面的结果 - 特别是因为我怀疑您的分析需要某种 堆分析 才能具有任何价值,这并不容易,尤其是在可能充斥着加载和存储到内存中的程序集上。

【讨论】:

    猜你喜欢
    • 2011-10-20
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多