执行hook相关报错
1.错误
unable to access process with pid 16210 due to system restrictions; try `sudo sysctl kernel.yama.ptrace_scope=0`, or run Frida as root
这是ptrace占坑的标志。
ptrace可以让一个进程监视和控制另一个进程的执行,并且修改被监视进程的内存、寄存器等,主要应用于调试器的断点调试、系统调用跟踪等。
在Android app保护中,ptrace被广泛用于反调试。一个进程只能被ptrace一次,如果先调用了ptrace方法,那就可以防止别人调试我们的程序。这就是传说中的先占坑。
一个进程只能被一个进程附加,为了防止frida的附加,程序中自己先基于ptrace附加自己,我们如果后期使用frida去附加app时,就会报错了。
frida内部会使用ptrace。
2.解决方案
案例脚本
Java.perform(function () { var p0 = Java.use("cmt.chinaway.com.lite.q.p0"); //替换类中的方法 p0.a.implementation = function(str, str2, str3, str4){ console.log("执行请求"); var res = this.a(str, str2, str3, str4); //调用原来的函数 console.log(res) return res; } });
执行:frida -U -f cmt.chinaway.com.lite -l hook_sign.js

浙公网安备 33010602011771号