查看: 2187|回复: 8

[原创图文] frida踩坑记

[复制链接]
发表于 2020-2-4 18:03:48 | 显示全部楼层 |阅读模式
本帖最后由 Lily 于 2020-2-5 18:47 编辑

之前参加了2020XMAN的冬令营,见识了不少大佬,安卓逆向也算是入门了,最近搞到一台退役手机,所以就开始配置真机调试环境,期间也踩了不少坑,所以就写篇文章记录一下

重点坑已用黑体标出

1.安装python环境

我只在python3下使用过frida,如果有朋友是用python2的请慎重

如果你已经有python环境了可以跳过,没有python环境的可以下载一个Miniconda,推荐清华镜像站的版本

以下介绍摘自清华镜像站https://mirror.tuna.tsinghua.edu.cn/help/anaconda/

Miniconda 是一个 Anaconda 的轻量级替代,默认只包含了 python 和 conda,但是可以通过 pip 和 conda 来安装所需要的包。

Miniconda 安装包可以到 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 下载。

我下载的是最新版本的Miniconda3-latest-Windows-x86_64.exe,在页面最下方才是最新的,有时间标注。
333.png

安装时候注意一下,有个加入环境变量选项,没有python环境的要选上,有的话慎选,有可能把你环境变量搞乱

(不过我选了,也没什么事情

具体使用可以看这篇文章https://www.jianshu.com/p/742dc4d8f4c5

安装完之后在cmd或者Powershell执行conda env list可以查看所有环境

111.png
默认安装的是python3环境,环境名叫做base,如果需要python2可以根据上面那个链接自行下载

我们选择这个环境,conda activate base即可

启动时用

conda activate 环境名

退出时用

conda deactivate

有了conda就不用怕python2跟python3之间的各种冲突了

2.安装frida

在cmd或者Powershell执行

pip install frida

pip install frida-tools

无脑安装即可

之后在https://github.com/frida/frida/releases下载对应你手机或者模拟器架构的frida-server
444.png

frida-server的版本号要跟你安装的frida版本一致,不能一个高一个低

例如我的frida版本是12.8.10,frida-server也得是12.8.10

例如有的模拟器架构是x86的,就下载frida-server-12.8.10-linux-x86.xz

有的手机架构是arm64-v8a的,就下载frida-server-12.8.10-android-arm64.xz

查看模拟器或者手机架构可以用一个device info HW的工具,运行后点击芯片,找ABI那个选项就行

222.png

之后利用adb将下载好的frida-server复制到手机或模拟器里的/data/local/tmp/文件夹中

./adb push frida-server /data/local/tmp/frida-server

之后给予权限,直接777就行

./adb shell chmod 777 /data/local/tmp/frida-server

注意,给予权限和复制文件时候需要root权限,不然目录会拒绝被访问,运行时候也会

555.png

模拟器应该自带root,手机要想想办法去root一下,切换成root权限用命令su
666.png

最后./adb shell连接手机或模拟器,cd到/data/local/tmp/目录,运行./frida-server即可

如果不报错,那就没问题了

3.开始hook

hook的流程很简单,运行frida-server,在模拟器或者真机上运行对应APP,运行python脚本或者通过“frida -U -l exp.js 进程名”来执行js脚本,之后在模拟器或者真机上点击返回键,之后再打开那个APP就会获取到信息

frida的python脚本编写和使用可以看腾讯玄武实验室的大佬写的,基本只需要改改js里面的代码就好
999.png

https://mabin004.github.io/2018/03/09/Android-Hook-%E2%80%94%E2%80%94-Frida/

但是有一点,我从模拟器换成真机后,发现找不到设备,最后发现原因:
888.png
玄武大佬在get_usb_device()时候没有加参数,导致我运行python脚本时候会报错找不到设备

frida.InvalidArgumentError: device not found

大佬原句是process = frida.get_usb_device().attach('com.example.administrator.words')

这个是frida连接设备跟进程时候的语句,用模拟器时候能正常找到设备,但是真机找不到

我找了很多exp实验,最后发现使用真机调试时候

只需要把frida.get_usb_device()加个参数1,即变为frida.get_usb_device(1)就正常了

还有一点,想要正常hook或者用Android Studio等工具动态调试,你的模拟器或者手机需要允许APP被调试,否则用动态调试或者hook时候就找不到进程,也就没办法达到目的了

1.把系统中ro.debugable设置为1(过程略麻烦)

2.利用重打包技术修改apk相关配置再安装,玄武大佬的博客也有提到(每次安装app都要这样)

3.推荐!安装Xposed框架,再安装一个叫BDOpener的模块并勾选,**勾选之后重启才能生效(**一步到位)
777.png

如果你是模拟器,自带xposed框架那就更方便了,我这个旧手机是直接刷了一个自带xposed的系统,美滋滋,具体可以看

https://security.tencent.com/index.php/opensource/detail/17

下载链接也在里面,github上也有

(有问题请指出,感谢)

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
发表于 2020-2-4 18:48:02 | 显示全部楼层
只要上传了图片,就必须插入到帖子里(帖子必须用到),否则就会附在帖子末尾。这个不是bug,是dz的设定
论坛交流群:672619046
发表于 2020-2-4 19:08:52 | 显示全部楼层
这两天我想办法解决一下这个问题
论坛交流群:672619046
发表于 2020-2-4 22:53:51 | 显示全部楼层
xuenixiang 发表于 2020-2-4 19:08
这两天我想办法解决一下这个问题

你看一下图片的顺序有没有问题,有问题你改一下
论坛交流群:672619046
 楼主| 发表于 2020-2-5 14:19:55 | 显示全部楼层
xuenixiang 发表于 2020-2-4 22:53
你看一下图片的顺序有没有问题,有问题你改一下

图片插不完,总是超字节,不知道为什么 frida.zip (2.91 KB, 下载次数: 1)
发表于 2020-2-5 16:17:24 | 显示全部楼层
Lily 发表于 2020-2-5 14:19
图片插不完,总是超字节,不知道为什么

这是带图的MD文档,图片用的我的腾讯云链接 ...

超出字节限制?不应该啊,不是10000字吗?
论坛交流群:672619046
发表于 2020-2-5 16:18:39 | 显示全部楼层
xuenixiang 发表于 2020-2-5 16:17
超出字节限制?不应该啊,不是10000字吗?

这样,你吧帖子用markdown发一遍试试

点评

好了,已经带上图了  详情 回复 发表于 2020-2-5 18:47
论坛交流群:672619046
 楼主| 发表于 2020-2-5 18:47:58 | 显示全部楼层
xuenixiang 发表于 2020-2-5 16:18
这样,你吧帖子用markdown发一遍试试

好了,已经带上图了

0

主题

3

帖子

0

精华

初级会员

Rank: 4

学币
3
荣耀
0
rank
0
违规
0

    发表于 2020-3-3 16:07:43 来自手机 | 显示全部楼层
    支持楼主
    回复 打印

    使用道具 举报

    微信公众号
    快速回复 返回顶部 返回列表