繁体   English   中英

Ida Pro Gragh输出批处理模式

[英]Ida pro gragh output batch mode

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

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

它使用流程图类: 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仍然是一个问题。

希望能有所帮助。

如果您只想获取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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM