javascript - 从 frida hook 本地方法 basic_string 参数中读取值

标签 javascript c++ frida

最近我开始使用 Frida 并尝试使用一些本地方法。但是我在读取 basic_string

的值时遇到问题

这是我正在使用的方法:

这是我用来 Hook 方法的 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
    }
});

在输出中我得到了!字符而不是实际值

这样做的正确方法是什么?

最佳答案

使用这个 frida 代码解决了问题:

function readStdString (str) {
  const isTiny = (str.readU8() & 1) === 0;
  if (isTiny) {
    return str.add(1).readUtf8String();
  }

  return str.add(2 * Process.pointerSize).readPointer().readUtf8String();
}

来源:https://codeshare.frida.re/@oleavr/read-std-string/

最终工作代码:

Interceptor.attach(Module.getExportByName('libsigning.so', '_ZN8Security4signEP7_JNIEnvP6rsa_stRKNSt6__ndk112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE'), {
    onEnter: function (args) {
        console.log("RSA.sign()")
        console.log(readStdString(args[2]))
    },
    onLeave: function (retval) {
        // simply replace the value to be returned with 0
        return retval
    }
});

关于javascript - 从 frida hook 本地方法 basic_string 参数中读取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68243063/

相关文章:

javascript - 无法使用 frida 从界面中检索值

javascript - ServiceWorker 处理范围外 URL 的获取事件

javascript - 如何在 jquery 中查找具有相同类名的嵌套 div?

javascript - 如何在javascript中求变量之和?

javascript - 使用 Mocha/Chai 测试异步函数时,无法满足期望总是会导致超时

c++ - 使用 regex.h 时内存泄漏?

android - (FRIDA) 生成失败 : unable to access zygote64 while preparing for app launch; try disabling Magisk Hide in case it is active

c++ - 字符串中的字符数

c++ - 优化 C++ 中的三元组求和

android - 无法连接到 frida 服务器 : need Gadget to attach on jailed Android