import frida
import sys
"""
一:修改:1,2,3。三处变量
1,2 包名.类名 var UserModel = Java.use("com.che168.autotradercloud.user.model.UserModel");
3,方法名 UserModel.方法名.implementation
二:参数个数必须跟逆向的app的一致。
"""
# 连接手机设备
rdev = frida.get_remote_device()
# Hook手机上的那个APP(app的包名字)
# session = rdev.attach("com.che168.autotradercloud") # 车智赢+ 或 进程ID
session = rdev.attach("com.che168.autotradercloud") # 1.4 版本的frida需要添进程名 1.5以上的可以添包名
scr = """
Java.perform(function () {
// 包.类 1,包名:com.che168.autotradercloud.user.model 2,类名:UserModel
var UserModel = Java.use("com.che168.autotradercloud.user.model.UserModel");
// Hook,替换 3,loginByPassword 是方法名
UserModel.loginByPassword.implementation = function(str,str2,str3,callback){
console.log(str,str2,str3);
// 执行原来的方法
this.loginByPassword(str,str2,str3,callback);
}
});
"""
script = session.create_script(scr)
script.load()
sys.stdin.read()
总结:hook是app逆向的高频操作,保留好本脚本留用
如果需要获取包名请运行下面的脚本:
# 枚举手机上的所有进程 & 前台进程
import frida
# 获取设备信息
rdev = frida.get_remote_device()
print(rdev)
# 枚举所有的进程
processes = rdev.enumerate_processes()
for process in processes:
print(process)
# 获取在前台运行的APP
front_app = rdev.get_frontmost_application()
print(front_app)```