frida-server使用笔记
安装frida
和frida-tools
两个库
将frida-server-14.2.7-android-x86文件推送到 手机目录里
下载地址:
https://y6blnu1l.lanzous.com/b0dkmft9e
密码:bxkh
adb push frida-server-14.2.7-android-x86 /data/local/tmp/
adb shell
cd /data/local/tmp/
mv frida-server-14.2.7-android-x86 fs
chmod 777 fs
./fs
端口转发
adb forward tcp:27042 tcp:27042
注意一定要先打开Hook的app在运行py
开始运行Hook.py
import frida
import sys
# js代码
jscode = """
Java.perform(function(){
var utils=Java.use('com.hookapp.hook.Utils');
//获取该类,可以使用该类的里的方法,如果要传参,修改a,b
utils.getCala.implementation=function(a,b){
console.log("Hook Start....");
send(a);
send(b);
send("Success!");
var change=this._getCalc(200,200,500); //也可以Hook调用该类的方法,并传值发送,从而达到修改
send(change);
return change;
}
});
"""
# //也可以写多个函数
# var perBean=Java.use('com.hookapp.hook.perBean');
# //获取该类的构造方法
# perBean.$init.implementation=function(a,b){
# console.log("Hook Start....");
# send(a);
# send(b);
# send("Success!");
# return this.$init(a,b);
# }
# //Hook获取重载方法
# var load=Java.use('com.hookapp.hook.load');
# //获取该类的重载方法,overload传值的是参数类型,即a为int型,b为String类型
# load.loadTest.overload("int","java.lang.String").implementation=function(a,b){
# console.log("Hook Start....");
# send(a);
# send(b);
# send("Success!");
# return this.loadTest(8888,"你好"); //从而达到hook
# }
# //Hook获取重载方法时参数为对象
# var load=Java.use('com.hookapp.hook.load');
# var bean=Jave.use('com.hookapp.hook.perBean');
# //获取该类的重载方法,overload传值的是参数类型,即a为对象类型
# load.loadTest.overload("com.hookapp.hook.perBean").implementation=function(obj){
# console.log("Hook Start....");
# send(obj.getInfo());
# send("Success!");
# return this.loadTest(obj); //从而达到hook
# // var m=bean.$new(100,"hello");//重载返回的是对象
# //send(m.getInfo());
# //m.name.value="you";//hello修改成you
# //return m.getInfo(); //或者 return this.loadTest(m);
# }
def message(message, data):
if message["type"] == 'send':
print("[*]{0}".format(message['payload']))
else:
print(message)
process = frida.get_remote_device().attach('com.hookapp.hook')
script = process.create_script(jscode)
script.on('message', message) # 绑定事件
script.load()
sys.stdin.read()