android studio下载
解压 tar zxvf
环境变量
vim .zshrc export PATH="/home/kali/Android/Sdk/platform-tools:$PATH" source .zshrc 或.bashrc
网络连接手机
adb connect 192.168.50.138:5555 adb disconnect 192.168.50.138:5555frida 注入命令
frida -H 192.168.50.138:6666 -f com.example.project_2 -l demo_1.js --no--pause frida -U 是以usb 方式连接 -f 代表找到包并打开 注意 以 -f方式启动需要 手动输入一个 %resumefrida 注入函数
setImmediate(回调函数) 注入进去立即执行
setTimeout(函数回调,1000) 定时调用
手动调用:
写一个方法.....里面写Java.perform(function(){.........})
1.Frida各种基础操作
function main(){
Java.perform(function(){
Java.use("包名.类名").方法名.implementation = function(arg1,arg2){
console.log(arg1,arg2)
var result = this.方法名(arg1,arg2)
console.log(result)
return result
}
})
}
setImmediate(main)
一句话调用栈hook
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aA2rRCjv-1654267054258)(https://s2.loli.net/2022/06/03/YngiqZhRX57uxcA.png)]
重载函数hookfunction main(){
Java.perform(function(){
//这里hook fun(int a,int b) 返回值int
Java.use("包名.类名").方法名.overload('int','int').implementation = function(arg1,arg2){
console.log(arg1,arg2)
var result = this.方法名(arg1,arg2)
console.log(result)
return result
}
//这里hook的是 fun(String s) 返回值 String
Java.use("包名.类名").方法名.overload("java.lang.String").implementation = function(s1){
var result = this.方法名(s1)
console.log(result)
return result
}
})
}
setImmediate(main)
创建java字符串
Java.use("java.lang.String").$new("字符串")
java函数主动调用
私有的,受保护的,默认的 (动态)
function main(){
Java.perform(function(){
Java.choose("包名.类名",{
//创建实例对象
onMatch:function(instance){
console.log("found instance:",instance)
//调用secret自定义方法
var result = instance.方法名();
console.log(result)
},onComplete:function(){console.log("调用成功了!")}
})
})
}
setImmediate(main)
调用公共静态无参数方法(静态)
function main(){
Java.perform(function(){
console.log(Java.use("com.example.project_2.MainActivity").secret2())
})
}
setImmediate(main)



