Frida之安装和使用教程

前言

在日常分析安卓应用时,通常会有对应用进行hook的需求,用的比较多的hook框架有Xposed,frida,xhook等,正好最近接触Frida接触的较多,所以对Frida的一些常用操作做个记录,方便以后翻阅查询,同时也可以对学习frida的小伙伴有个参考的资料;

一般Frida逆向三阶段:

  1. 阶段一.分析程序执行逻辑,函数参数,函数返回值
  2. 阶段二.在1的基础上对数据进行修改,执行流程的控制,核心方法的调用
  3. 阶段三.在2的基础上实现对核心方法的封装调用,提供对外服务接口

1.FRIDA安装

1.1.安装python3环境

https://www.python.org/ 下载最新的直接安装

1.2.frida安装

C:\Users\Administrator>pip install frida-tools
Collecting frida-tools
/...省略.../
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  Running setup.py install for frida-tools ... done
Successfully installed colorama-0.4.0 frida-12.2.25 frida-tools-1.2.2 prompt-toolkit-1.0.15 pygments-2.2.0 six-1.11.0 wcwidth-0.1.7

推荐下面这个版本 非常稳定 实测

pip install frida==14.2.18
pip install frida-tools==9.2.5
pip install objection==1.8.4

1.3.frida-server下载

frida-server下载需要注意的有两点:
1.安装的frida版本:需要下载与安装的frida版本对应的frida-server,否则会出错。

C:\Users\Administrator>frida --version
12.2.25

下载地址:https://github.com/frida/frida/releases

2.手机设备的架构:因为我的手机是arm64平台的所以选择的是android-arm64

frida-server-12.2.25-android-arm64.xz

下载完毕之后,解压后通过adb push到设备的临时目录下

adb push frida-server-12.2.25-android-arm64 /data/local/tmp/

1.4.启动frida服务并连接

adb shell进入设备shell环境,cd到临时目录下,给frida-server文件设置可执行权限使其可以运行

chmod 755 frida-server-12.2.25-android-arm64

之后运行frida服务文件,注意需要通过root权限去运行

./frida-server-12.2.25-android-arm64

然后 进行端口转发

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

完毕后就可以在windows上运行简单的frida命令测试我们是否安装成功了

/* -U 连接USB设备 */
/* frida-ps 列出正在运行的进程*/
C:\Users\Administrator>frida-ps -U
PID  Name
----  --------------------------------
310  1:3
714  360sguard
723  360sguard
373  ATFWD-daemon
575  adbd
259  adsprpcd
[....]
3289  zygote

1.5.搭建frida开发环境

$ git clone git://github.com/oleavr/frida-agent-example.git
$ cd frida-agent-example/
$ npm install
$ frida -U -f com.example.android --no-pause -l _agent.js

2.FRIDA 基础

首先来看一下frida的常用功能

常见的参数及其含义:

参数 含义
-U 使用 USB 设备连接
-l 指定js脚本的路径名字
-F app 最前显示的应用
-f 指定包名,自动启动 app 用%resume 恢复主线程
–no-pause 启动后,自动运行主线程 可省略%resume
–debug 附加到 Node.js 进行调试
-o 将输入的日志文件保存到指定路径
-p 指定进程ID
-n 指定包名附加

举个例子:

frida -U --no-pause -f tv.danmaku.bili -l hook_bilibili.js -o hook_bili.log

2.1.frida查看当前设备进程

λ frida-ps -U
  PID  Name
-----  -------------------------------------------------------
6241  adbd
897  adsprpcd
749  android.hardware.audio@2.0-service
947  android.hardware.biometrics.fingerprint@2.1-service.fpc
750  android.hardware.bluetooth@1.0-service-qti
600  android.hardware.boot@1.0-service
752  android.hardware.camera.provider@2.4-service
753  android.hardware.cas@1.0-service
612  android.hardware.configstore@1.1-service
[...]

2.2.frida对指定方法进行trace

λ frida-ps -U | grep frida 
31521  cn.gemini.k.fridatest  
30073  frida-helper-32 

λ frida-trace -i "open" -U "cn.gemini.k.fridatest"
Instrumenting...
open: Auto-generated handler at "E:\\Frida\\frida_work\\__handlers__\\libutils.so\\open.js"
Started tracing 1 function. Press Ctrl+C to stop.  
           /* TID 0x7b3a */
16061 ms  open()
           /* TID 0x7b3c */
16114 ms  open()                                                                            
16114 ms  open()                                                                            
16114 ms  open()                                                                            

用的比较多的一般就是上面的两个功能,都是frida帮我们生成好了hook代码,直接拿来使用就行,简单方便,但有时候我们想自己定制些功能怎么办?

接下来看下如何通过编写js代码来实现对安卓APP中某些方法的hook。
在hook之前首先要熟悉我们需要hook的目标方法,应用包名,参数等基础信息。这里简单写了个demo,后面我们都通过这个demo来学习。

package cn.gemini.k.fridatest;
import android.util.Log;

public class FridaHook1 {
   
    static String password = "88888888";
    int cde = 20;
    int abc = 10;
    public int abc(){
   
        return abc;
    }

    FridaHook1(){
   
        Log.e(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值