通过脚本获取函数的伪代码

逆向工程 艾达 反编译 idapro插件 脚本
2021-06-24 21:50:06

我正在寻找一种通过脚本获取函数伪代码的方法。我在 OS X 10.11.4 (El Capitan) 上使用 IDAPro 6.9。

我确实找到了有关在批处理模式下使用反编译器的文档:

https://www.hex-rays.com/products/decompiler/manual/batch.shtml

如果我正确解释了文档,它似乎表明我可以执行:

idal -Ohexx86:decompiled_output:function_name -A myidapro.idb

它将生成function_name的伪代码并将结果写入decompiled_output这个对吗?

当我尝试这个时,它只是启动文本界面并且没有创建输出文件。当然,我可以启动 GUI 并查看 function_name 的伪代码。

此外,如果有办法通过在 idapro 中运行的 python 脚本获取函数的伪代码,那将是首选选项,但我不清楚这是否可行。

1个回答

您可以使用以下功能:

def decompile_func(ea):
  if not init_hexrays_plugin():
    return False

  f = get_func(ea)
  if f is None:
    return False

  cfunc = decompile(f);
  if cfunc is None:
    # Failed to decompile
    return False

  lines = []
  sv = cfunc.get_pseudocode();
  for sline in sv:
    line = tag_remove(sline.line);
    lines.append(line)
  return "\n".join(lines)

print decompile_func(here())

这是对示例 vds1.py 脚本的修改。