Lily 发表于 2020-2-4 18:03:48

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

roger 发表于 2020-2-4 18:48:02

只要上传了图片,就必须插入到帖子里(帖子必须用到),否则就会附在帖子末尾。这个不是bug,是dz的设定

roger 发表于 2020-2-4 19:08:52

这两天我想办法解决一下这个问题

roger 发表于 2020-2-4 22:53:51

xuenixiang 发表于 2020-2-4 19:08
这两天我想办法解决一下这个问题

你看一下图片的顺序有没有问题,有问题你改一下

Lily 发表于 2020-2-5 14:19:55

xuenixiang 发表于 2020-2-4 22:53
你看一下图片的顺序有没有问题,有问题你改一下

图片插不完,总是超字节,不知道为什么

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

roger 发表于 2020-2-5 16:17:24

Lily 发表于 2020-2-5 14:19
图片插不完,总是超字节,不知道为什么

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

超出字节限制?不应该啊,不是10000字吗?

roger 发表于 2020-2-5 16:18:39

xuenixiang 发表于 2020-2-5 16:17
超出字节限制?不应该啊,不是10000字吗?

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

Lily 发表于 2020-2-5 18:47:58

xuenixiang 发表于 2020-2-5 16:18
这样,你吧帖子用markdown发一遍试试

好了,已经带上图了{:9_314:}

su9808 发表于 2020-3-3 16:07:43

支持楼主
页: [1]
查看完整版本: frida踩坑记