【问题标题】:Is it possible to change the arguments of a hooked function in Frida and forward them?是否可以在 Frida 中更改挂钩函数的参数并转发它们?
【发布时间】:2019-01-01 06:17:35
【问题描述】:

我已经和 Frida 一起玩了几天,但我不知道我所问的是否可能。基本上,我想连接一个函数(在 Android 应用程序上),更改参数的值,然后执行更改了参数值的原始函数。到目前为止,我能够连接到该函数,并打印 arg 的值;但我不能改变他们的价值观。

例如,我的 Java 函数如下所示:

public void myFunction(Sometype foo) {
    ...
}

Sometype 是一个接口,它提供了一些访问值的方法(例如getA(), getB())。

这是我用来连接函数的 Frida JS 脚本:

    setImmediate(function () {
        console.log("[*] Starting script");

        // Call:
        // frida -U -l scripts/myscript.js com.somepackage
        Java.perform(function () {

            var target = Java.use("com.somepackage.clazz");
            target.myFunction.implementation = function(var1) {

                // print: getA()
                console.log("a:" + var1.a());
                // print: getB()
                console.log("b:" + var1.b());

                // I tried this, but it didn't work.
                var1.a = function () {
                    return "xxx";
                }

                // print: getA() again, but got the same value as before
                console.log("a:" + var1.a());

                this.onMessageReceived(var1);
            }

        });        
    });

【问题讨论】:

    标签: android android-instrumentation frida


    【解决方案1】:

    假设“a”是返回String的方法,试试下面的代码:

    function Main() {
        Java.use("com.somepackage.clazz").a.overload("java.lang.String").implementation = function(s) {
            return "xxx";
        };
        Java.use("com.somepackage.clazz").myFunction.implementation = function(var1) {
            /// ...
            this.onMessageReceived(var1);
        };
    }
    Java.perform(Main);
    

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 1970-01-01
      • 2021-01-20
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 2021-09-15
      • 1970-01-01
      相关资源
      最近更新 更多