前言
在无法对手机举行 root 的情况下,frida-gadget派上了用场。通过使用 frida-gadget.so,我们可以在免 root 环境下对应用举行分析和调试。frida-gadget 可以直接注入到目标应用中,并通过监听 27042 端口来替换传统的 frida-server 连接方式,从而实现动态注入和实时脚本化的功能。
使用Objection工具重打包应用
为了在免 root 环境下使用 Frida,我们可以利用 Objection 工具对目标应用举行重打包,并将 Frida-Gadget.so 文件放置到应用对应的 CPU 架构目录下。接下来,将详细介绍这一过程。
1. 安装 Objection
首先,确保你已经安装了 Objection 工具。我们可以通过以下命令安装Objection:
- pip install objection #要匹配frida安装的脚本
复制代码 2. 查看重打包命令
在举行重打包之前,可以通过 objection patchapk --help 命令来查看相关的选项和命令说明。如下图所示:
3. 下载frida-gadget.so
在 frida 的 github 仓库上下载与应用兼容的 frida-gadget.so 文件。我使用的是 14.2.18 版本,如下图所示:
将下载的 so 文件重命名为 libfrida-gadget.so,并放入到 Objection 工具对应 CPU 架构的目录下。我选择的路径为 C:\Users\LittleFish.objection\android\arm64-v8a。
4. 重打包应用
接下来,使用以下命令对应用举行重新打包:
- objection patchapk -a arm64-v8a -V 14.2.18 -s Demo.apk
复制代码 此命令会天生一个新的APK文件,名为Demo.objection.apk。然后我们可以通过adb install Demo.objection.apk命令将其安装到设备上。
5. 启动应用并查看监听端口
安装完成后,启动应用,并通过adb进入shell模式,使用netstat -nltp命令查看监听端口:
此时,我们可以注入自定义的frida脚本举行调试。下面是一个简单的Java StringBuffer和lStringBuilder类的Hook脚本:
- function hook_string() {
- var sb = Java.use("java.lang.StringBuilder");
- sb.toString.implementation = function () {
- var retval = this.toString();
- console.log("StringBuilder.toString: ", retval);
- return retval;
- }
- var sb = Java.use("java.lang.StringBuffer");
- sb.toString.implementation = function () {
- var retval = this.toString();
- console.log("StringBuffer.toString: ", retval);
- return retval;
- }
- }
- function main () {
- hook_string();
- }
- setImmediate(main);
复制代码 使用命令 frida -UF -l .\demo.js 运行该脚本,看到StringBuilder和StringBuffer的toString方法被乐成 Hook,如下所示:
6. 反编译查看修改后的APK
为了验证 Objection 的工作原理,可以通过 jadx 等反编译工具查看重打包后的 APK。如下图所示:
可以看出,objection帮我们添加了代码,app启动就开始加载frida-gadget.so。
总结
通过这种方式可以实现app免root的就可以使用frida举行hook,然而这种方式在有些app反编译和回编译大概会出错,会存在签名校验、文件校验问题。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |