android - 如何为嵌套类函数编写 Frida 钩子?
问题描述
安卓 v 6.0.1
弗里达诉 12.2.19
我是 Frida 的新手,不知道如何解决这个问题。我的目标功能在路径 com -> appname -> 文件夹 -> xyz.class
在 xyz.class 中,类嵌套如下:
public abstract class abc
{
public string dosomething()
{
StringBuilder localStringBuilder = new StringBuilder();
localStringBuilder.append(getClass().getSimpleName());
localStringBuilder.append("Value 1=");
localStringBuilder.append(this.value1);
localStringBuilder.append("Value 2=");
localStringBuilder.append(this.value2);
return localStringBuilder.dosomething();
}
}
我编写了这个钩子来尝试将 value1 和 value2 都打印到控制台。
custom_script.js:
setImmediate(function() {
console.log("[*] Starting script");
Java.perform(function () {
var Activity = Java.use("com.appname.folder.xyz$");
Activity.dosomething.overload().implementation = function () {
var datastring = localStringBuilder.dosomething();
console.log(datastring);
return datastring;
};
});
})
我不确定如何在 Java.use() 函数中构建路径,是否需要放置 xyz.class 或 xyz$ 或 xyz.class.abc$。
Error: java.lang.ClassNotFoundException: Didn't find class "com.appname.folder.xyz$" on path... etc.
如果我将路径指定为 com.appname.folder.xyz.class.abc$,我只会收到“进程终止”错误。
我在终端上使用的 Frida 命令是
frida -U -f com.appname -l custom_script.js --no-pause
我的脚本出了什么问题?
编辑:在标题中添加了单词
解决方案
类名永远不会以$
. 之后有一个匿名内部类的编号或abc
您的情况下的内部类的名称。
因此类名最有可能com.appname.folder.xyz$abc
。
然而,有时类名会出乎意料地不同。在这种情况下,列出 Frida 已知的所有类名并为某个包过滤它是有意义的:
Java.enumerateLoadedClasses({
onMatch: function(className) {
if (className.startsWith("com.appname.folder.xyz")) {
console.log(className);
}
},
onComplete: function() {}
});
它打印下面的类列表com.appname.folder.xyz
。只需看看它并选择正确的。
推荐阅读
- php - Laravel reduce loading time of 50k rows belongTo count query
- graph - 减少gnuplot中轴上的标签数量
- google-sheets - 按小时而不是按天计步公式
- google-cloud-functions - 使用云功能删除 Firebase 存储上的文件时出现错误 No such Object
- google-cloud-platform - GCE 工作时如何部署新代码?
- testing - 当它们在后台时,Testcafe 没有在铬浏览器中运行测试
- git - git push origin HEAD : remote_branch 和 git push origin local_branch:remote_branch 有什么区别?
- django - Django:尝试捕获 ValidationErrors 并将结果作为布尔值返回
- scala - 检查 Metastore 以了解 Spark 中的表可用性
- java - JMH ArrayList LinkedList 性能测试