app逆向之frida的相关配置
1.电脑端配置
1.在电脑上安装frida相关的模块
| 1.在电脑上安装一个python3.7的系统解释器 |
| 2.创建一个项目,基于python3.7的系统创建一个虚拟环境 |
| 3.安装模块 |
| pip install frida == 16.0.1 |
| pip install frida-tools == 12.0.1 |
2.手机端配置
| 1.下载frida-server:网址:https://github.com/frida/frida/releases |
| |
| |
| |
| |
| 2.上传到手机 |
| adb push xxxxx /data/local/tmp/ |
| 3.如何查看上传到手机后的文件 |
| >>> adb shell |
| >>> su |
| >>> cd /data/local/tmp/ |
| >>> ls |
| 4.赋予可执行权限 |
| >>> chmod 755 上传文件名 |

3.启动+编写hook脚本+运行

1.端口转发
| >>> аdb forward tcp:27042 tср 27042 |
| >>> adb forward tср:27043 tср 27043 |

注:每次运行端口转发这样会有些繁琐,我们可以编写一个固定的脚本,用python代码来执行以上的两条命令
| import subprocess |
| subprocess.getoutput("adb forward tcp:27042 tcp:27042") |
| subprocess.getoutput("adb forward tcp:27043 tcp:27043") |
编写hook脚本+运行
1.固定的脚本+获取进程
| |
| import frida |
| |
| |
| rdev = frida.get_remote_device() |
| print(rdev) |
| |
| |
| |
| |
| |
| |
| |
| front_app = rdev.get_frontmost_application() |
| print(front_app) |
2.固定的脚本,只需修改内部的hook脚本就OK啦
1.手动app启动
| |
| |
| import frida |
| import sys |
| |
| rdev = frida.get_remote_device() |
| |
| session = rdev.attach("车智赢+") |
| scr = """ |
| Java.perform(function(){ |
| //包,类 |
| var UserModel = Java.use("com.che168.autotradercloud.user.model.UserModel") |
| //hook替换 |
| UserModel.loginByPassword.implementation = function(str,str2,str3,responseCallback){ |
| console.log("请求来了...."); |
| console.log(str2,str3); |
| this.loginByPassword(str,str2,str3,responseCallback); |
| } |
| }); |
| """ |
| script = session.create_script(scr) |
| |
| |
| def on_message(message, data): |
| print(message, data) |
| |
| |
| script.on("message", on_message) |
| script.load() |
| sys.stdin.read() |
| |
| |
| |
2.自动app启动
| |
| import frida |
| import sys |
| |
| rdev = frida.get_remote_device() |
| pid = rdev.spawn(["com.hupu.shihuo"]) |
| session = rdev.attach(pid) |
| scr = """ |
| Java.perform(function(){ |
| //包,类 com.azhon.appupdate.dialog.UpdateDialog |
| var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog") |
| |
| //hook替换 |
| UpdateDialog.show.implementation = function(){ |
| console.log("++++++++show来啦++++++++++++++"); |
| //this.show(); |
| } |
| |
| }); |
| """ |
| script = session.create_script(scr) |
| |
| |
| def on_message(message, data): |
| print(message, data) |
| |
| |
| script.on("message", on_message) |
| script.load() |
| rdev.resume(pid) |
| sys.stdin.read() |
3.javascript+终端命令
| Java.perform(function(){ |
| |
| var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog") |
| |
| |
| UpdateDialog.show.implementation = function(){ |
| console.log("++++++++show来啦++++++++++++++"); |
| |
| } |
| }); |
运行js的吗命令
attach,先启动app,然后再在终端运行
spwan 脚本自动重启app并进行hook
| >>> frida -U -f com.che168.autotradercloud -l xxx.js |

补充,今天在手机端上传frida-server后运行frida-server报错了

解决方案
第一种:

第二种
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术