【发布时间】: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