私はフリーダを勉強しています。
例として、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 : ");
" Log Data....[[]] " - メッセージが表示されません....おそらくフックしていません。