Hook 拦截
选择某一个设备
adb -s 设备名 shell
server的通信端口,但是我没有执行,好像也没事,不确定是不是我记错了
adb forward tcp:27042 tcp:27042
server方式
push文件并且改名字
adb push file /data/local/tmp/fs
需要在root环境下完成
查看手机进程
-u:就是USB
frida-ps -u
Hookjava层
- 普通方法
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.add.implementation = function (a,b) {
//1.打印方法的参数
//ab是方法的参数值
console.log(a)
console.log(b)
//方法二:通过argement[0]这种方式进行
console.log(arguments[0])
console.log(arguments[1])
console.log(
"Focus change:",
this.getClass().getName(),
"hasFocus=" + hasFocus
);
return this.onWindowFocusChanged(hasFocus);
};
- 构造方法
var money = Java.use("com.tony.Money");
money.$init.implementation = function (a,b) {
return this.$init();
}
- 函数重载
var mainActivity = Java.use("com.tony.MathActivity");
"java.lang.String"
mainActivity.add.overload("int").implementation = function (a,b) {
//1.打印方法的参数
//ab是方法的参数值
console.log(a)
console.log(b)
//方法二:通过argement[0]这种方式进行
console.log(arguments[0])
console.log(arguments[1])
console.log(
"Focus change:",
this.getClass().getName(),
"hasFocus=" + hasFocus
);
return this.onWindowFocusChanged(hasFocus);
};
- 构造对象参数
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.test.overload("com.tony.People").implementation = function (obj) {
//ab是方法的参数值
console.log(a)
//构造
var people = Java.use("com.tony.People")
//创建对象
people.$new("xx",100)
return this.test(a);
};
- 修改参数
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.test.overload("com.tony.People").implementation = function (obj) {
//ab是方法的参数值
console.log(obj)
console.log(obj.name.value)
// 修改
obj.name.value = "xx"
return this.test(a);
};