IDA/HexRays:如何检索与给定的反编译代码行关联的内存地址?
逆向工程
艾达
反编译
反汇编者
六线谱
2021-06-25 19:39:10
1个回答
在hexrays.hpp,citem_t是cinsn_t(“指令”,如for循环、if语句等)和cexpr_t(“表达式”,如加法、内存解引用、函数调用等)的基类citem_t都有一个字段ea_t ea;。该字段存储汇编语言中相应行的地址(除非它是BADADDR,在这种情况下,反编译器机器丢失了地址的跟踪)。
为了具体地实现您的目标,您将希望获得cinsn_t反编译列表中某些行上的对象。以下是关于如何实现这一点的三个不同的想法:
- 直接把函数体抓出来
cfunc_t自己处理; - 使用一个
ctree_visitor_t对象访问cinsn_t反编译列表中的所有对象; - 调用
kernwin.hpp::read_selection以获取反编译列表中的行选择(将这些行映射回反编译函数体内的位置需要做一些工作)。
其它你可能感兴趣的问题
