【问题标题】:Frida (android) - why java.lang.StringBuilder append is not hookedFrida (android) - 为什么 java.lang.StringBuilder append 没有被钩住
【发布时间】:2019-12-26 18:33:04
【问题描述】:

我正在学习弗里达。

例如,我只是通过 StringBuilder 创建了一个字符串并附加它。

我用“frida”钩住了“append”。

但它不起作用。

    String val;
    val = "Log Data....";
    StringBuilder log = new StringBuilder("LOG : ").append(val);
    log.append("[[");
    log.append("]]");
Java.perform(function () {

    var StringBuilder = Java.use('java.lang.StringBuilder');
    var ctor = StringBuilder.$init.overload('java.lang.String');

    ctor.implementation = function (arg) {
        var log_arg = '';
        var result = ctor.call(this, arg);
        if (arg !== null) {
            log_arg = arg.toString();
        }

        console.log('new StringBuilder("' + log_arg + '");');
        return result;
    };

    var append = StringBuilder.append.overload('java.lang.String');


    append.implementation = function (arg) {
        var result = append.call(this, arg);
        var log_arg = '';
        if (result !== null) {
            log_arg = result.toString();
        }
        console.log('StringBuilder.append1(); => ' + log_arg);
        return result;
    };
});

结果: new StringBuilder("LOG : ");

“日志数据....[[]]” - 我看不到消息....可能没有挂钩。

【问题讨论】:

  • 我会使用this.append(arg) 而不是append.call(this, arg);。不确定这两个版本是否可行。

标签: frida


【解决方案1】:

您要附加的挂钩并未挂钩已初始化的实例。

var ctor = StringBuilder.$init.overload('java.lang.String');

这是您初始化和分配的地方,因此您需要在此处进行调用。 有点像

var append = ctor.implementation = function(arg)...

应该可以。但是因为 StringBuilder 有大量的重载来覆盖大量的数据类型并且它可以被调用很多次,所以简单地挂钩它的 toString 方法要容易得多,这样您就不必进行任何转换或编写大量的重载。

const StringBuilder = Java.use('java.lang.StringBuilder');
 StringBuilder.toString.implementation = function () {
var res = this.toString();
var tmp = "";
if (res !== null){
    tmp = res.toString().replace("/n", "");
    console.log(tmp);
}

return res;
};

应该挂钩它将输出的实际字符串。

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 2020-07-27
    • 1970-01-01
    • 2022-06-14
    • 2011-02-15
    • 2021-01-20
    • 2022-09-26
    • 2011-06-20
    • 1970-01-01
    相关资源
    最近更新 更多