frida安装教程及案例

什么是frida

frida是一款代码注入工具,它可以实现hook一个方法,让其返回我们需要的值。这是我刚接触这工具的理解。

如何安装

网上的教程可以说是百花齐放,相得益彰,下面的
教程将教你如何手动安装,而非自动化。为什么不使用自动化呢?手动安装速度更快,可以避免很多如证书错误,
网络延迟等一系列外在因素,造成安装失败的结果。
在这里插入图片描述

第一步,下载egg文件到用户目录下

我电脑是mac,使用的版本是12.6.7,
所以我下载的是
frida-12.6.7-py3.6-macosx-10.6-intel.egg,如果你的是
windows或linux,请选择对应版本下载。
在这里插入图片描述

第二步,进入文件下载目录,手动进行安装

easy_install frida-12.6.7-py3.6-macosx-10.6-intel.egg

在这里插入图片描述

  • 提示。若出现以下错误,请将egg文件移动至对应目录再安装。
looking for prebuilt extension in home directory, i.e. /Users/huozhenlin/frida-12.6.11-py3.6-macosx-10.6-intel.egg
no prebuilt extension found in home directory
error: Setup script exited with error: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)>

第三步,安装frida-tools

pip3 install frida-tools

若提示如下信息,说明安装成功

Requirement already satisfied: frida-tools in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/frida_tools-2.0.1-py3.6.egg (2.0.1)
Requirement already satisfied: colorama<1.0.0,>=0.2.7 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from frida-tools) (0.4.1)
Requirement already satisfied: frida<13.0.0,>=12.5.9 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/frida-12.6.11-py3.6-macosx-10.9-x86_64.egg (from frida-tools) (12.6.11)
Requirement already satisfied: prompt-toolkit<3.0.0,>=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/prompt_toolkit-2.0.9-py3.6.egg (from frida-tools) (2.0.9)
Requirement already satisfied: pygments<3.0.0,>=2.0.2 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/Pygments-2.4.2-py3.6.egg (from frida-tools) (2.4.2)
Requirement already satisfied: six>=1.9.0 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from prompt-toolkit<3.0.0,>=2.0.0->frida-tools) (1.12.0)
Collecting wcwidth (from prompt-toolkit<3.0.0,>=2.0.0->frida-tools)
  Using cached https://files.pythonhosted.org/packages/7e/9f/526a6947247599b084ee5232e4f9190a38f398d7300d866af3ab571a5bfe/wcwidth-0.1.7-py2.py3-none-any.whl
Installing collected packages: wcwidth
Successfully installed wcwidth-0.1.7

校验frida是否正常工作

$ frida -h

若正常输出以下信息,说明安装成功

Usage: frida [options] target

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -D ID, --device=ID    connect to device with the given ID
  -U, --usb             connect to USB device
  -R, --remote          connect to remote frida-server
  -H HOST, --host=HOST  connect to remote frida-server on HOST
  -f FILE, --file=FILE  spawn FILE
  -n NAME, --attach-name=NAME
                        attach to NAME
  -p PID, --attach-pid=PID
                        attach to PID
  --debug               enable the Node.js compatible script debugger
  --enable-jit          enable JIT
  -l SCRIPT, --load=SCRIPT
                        load SCRIPT
  -c CODESHARE_URI, --codeshare=CODESHARE_URI
                        load CODESHARE_URI
  -e CODE, --eval=CODE  evaluate CODE
  -q                    quiet mode (no prompt) and quit after -l and -e
  --no-pause            automatically start main thread after startup
  -o LOGFILE, --output=LOGFILE
                        output to log file

实战

本次选取app为某酒店app,该app设置了任何代理后,都将无法联网。
在这里插入图片描述
面对这种情况,经验丰富的逆向人员肯定想到了,该app会监听网络情况,当网络使用了任何代理,都将无法联网。

/*
    * 判断设备 是否使用代理上网
    * */
    private boolean isWifiProxy(Context context) {
   
 
        final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
 
        String proxyAddress;
 
        int proxyPort;
 
        if (IS_ICS_OR_LATER) {
   
 
            proxyAddress = System.getProperty("http.proxyHost");
 
            String portStr = System.getProperty("http.proxyPort");
 
            proxyPort = Integer.parseInt((portStr != null ? portStr : "-1"));
 
        } else {
   
 
            proxyAddress = android.net.Proxy.getHost(context);
 
            proxyPort = android.net.Proxy.getPort(context);
 
        }
 
        return (!TextUtils.isEmpty(proxyAddress)) && (proxyPort != -1);
 
    }

从以上代码中,我们可以知道,使用了代理,将返回true。那么,我们该怎么hook此函数,让其总返回false呢?

  1. 手机安装frida-server,下载地址
    我们将下载到的frida-server安装包放进手机data/local/tmp目录下。方法有很多,我是通过adb方式传送文件
    的。
$ adb push frida-server-12.6.6-android-arm64 /data/local/tmp/
  1. 启动frida-server
$ adb shell #进入adb终端
$ su # 切换至超级用户
$ cd data/local/tmp # 进入frida-server存放目录
$ chomd 777 ./frida-server-12.6.6-android-arm64 # 赋予目录可读可写执行权限  
$ ./frida-server

在这里插入图片描述
3. 手机启动目标程序,终端查看进程是否存在

$ adb forward tcp:27042 tcp:27042 # 端口转发,将frida端口映射至本地 
$ frida-ps -R

输出信息如下

  PID  Name
-----  -----------------------------------------
  375  6620_launcher
  659  MPED
  670  MtkCodecService
  651  aal
  398  adbd
 3064  android.process.acore
 1715  android.process.media
  668  batterywarning
  380  ccci_fsd
  382  ccci_fsd
  381  ccci_mdinit
  383  ccci_mdinit
 2468  com.amap.android.location
 5051  com.android.calendar
28273  com.android.camera
 3766  com.android.defcontainer
 3669  com.android.fileexplorer:remote
 2673  com.android.phone
 5435  com.android.settings
 2176  com.android.settings:remote
 1699  com.android.systemui
14787  com.android.thememanager
22936  com.android.vending
20588  com.android.vending:instant_app_installer
 2017  com.miui.whetstone
26764  com.oyohotels.consumer
27064  com.oyohotels.consumer:remote
 6464  com.tencent.mm
 4701  com.tencent.mm:push

  1. 确认进程存在。接着,启动注入程序
$ frida -U com.oyohotels.consumer --no-pause -l hooks.js

此时,我们观察app运行情况及控制台日志输出

huozhenlindeMacBook-Air:frida_demo huozhenlin$ frida -U com.oyohotels.consumer --no-pause -l hooks.js
     ____
    / _  |   Frida 12.6.11 - A world-class dynamic instrumentation toolkit
   | (_| 
### 回答1: Frida 是一款非常强大的动态分析工具,可以用于检测移动应用程序的安全性。下面是 Frida 的安装详细教程: 1. 安装 Node.js:Frida 是基于 Node.js 开发的,需要先安装 Node.js。可以在 Node.js 官网下载对应操作系统的安装包,然后安装 Node.js。 2. 安装 Frida CLI:Frida CLI 是 Frida 的命令行工具,可以在终端中使用 Frida。可以使用以下命令安装 Frida CLI: ``` npm install -g frida-tools ``` 3. 配置手机或模拟器:在手机或模拟器上,需要安装 Frida Server。可以在 Frida 官网下载对应操作系统的 Frida Server,然后将 Frida Server 安装到手机或模拟器上。 4. 连接手机或模拟器:在电脑上,需要将 Frida 连接到手机或模拟器上。可以使用以下命令连接到手机或模拟器: ``` frida-ps -U ``` 如果 Frida 连接成功,会显示手机或模拟器上运行的应用程序列表。 5. Hook 应用程序:在电脑上,可以使用 Frida Hook 应用程序的 API,来进行动态分析。比如可以 Hook 应用程序的函数、变量等,来获取应用程序的运行信息。 ``` frida -U -l script.js com.example.app ``` 在上面的命令中,`-U` 表示连接到手机或模拟器上,`-l` 表示加载 JavaScript 脚本,`com.example.app` 表示要 Hook 的应用程序包名。 需要注意的是,Frida 是一款非常强大的动态分析工具,需要对应用程序的运行机制和安全机制有一定的了解,同时需要对 Hook 技术和系统 API 有一定的认识,才能更好地使用和理解 Frida。 ### 回答2: Frida是一种强大的动态分析工具,用于在Android、iOS以及其他平台上进行应用程序的逆向工程和调试。下面是Frida的安装详细教程: 1. 在你的机器上安装Python,确保Python版本是3.6或更高版本。 2. 打开终端或命令提示符,使用以下命令安装Frida: ``` pip install frida-tools ``` 如果你遇到了权限问题,可以使用管理员权限运行命令提示符或终端。 3. 安装完成后,可以使用以下命令检查Frida是否安装成功: ``` frida --version ``` 如果成功安装,会显示Frida的版本号。 4. 如果你需要在Android设备上使用Frida,需要在设备上安装Frida服务器。首先,确保你的Android设备已经开启开发者选项和USB调试模式。然后,使用以下命令将Frida服务器安装到设备上: ``` pip install frida-tools ``` 安装完成后,使用以下命令启动Frida服务器: ``` adb shell frida-server ``` 5. 现在,你可以使用Frida进行应用程序的动态分析和调试了。你可以编写Frida脚本,用于监控应用程序的函数调用、修改应用程序的行为等。以下是一个简单的Frida脚本示例,用于打印应用程序中的函数调用: ```python import frida def on_message(message, data): if message['type'] == 'send': print("[*] {0}".format(message['payload'])) session = frida.attach("应用程序包名") script = session.create_script(""" Interceptor.attach(Module.findExportByName(null, "函数名"), { onEnter: function(args) { send("调用函数:" + args[0].toInt32()); } }); """) script.on('message', on_message) script.load() ``` 将上述脚本保存为`script.py`,然后使用以下命令运行脚本: ``` python script.py ``` 脚本会自动注入到指定的应用程序中,当应用程序调用特定的函数时,会输出相应的信息。 以上就是Frida的安装详细教程,希望能对你有所帮助! ### 回答3: Frida是一款功能强大的动态注入工具,可用于进行移动应用逆向分析和安全评估。下面是Frida的详细安装教程: 1. 安装Python:Frida是基于Python开发的,因此首先需要安装Python。可以从Python官方网站上下载并安装最新版本的Python。 2. 安装Frida:在安装Python之后,可以使用pip工具来安装Frida。在终端或命令行中输入以下命令来安装Frida: ``` pip install frida-tools ``` 3. 安装Frida服务器:Frida通常需要在移动设备或模拟器上安装Frida服务器,以便与应用程序进行通信。可以通过以下命令来安装Frida服务器: ``` pip install frida frida-ps -U ``` 其中,`frida-ps -U`命令可以列出设备上正在运行的进程,以确保Frida服务器已安装和运行。 4. 配置设备网络代理:在移动设备上,需要将网络流量通过Frida来进行拦截和修改。可以通过以下命令来配置设备的网络代理: ``` adb forward tcp:27042 tcp:27042 ``` 5. 运行Frida脚本:现在可以编写Frida脚本来实现所需的功能。可以使用文本编辑器创建一个Python脚本,然后使用以下命令在设备上运行该脚本: ``` frida -U -f 应用程序包名 -l 脚本文件路径 ``` 其中,`应用程序包名`是目标应用程序的包名,`脚本文件路径`是Frida脚本的文件路径。 以上就是Frida安装的详细教程。在安装完成后,可以根据需要使用Frida进行移动应用的动态分析和修改。请注意,在使用Frida时要遵循相关法律和道德规范。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值