Firda入门

什么是Frida:

Frida是一款基于python + js的Hook框架,适用于android

ios等平台,由于是基于脚本的交互,因此相比xposed和substrace cydia更加便捷。Frida的官网为:http://www.frida.re/

frida环境的搭建主要分为两个部分, 一部分是运行在系统上的交互工具 frida,另一部分是运行在Android机器上的注入工具 frida-server。

Frida的环境搭建需要两个部分,分别为Frida和Frida-server。

  • 安装Frida:
pip install frida-tools
  • Frida-server安装
下载地址:
https://github.com/frida/frida/releases

下载前,需要查看当前手机架构信息,在adb shell中使用如下命令进行查看

C:\Users\Administrator>adb shell #进入手机底层安卓操作系统
shell@X3:/ $ su                  #切换到root权限
root@X3:/ # cat /proc/cpuinfo    #查看架构信息
Processor       : AArch64 Processor rev 2 (aarch64)  #架构为AMD64
processor       : 0
model name      : AArch64 Processor rev 2 (aarch64)
BogoMIPS        : 26.00
Features        : fp asimd aes pmull sha1 sha2 crc32
fp asimd aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: AArch64
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 2
Hardware        : MT6795T

根据手机版本安装即可

Android 设备的CPU类型(通常称为"ABIs")
1.armeablv-v7a:第7代及以上的ARM处理器,2011年5月以后生成的大部分android都使用它
2.arm64-v8a:第8代64位ARM处理器
3.armeabi:第5代。第6代ARM处理器,早期的手机用的比较多
4.x86:平板,模拟器用的比较多
5.x86_64:64位的平板

之后解压处理 将文件push 进 /data/local/tmp 这个目录

命令:adb push frida-server-12.2.18-android-arm /data/local/tmp/frida-server

之后需要设置权限,就可以 测试frida

测试命令:./frida-server

使用如下命令转发android TCP端口到本地:

adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
之后另外开启一个命令窗口运行命令:frida-ps -U

入口看到下面这样“frida-ps 不是内部或外部命令” ,需要再安装frida-tools

命令:pip install frida-tools
安装完再次执行测试命令:frida-ps -U

===============
可参考具体的业务编写hook代码
示例:

import frida,sys

jscode = '''
Java.perform(function () {
    var MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');
    MainActivity.onClick.implementation = function (v) {
        send("开始Hook");
        this.onClick(v);
        this.n.value = 0;
        this.m.value = 2;
        this.cnt.value = 999;
        send("Hook成功!")
    }
});
'''

def on_message(message, data):
    if message['type'] == 'send':
        print("[*] {0}".format(message['payload']))
    else:
        print(message)

process = frida.get_usb_device().attach("com.example.seccon2015.rock_paper_scissors")
script = process.create_script(jscode)
script.on("message",on_message)
script.load()
sys.stdin.read()

posted on 2019-10-11 10:10  action555  阅读(1217)  评论(0编辑  收藏  举报