Skip to content
Stack Ashes
Go back

Frida的一些模板和配置及一些场景目录和问题记录

本文主要记录了Frida的一些模板和配置及一些场景目录和问题记录 前提是已经安装了Frida,查看其他文章

启动和配置

adb root
adb shell


cd /data/local/tmp
 
# 修改 文件 权限
chmod 755 frida-server
 
# 运行文件
./frida-server


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

frida-ps -U

Frida的一些模板和配置

python模板

import frida
import sys


# 定义消息回调函数,接收 Frida 脚本发送的消息
def on_message(message, data):
    if message["type"] == "send":
        print(message["payload"])
    else:
        print(message)


# 使用包名来附加目标应用并执行 JS 代码
def hook_target_application(app_name, js_file):
    # JavaScript 脚本内容
    with open(js_file, encoding="utf-8") as fin:
        script_source = fin.read()

    # 获取 USB 设备并通过包名附加到目标应用
    # 也可以使用进程id
    device = frida.get_usb_device()

    # pid = device.spawn(package_name)
    # print(pid)
    process = device.attach(app_name)
    # 创建并加载脚本
    script = process.create_script(script_source)
    script.on("message", on_message)
    script.load()

    # 等待用户输入停止信号
    sys.stdin.read()

    # 卸载脚本并分离进程
    script.unload()
    process.detach()


# 主函数
if __name__ == "__main__":
    # 设置目标应用的包名
    app_name = "My Application"
 
    js_file = "scripts/js_file.js"
    # 调用函数进行 hook
    hook_target_application(app_name, js_file)

js模板

Java.perform(function () {
    // 获取 JNI 类
    var Activity = Java.use('com.example.myapplication.MainActivity');
    
    // 重写 getResult 方法
    Activity.check.implementation = function (str) {
        console.log('getResult called with:', str);
        
        // 调用原始方法
        var result = this.check(str);
        console.log('getResult returned:', result);
        // 返回原始结果
        result = "right";
        return result;
    };
});

利用脚本

有这样一个场景 打开闪退 所以需要frida进行自启动app

adb shell pm list packages|findstr che

frida -U -f com.chehejia.oc.m01 -l hook.js

Q

process = device.attach(app_name) 如果使用包名的话,会报错,需要使用进程id或者应用名称

Github也有这个issue?

alt text


Share this post on:

Previous Post
re入门
Next Post
网络代理