frida so Hook 函数参数返回值修改

本文介绍了使用Frida工具在移动开发中进行动态 Hook 的技术,通过Hook Java和C/C++函数,实现对参数和返回值的修改,深入理解动态代码注入与调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

frida so Hook 函数参数返回值修改

![](https://s1.51cto.com/images/blog/201905/21/e59d78e7f1f9e60f376fd81c75cbd12f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
# -*- coding: UTF-8 -*-
import frida, sys

jsCode = """

Java.perform(function(){

    var nativePointer = Module.findExportByName("libhello.so", "Java_com_xiaojianbang_app_NativeHelper_add");
    send("native: " + nativePointer);
    Interceptor.attach(nativePointer, {
        onEnter: function(args){
            send(args[0]);
            send(args[1]);
            send(args[2].toInt32());
            send(args[3].toInt32());
            send(args[4].toInt32());
            args[4] = ptr(1000);   //new NativePointer
            send(args[4].toInt32());
        },
        onLeave: function(retval){
            send(retval.toInt32());
            retval.replace(10000);
            send(retval.toInt32());
        }
    });

});

""";

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

process = frida.get_remote_device().attach("com.xiaojianbang.app")
script= process.create_script(jsCode)
script.on("message", message)
script.load()
sys.stdin.read()

转载于:https://blog.51cto.com/haidragon/2397665

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值