idaapi
公开的功能,我发现下面的功能也公开了。使用脚本对hex-rays反编译器进行注释。我四处张望,找不到使用这些功能的示例。 [EDIT]
set_user_cmt似乎有2个参数,其中第二个是注释,第一个是
treeloc_t
的实例。但是,我不太确定如何使用它。使用以下内容会导致孤立的注释。get_user_cmt
set_user_cmt
save_user_cmts
#1 楼
treeloc_t
构造函数不接受EA,您需要指定注释精确度:ea = idaapi.get_screen_ea()
cfunc = idaapi.decompile(ea)
tl = idaapi.treeloc_t()
tl.ea = ea
tl.itp = idaapi.ITP_SEMI
cfunc.set_user_cmt(tl, "Test comment")
cfunc.save_user_cmts()
您可以在hexrays.hpp中找到有关精确度的更多信息。并非所有精确器都能在任何地方工作。例如,上面的代码使用
ITP_SEMI
,它在分号后加注释:如果在if
上使用它将引起孤立的注释。#2 楼
我正在尝试使用ida-batch_decompile实现类似的功能。基本思想是从命令行对目标进行注释和反编译(但它也带有菜单项;用作插件或idascript)。当前它使用文本猜测的堆栈变量大小对函数进行注释。和外部参照。为此,它将添加带有
SetFunctionCmt(addr, txtcomment, 0)
的功能注释块(请参见代码),并且在对所有功能进行注释后,它将目标二进制文件反编译为伪代码(可选地还反编译可解析的导入文件)。请注意,atm不能注释反编译的行,但我希望将来能使用它。#3 楼
您可以使用idc.MakeComm或idc.MakeRptCmt函数。例如:MakeComm(address, 'My comment')
评论
我不认为这可用于对Hex-Rays反编译应用评论。
–詹森·格夫纳(Jason Geffner)
16年4月19日在13:35
评论
要求他们的支持以提供示例吗?我不太确定它是否能回答您的问题,但可能会给您一些指导:github.com/idapython/src/blob/master/examples/vds4.py
仅供参考:您可能会在hexrays.hpp文件hexrays.hpp文件:hex-rays.com/products/decompiler/manual/sdk/…中找到有关treeloc_t的更多信息。我很乐意提供更完整的解决方案,但不幸的是我现在没有工作的十六进制射线。