从java api获取函数的Ghidra中的堆栈引用
逆向工程
吉德拉
2021-06-11 21:29:08
1个回答
我在github上问了这个问题,得到了如下回复:
假设已经执行了堆栈分析并且函数已经用堆栈引用标记,如上所示,您可以迭代“来自”函数主体(即,AddressSetView)的引用。返回的引用需要过滤,因为其他类型的引用也将被返回。虽然获取引用的方法有很多种,这里举一个例子:
Function f;
Program p;
ReferenceManager refMgr = p.getReferenceManager();
for (Address fromAddr : refMgr.getReferenceSourceIterator(f.getBody(), true)) {
for (Reference ref : refMgr.getReferencesFrom(fromAddr)) {
if (ref.isStackReference()) {
StackReference stackRef = (StackReference) ref;
}
}
}
重要的部分是您的分析必须在堆栈分析发生之后进行,这已经很晚了。您可以通过将要运行的点传递到父构造函数中来控制分析何时在构造函数中运行。
其它你可能感兴趣的问题
