Hook 攔截
選擇某一個設(shè)備
adb -s 設(shè)備名 shell
server的通信端口,但是我沒有執(zhí)行,好像也沒事,不確定是不是我記錯了
adb forward tcp:27042 tcp:27042
server方式
push文件并且改名字
adb push file /data/local/tmp/fs
需要在root環(huán)境下完成
查看手機進程
-u:就是USB
frida-ps -u
Hookjava層
- 普通方法
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.add.implementation = function (a,b) {
//1.打印方法的參數(shù)
//ab是方法的參數(shù)值
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);
};
- 構(gòu)造方法
var money = Java.use("com.tony.Money");
money.$init.implementation = function (a,b) {
return this.$init();
}
- 函數(shù)重載
var mainActivity = Java.use("com.tony.MathActivity");
"java.lang.String"
mainActivity.add.overload("int").implementation = function (a,b) {
//1.打印方法的參數(shù)
//ab是方法的參數(shù)值
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);
};
- 構(gòu)造對象參數(shù)
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.test.overload("com.tony.People").implementation = function (obj) {
//ab是方法的參數(shù)值
console.log(a)
//構(gòu)造
var people = Java.use("com.tony.People")
//創(chuàng)建對象
people.$new("xx",100)
return this.test(a);
};
- 修改參數(shù)
var mainActivity = Java.use("com.tony.MathActivity");
mainActivity.test.overload("com.tony.People").implementation = function (obj) {
//ab是方法的參數(shù)值
console.log(obj)
console.log(obj.name.value)
// 修改
obj.name.value = "xx"
return this.test(a);
};