| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> frida 免root hook 1) frida gadget so注入app -> 正文阅读 |
|
[嵌入式]frida 免root hook 1) frida gadget so注入app |
frida免root hook 1) frida gadget嵌入app可能有的大佬并不知道 frida gadget是个啥。 这里先看看官方对于gadget的解释 官方链接 https://frida.re/docs/gadget/ 这句英语意思大概意思是: frida Gadget是一个动态库,如果注入不适用于当前场景 (一般是被检测 或者没 root),就用程序加载这个库来达到hook的效果。 大家好,我是王铁头 一个乙方安全公司搬砖的菜鸡 frida gadget使用场景
frida gadget 支持的连接方式官网文档支持的交互方式有4种
这里演示第3种 Script 直接执行注入脚本这种连接方式 后续有空会把上面的各种方式都写一下 app一般分为有so库和无so库 这篇文章演示有so库的情况 frida Gadget script脚本连接(有so库) 步骤
1.下载 frida gadget.so去哪里下载呢? 当当当当 当然是全球最大同性交友网站 github 直接去frida的github仓,点击 release 找想要的版本去下载就可 链接 https://github.com/frida/frida/releases 2.app so添加依赖 加入 frida gadget.so这一步的原理就是,让app在执行so的文件的时候,加载frida-gadget.so 大部分so文件,在运行的时候,都有一些依赖库。 这一步就是把 frida gadget.so加入到apk 本身so的依赖库中。 这一步很多大佬是用 lief实现的。 实际上实现这一步的办法挺多的。 喜欢用ubuntu的可以安装 patchelf 然后一行命令就搞定了 patchelf地址:https://github.com/NixOS/patchelf
so easy ,再也不用担心你不会添加依赖了。 实例演示: 看看这里的示例apk wtt这个示例apk里面有一个 so libnative-lib.so 这里,直接给 libnative-lib.so添加frida-gadget.so 依赖库 为了防止检测,frida这特征也太大了,很容易被检测 被针对 最好把这个so改个名字,比如 libcaiji.so 改名后如下图 运行 patchelf 添加依赖库 没有添加依赖库之前,依赖库如下 搞完之后 拖进ida看一下 依赖库,这里可以看到多了一个依赖so libcaiji.so 就是 frida-gadget.so改名后的so 当然这一步也可以用lief 先安装
这里 很多大佬直接给出了代码 但是每次都得改代码就好麻烦 我直接写了个脚本 直接读取命令行参数执行
保存成 inject.py 命令格式如下
执行 执行完之后看一下依赖 成功添加 3.配置 frida gadget 的config这里这篇文章主要是 执行脚本 关于用gadget.so执行脚本 看看官方文档的介绍,机器翻译还是有点问题的,凑合看吧 这里我按照官方的示例,写了一个配置文件 配置文件名 libcaiji.config.so 这里, 注意配置文件命名的格式,一定是你改名后的名字 + .config.so
官方文档是这么描述的 这里,按照上面的格式 修改后的so名为 libcaiji.so 配置文件的名字为: libcaiji.config.so 脚本代码如下
这里虽然后缀名是 .so 内容其实是json配置文件,这点要注意 4.编写注入js原apk的代码如下 apk正常运行是这样的 这里 编写一个注入的js 把 弹窗显示的 aaa 改成 bbb 这里 直接 hook com.wangtietou.no_root.MainActivity 的 aaa 方法 改下返回值就可以了 hook代码如下
写完js 把注入脚本放到之前配置的路径下 这里 /data/local/tmp/hook.js 是之前配置文件配置过的路径 一定要写对,不然,找不到执行的js, 怎么hook ,凉凉 5.打包签名新apk执行这里把 改名后的 frida-gadget.so 和 配置文件放到lib目录 再压缩 然后签名 就可以了 这里没有修改 dex文件 也没有修改 AndroidManifest.xml 所以并不用使用apktool重新打包 这个例子只有一个 依赖库架构 是 armv7a 那么只修改这一个架构就可以了 如果是多个架构,那就要都改 下面这个例子有2个架构 armv7 armv8 不确定运行平台的前提下 最好两个都改了 这里看一下前后的对比 把修改后的apk目录 压缩一下就可以了 搞完后 用 apktoolbox重新签个名就ojbk了 安装app执行 看一下效果 上面搞了这么多,实际上还有更简单的办法 有大佬早就写好了一键脚本 文章地址:https://bbs.pediy.com/thread-268175.htm 脚本地址:https://github.com/nszdhd1/UtilScript/ 只不过,脚本用起来不太灵活。 我准备把脚本改改,让脚本用起来更方便。 搞完会分享给大佬们的。. 这个文章用到的所有文件,周末会录个视频,然后一起发上去。 方案要注意的点1.签名校验修改apk后,签名会发生变化,apk如果有签名校验的话,要绕过签名校验 2.hook时机这里导入的so 一定要在 要hook的函数执行之前导入 要不然,要hook的函数都执行完了,你的so才导入,hook个锤子 3.so架构如果app so支持多个架构,不确定具体执行平台的话,建议每个架构都操作一波 方案优点1.有效绕过大部分反调试 反root 反frida在没有root的手机上运行,反root对你而言就是不存在的 用 gadget去注入,frida的大部分特征也没了 能绕过大部分 反调试 反frida 2.持久化hook直接嵌入app 相当于源码级修改 体验很好 持续更新移动安全,iot安全,编译原理相关原创视频文章 相关资料关注公众号 回复 frida 下载: |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:33:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |