在angr中,如何加载和分析一个只包含一个函数指令的二进制文件

逆向工程 二进制
2021-07-05 21:33:37

我有一些二进制文件,每个文件都包含一个函数的指令,(最后可能会多一点)。文件的开头也是函数的起点。

这个文件是从一个 ELF 文件中提取的。平台是 arm64。

那么,如何使用angr加载和分析这个文件呢?
我在这里上传了一个示例文件:xfrank.pythonanywhere.com/bin


最初的目标:

每个函数都有一个“switch case 语句”,目标是获取 case 表达式的所有整数。

示例(C 代码):

void func1(int cmd){
    switch (cmd) {
    case 1:
        xxxx
        break;
    case 10:
        yyyy;
        break;
    }
}

结果:1,10

1个回答

以下是我通常会执行的步骤:

  • 在 angr 中加载二进制文件。
  • 建立一个CFG。
  • 对于您关心的每个函数,首先获取函数的引用(func = cfg.functions[addr]func = cfg.functions.function(name=the_name)),然后遍历图形(func.graphfunc.transition_graph)。