Frida Python Api 详解(1)

install Frida 的Python库

版本很重要,比如别人教程里面的enumerate_modules()``enumerate_ranges(mask) 都不在了。因为新版本移除了。

要不然你看了别人的教程肯定会说,卧槽这博主怎么骗人。

Frida Python Api 详解(1)_第1张图片
image.png

如图,与frida相关的库有两个

fridafrida_tools 结构如下:

Frida Python Api 详解(1)_第2张图片
image.png

Frida Python Api

Frida的Python API接口是一种(C)底层接口的封装,而且功能也是相当的有限,你可以把这些接口当作是一种底层核心接口封装的示例代码来看待。

所以官网并没有关于Python Api 的介绍(但是有C API介绍),需要自行阅读frida/core.py 的代码.

Python示例

一个python 配和 js脚本hook Android方法的示例

import frida, sys

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

jscode = """
Java.perform(function () {
    // Function to hook is defined here
    var MainActivity = Java.use('com.example.seccon2015.rock_paper_scissors.MainActivity');

    // Whenever button is clicked
    MainActivity.onClick.implementation = function (v) {
        // Show a message to know that the function got called
        send('onClick');

        // Call the original onClick handler
        this.onClick(v);

        // Set our values after running the original onClick handler
        this.m.value = 0;
        this.n.value = 1;
        this.cnt.value = 999;

        // Log to the console that it's done, and we should have the flag!
        console.log('Done:' + JSON.stringify(this.cnt));
    };
});
"""

process = frida.get_usb_device().attach('com.example.seccon2015.rock_paper_scissors')
script = process.create_script(jscode)
script.on('message', on_message)
print('[*] Running CTF')
script.load()
sys.stdin.read()

这里只用到了frida库,主要是链接上目标进程建立会话并加载js脚本hook目标程序。

  • frida.get_usb_device() 获取usb device对象 类似的还有get_remote_device get_local_device
  • attach('com.example.seccon2015.rock_paper_scissors') 获取到的device对象 attach 到目标进程上获得会话 Session
  • Session.create_script("") 创建载入js脚本 Script
  • script.load() 载入运行脚本

frida 里面的内容本来就不多,核心就一个Core类,简单介绍里面的核心内部类。

  • DeviceManager 设备管理类 包括开关 添加移除操作

  • Device 设备对象,可以获取指定进程 开关

  • Session 会话 主要加载脚本

  • Script 脚本对象 执行

你可能感兴趣的:(Frida Python Api 详解(1))