avatar

Catalog
Frida简要安装教程(2021.3.14更新)

概述

Frida是个轻量级别的hook框架。用Roy_Chen的话来说,说的专业一点,Frida是一种动态插桩工具,可以插入一些代码到原生app的内存空间去(动态地监视和修改其行为),这些原生平台可以是WinMacLinuxAndroid或者iOS

Frida使用Python 注入 JavaScript 脚本,从而能够在程序运行时实时地插入额外代码和数据,尽管大多数情况下,Frida用在对Android程序的Hook,但实际上是可以作用在大部分原生平台的。

关于Frida的使用方法等相关内容,会在后面对Android进行Hook的部分再作讨论,在这之前还有Smail汇编,Arm指令,Dex文件格式等内容的学习。之所以现在就介绍Frida安装的内容,是因为最近打算试着编写Android平台的Hook代码,在安装Frida时遇到了一些坑,防止以后忘记,在此先记录下来。

安装Python3

Frida是用的Python作为接口注入JavaScript代码的,首先我们需要安装Python。为啥是3.7版本的呢?因为网上查阅的资料都是用的Python3.7,我也就用Python3.7了。虽然还是会遇到问题,待会再讨论。(2021.3.14更新:不一定要3.7版本的Python,但是frida的版本,frida-server的版本,以及Python3的版本,一定要能对的上)

官网下载个Python3.7后,安装,记得点击下面的添加路径

打开命令行,键入python,回车,进入Python交互界面,安装成功。

安装Frida

常规方法

有个非常简单的办法

Code
1
2
pip3 install frida
pip3 install frida-tools

只要在命令行中执行完这两条语句即可成功安装。但是多数情况下,在一台机器上第一次安装frida时,通过这两行指令很难一次成功(我在公司一次成功了,还是在没有科学上网的情况下…),会遇到奇奇怪怪的坑,耽误很久。也因此下面还有一个比较常规的半手动安装的办法。

手动安装方法

  1. 这里下载相应的文件如下:两个文件frida-12.8.20.tar.gz frida-12.8.20-py3.7-win-amd64.egg,根据自己的系统和型号选择进行下载,但是这两个文件的版本号一定要对应。(2021.3.14更新:在手动安装的情况下,.egg文件必须和当前Python的版本匹配,例如现在是3.7版本,那么就不能用Python3.8,此外手机端的frida-server也必须和.egg文件指定的frida版本匹配,例如现在就必须用frida-12.8.20的frida-server。当然这个版本现在在Android真机上跑不起来了,最好还是安装新版,为此.egg文件以及Python版本也要同步)

  2. 将下载的文件frida-12.8.20.tar.gz解压,进入目录后,执行如下指令安装

    Code
    1
    python setup.py install

    第一次执行时往往会失败,因为指定目录下找不到frida-12.8.20-py3.7-win-amd64.egg文件,我们只需要将该文件复制到它指定的目录下(%UserProfile%),再执行一遍指令即可

  3. 这时,我们相对于手动完成了pip3 install frida指令执行的操作,接下来只需进入命令行执行指令(注:这里还需要将frida-12.8.20-py3.7-win-amd64.egg文件复制到*\Python\Lib\site-packages目录下再执行下述指令;该指令会执行失败多次,需要重复尝试以及长时间等待才能完成frida的完整安装。2020/7/5补充

    Code
    1
    pip3 install frida-tools

    即可完成frida安装。

  4. 安装成功后,输入指令进行验证

调试Android真机(2021.3.14新增)

环境:一台电脑(已安装frida和adb)、一部安卓手机(已root,并开启USB调试)

  1. 完成上述安装后,在官网下载对应版本的frida-server-版本号-android-arm.xz(以Android6.0.1版本的手机为例)

  2. 解压后,修改文件名为frida-server

  3. 进入命令行,执行指令adb push frida-server /data/local/tmp,将frida-server给弄到真实机的/tmp目录下

  4. 接下来adb shell进入真机shell,su切换root用户,找到frida-server后修改权限为755。然后在当前目录下执行./frida-server &。若看到返回进程PID的结果,说明frida-server成功在手机端被启用。

  5. 最后,新开一个命令行窗口,执行frida-ps -U(U是指明指令应用在USB连接的设备上),若能列出真实机上的进程,则说明实验成功。

小结

以上是在笔记本中配置环境时采的坑,由于台式机尚未配置,写下此篇也是方便以后配置时踩到坑再来看。(2021.3.14,新入职后,负责Android逆向,最近采了不少坑,当然主要是在家配置环境时遇到的,在单位倒是一帆风顺,另一方面,关于IDA动态调试后面也会考虑更新,但目前能力有限,对于壳以及反调试仍没有作为)

参考链接

  1. https://www.freebuf.com/articles/system/190565.html (Roy_Chen一篇关于对Frida的介绍文章)
  2. https://www.cnblogs.com/pcat/p/12501850.html (简单Frida安装方法,第一次成功率不高)
  3. https://www.cnblogs.com/tjp40922/p/12799139.html (常规Frida安装方法,成功率高)
  4. https://www.jianshu.com/p/c349471bdef7 (一篇关于Frida的简要介绍)
Author: cataLoc
Link: http://cataloc.gitee.io/blog/2020/05/11/frida%E5%AE%89%E8%A3%85%EF%BC%8820210314%E6%9B%B4%E6%96%B0%EF%BC%89/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶