【发布时间】:2021-09-15 11:07:09
【问题描述】:
最近我开始使用 Frida 并使用一些本地方法。但是我对basic_string的读取值有疑问
这是我正在挂钩的方法:
这是我用来挂钩方法的 JavaScript 代码:
Interceptor.attach(Module.getExportByName('libsigning.so', '_ZN8Security4signEP7_JNIEnvP6rsa_stRKNSt6__ndk112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE'), {
onEnter: function (args) {
console.log("RSA.sign()")
console.log(Memory.readCString(args[2]))
},
onLeave: function (retval) {
// simply replace the value to be returned with 0
return retval
}
});
在输出中我得到了!字符而不是实际值
这样做的正确方法是什么?
【问题讨论】:
-
似乎
basic_string不是指向char[]而是指向C++ 对象的指针。因此,当直接使用该指针时,您会将 c++ 实例数据解释为不起作用的字符串。请参阅en.cppreference.com/w/cpp/string/basic_string 和 stek29.rocks/2017/08/07/frida-stdstring.html 和 codeshare.frida.re/@oleavr/read-std-string -
罗伯特感谢您的回答,您解决了我的问题
标签: javascript c++ frida