frida踩坑记
本帖最后由 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/ 下载。
我下载的是最新版本的(https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe),在页面最下方才是最新的,有时间标注。
!
安装时候注意一下,有个加入环境变量选项,没有python环境的要选上,有的话慎选,有可能把你环境变量搞乱
(不过我选了,也没什么事情
具体使用可以看这篇文章https://www.jianshu.com/p/742dc4d8f4c5
安装完之后在cmd或者Powershell执行conda env list可以查看所有环境
!
默认安装的是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
!
**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那个选项就行**
!
之后利用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权限,不然目录会拒绝被访问,运行时候也会
!
模拟器应该自带root,手机要想想办法去root一下,切换成root权限用命令su
!
最后./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里面的代码就好
!
(https://mabin004.github.io/2018/03/09/Android-Hook-——-Frida/)
**但是有一点,我从模拟器换成真机后,发现找不到设备,最后发现原因:**
!
玄武大佬在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的模块并勾选,****勾选之后重启才能生效(****一步到位)**
!
如果你是模拟器,自带xposed框架那就更方便了,我这个旧手机是直接刷了一个自带xposed的系统,美滋滋,具体可以看
https://security.tencent.com/index.php/opensource/detail/17
下载链接也在里面,github上也有
(有问题请指出,感谢)
: http://118.89.229.121/usr/uploads/2020/02/4129020717.png
: http://118.89.229.121/usr/uploads/2020/02/4023372242.png
: http://118.89.229.121/usr/uploads/2020/02/4217657494.png
: http://118.89.229.121/usr/uploads/2020/02/4080434965.png
: http://118.89.229.121/usr/uploads/2020/02/3248478398.png
: http://118.89.229.121/usr/uploads/2020/02/3839209894.png
: http://118.89.229.121/usr/uploads/2020/02/4052355828.png
: http://118.89.229.121/usr/uploads/2020/02/644613240.png
: http://118.89.229.121/usr/uploads/2020/02/935654000.png 只要上传了图片,就必须插入到帖子里(帖子必须用到),否则就会附在帖子末尾。这个不是bug,是dz的设定 这两天我想办法解决一下这个问题 xuenixiang 发表于 2020-2-4 19:08
这两天我想办法解决一下这个问题
你看一下图片的顺序有没有问题,有问题你改一下 xuenixiang 发表于 2020-2-4 22:53
你看一下图片的顺序有没有问题,有问题你改一下
图片插不完,总是超字节,不知道为什么
这是带图的MD文档,图片用的我的腾讯云链接 Lily 发表于 2020-2-5 14:19
图片插不完,总是超字节,不知道为什么
这是带图的MD文档,图片用的我的腾讯云链接 ...
超出字节限制?不应该啊,不是10000字吗? xuenixiang 发表于 2020-2-5 16:17
超出字节限制?不应该啊,不是10000字吗?
这样,你吧帖子用markdown发一遍试试 xuenixiang 发表于 2020-2-5 16:18
这样,你吧帖子用markdown发一遍试试
好了,已经带上图了{:9_314:} 支持楼主
页:
[1]