Ida Pro 图形输出批处理模式

Ida pro gragh output batch mode

任何人都可以让我知道我们将如何以批处理模式输出所有子例程的图表 IDC。即我有 447 个子例程,想将它们全部输出,我想确保我首先自动检索所有例程地址,因为知道地址后我可以简单地使用 GenFuncCall。 P.S: 给定二进制反汇编文件,这是我能从 Ida Pro 获得的唯一 cfg 吗?

如果您只想要 IDB 中所有已知函数的地址,您可以使用 IDAPython 使用类似的东西(只是一个例子):

def main():
    for count, func_ea in enumerate(Functions()):
        if func_ea == BADADDR:
            break
        func_name = GetFunctionName(funcea)
        func_start = func_ea

        print("[{:4}] name: {}; start address: {:#x}".format(count, func_name, func_start))

if __name__ == "__main__":
    main()

我需要整个程序的 CFG,我开始的基本示例是: https://code.google.com/p/idapython/source/browse/trunk/examples/ex_gdl_qflow_chart.py

使用流程图class: https://www.hex-rays.com/products/ida/support/idapython_docs/idaapi.FlowChart-class.html

同样值得注意的是在批处理模式下触发,你会想要这样的东西

idal64 -A -S{yourscriptname}.py {yourbinary}

提示:

  • 首先在 IDAPro gui 中制作脚本原型
  • 打开图形处理器可能会导致计时问题,这很麻烦,但是延迟执行脚本之类的事情似乎有所帮助,例如

    idaapi.autoWait() Timer(2, idacfg).start()

    其中 idacfg 是示例中的 python 函数

  • 打印到 stdout 在批处理模式下似乎不起作用,因此您需要将 stdout 设置为文件以进行调试。

  • 以批处理模式关闭 GUI 对我来说仍然是个问题。

希望对您有所帮助。