首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从frida钩式本机方法basic_string参数中读取值

从frida钩式本机方法basic_string参数中读取值
EN

Stack Overflow用户
提问于 2021-07-04 08:50:19
回答 1查看 2K关注 0票数 3

最近,我开始使用Frida,并使用一些本地的方法。但是我对basic_string的阅读价值有问题

下面是我所勾引的方法:

下面是用于钩子方法的JavaScript代码:

代码语言: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
    }
});

我得到了输出!字而非实值

怎样才是正确的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-04 16:40:04

使用此frida代码解决了问题:

代码语言:javascript
运行
复制
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/

最后工作守则:

代码语言:javascript
运行
复制
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
    }
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68243063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档