有人能告诉我我们将如何使用IDC
以批处理模式输出所有子例程的图吗。也就是说,我有447个子例程,我想把它们全部输出,我想确保我首先自动检索所有例程的地址,因为知道地址后,我可以简单地使用GenFuncCall
。P.S:这是我能从Ida Pro获得的唯一一个二进制文件吗?
我需要整个程序的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()