malloc - 是什么决定了注入代码将调用哪个`malloc`?
问题描述
我正在使用 frida 来挂钩在 Windows 上运行的 Firefox Web 浏览器的各种功能。我上钩的符号之一是mozglue::malloc()
调用jemalloc
分配器。在进程地址空间中有三个malloc()
符号:
- 在
msvcrt.lib
(静态链接) - 用于
ucrtbase.dll
动态链接 - 中已经提到
mozglue.dll
我期待 Firefox 进程所做的所有内存分配都将由 分配mozglue::malloc()
,当然这确实发生了。
我没想到注入到目标进程的 frida JS 代理进行的内存分配也会使用 分配jemalloc
,老实说我仍然不知道为什么。
frida 在第一次附加到进程时不可能知道有一个mozglue::malloc()
符号,从 frida 的角度来看,有一个简单的调用malloc()
,那么这个调用是如何以及为什么从默认的 CRT 符号重定向到 Mozila dll 的?这可能与PE设计有关,但我不能指望它......
感谢您的任何帮助/见解/回答
解决方案
mozglue::malloc
甚至不应该是 Firefox 内部调用的唯一函数,因为 Firefox 调用的某些系统函数将使用系统 malloc。
我只看到一种解释:Firefox 用它自己的 malloc 版本替换了内存中的原始 malloc 调用。检查源代码支持这个想法:https ://searchfox.org/mozilla-central/source/memory/build/replace_malloc.h
推荐阅读
- python-3.x - 为特征工程生成归一化离散值
- json - Postman 是否支持控制请求体的格式?
- data-warehouse - informatica 代码在 Dev 中生成了 476 Gigs 的会话日志
- amazon-web-services - 在数据管道 ec2 实例上运行 docker
- spring - Spring Kafka - 如何使用 @KafkaListener 重试
- django - 在 django 模板中对 div 进行排序
- sql-server - 是否有一些快速的方法可以将 ADO 记录集转储到新的 MS ACCESS 表中?
- python-3.x - **kwargs 在 mpi4py MPIPoolExecutor 中不起作用
- html - UI 字段未水平居中对齐
- android - 找不到片段构造函数