frida - frida - 如果在附加之前调用方法,则挂钩 Android 方法不起作用
问题描述
假设应用程序使用按钮触发函数调用。
Button btn = new Button(this);
btn.setText("Test");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
hello();
}
});
函数定义:
public int hello() {
Log.v(TAG,"hello frida!");
return 0;
}
挂钩hello
API 的脚本:
Java.perform(function () {
var clzname = "com.sample.MainActivity";
var instance = Java.use(clzname);
instance.hello.overload().implementation = function () {
console.log("[*] onEnter hello...");
var retval = this.hello();
return retval;
};
});
如果启动应用程序,则附加脚本:
frida -U -l hook.js com.sample
它工作正常,下面的日志将输出:
-> [*] onEnter hello...
但是如果启动应用程序,然后单击按钮首先触发API调用,然后附加脚本,它不起作用,控制台没有输出。
这是否意味着如果 API 已经被调用,那么我们不能挂钩它?如何修复我的脚本?
解决方案
推荐阅读
- c# - 如何将圆 (vtkActor) 转换为点云数据 vtkPoint
- c# - 如何将空日期时间传递给具有 [require] 属性的 mvc 表单?
- javascript - 如何使用单个 js 制作或加载聊天应用程序 UI?
- python - 如何提取已作为参数传递给 Python 的 lambda 函数的函数名称?
- amazon-s3 - aws 与本地目录中存在的服务器文件夹同步
- react-native - 如何将图像的地址放在对象上?平面列表
- php - 如何在 html 页面上使用 PHP 填充图像库,包括图像代码/类?
- c# - 当 id / key = 0 时,ModelState isvalid 返回 false
- python - 如何在 Django 2.0 中通知具有随机值的变量?
- javascript - 当用户滚动到结束时,如何对滚动视图进行分页?