【问题标题】:What is determing which `malloc` will be called for an injected code?什么决定了注入代码将调用哪个`malloc`?
【发布时间】:2020-05-04 08:16:50
【问题描述】:

我正在使用 frida 来挂钩在 Windows 上运行的 Firefox 网络浏览器的各种功能。我上钩的符号之一是mozglue::malloc(),它需要jemalloc 分配器。 在进程地址空间中有三个malloc() 符号:

  1. msvcrt.lib(静态链接)
  2. ucrtbase.dll 中用于动态链接
  3. mozglue.dll已经提到了

我原以为 Firefox 进程所做的所有内存分配都将由 mozglue::malloc() 分配,当然这确实发生了。

没想到frida JS代理注入目标进程的内存分配也会使用jemalloc分配,老实说我还是不知道为什么。

frida 在第一次附加到进程时不可能知道有一个 mozglue::malloc() 符号,从 frida 的角度来看,有一个对 malloc() 的简单调用,那么这个调用是如何以及为什么重定向的Mozilla dll 的默认 CRT 符号?这可能与PE设计有关,但我不能指望它......

感谢任何帮助/见解/回答

【问题讨论】:

    标签: malloc hook code-injection dynamic-linking frida


    【解决方案1】:

    mozglue::malloc 甚至不应该是 Firefox 内部调用的唯一函数,因为 Firefox 调用的某些系统函数将使用系统 malloc。

    我只看到一种解释:Firefox 用它自己的 malloc 版本替换了内存中原来的 malloc 调用。检查源代码支持这个想法:https://searchfox.org/mozilla-central/source/memory/build/replace_malloc.h

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多