我正在尝试学习 hexrays ctree api。我正在使用 python 绑定。
我试图自动化的任务是跟踪 wrmsr 指令的参数。
我注意到 hexrays 表示它们是这样的:
__writemsr(*(_DWORD *)SYSTEM_BUFFER, *((_QWORD *)SYSTEM_BUFFER + 1));
使用 Hexrayscodeexplorer 我发现这是一个“辅助”表达式:
helper __writemsr
ea->FFFFFFFFFFFFFFFF
void (__fastcall *)(unsigned int, unsigned __int64)
从反编译输出的外观来看,我希望我应该能够访问“帮助程序”的参数(*(_DWORD *)SYSTEM_BUFFER, *((_QWORD *)SYSTEM_BUFFER + 1)
在这种情况下) - 但是我会为函数调用(cot_call)寻找操作数或函数参数的地方不是t 人口稠密。
这有可能吗?
到目前为止,我一直试图在以下方面寻找论点:
cexpr_t.x
cexpr_t.y
cexpr_t.a
我确定我只是不明白这些辅助表达式在 IDA 中是如何工作的。不幸的是,我试图分析的函数嵌套在一个巨大的函数中非常深,因此很难看到所有树如何在 Hexrayscodeexplorer 提供的 ctrees 图形视图中协同工作。
参数是否保存在其他一些 cexpr 对象中?我如何找到他们?