如何测试简易malloc与free实现?基于LD_PRELOAD的32位汇编覆写实践
基于LD_PRELOAD的malloc/free覆写(32位汇编实现)
我最近折腾出一个32位汇编程序,靠LD_PRELOAD机制实现了对malloc和free函数的覆写,具体细节如下:
核心用途
- 利用
LD_PRELOAD环境变量,让目标进程调用我们自定义的malloc和free,而非系统默认实现
设计思路与内存结构
当依赖这个例程的程序请求某一大小的内存时,我们实际分配的内存会比请求的要大——多出来的部分会放在最终返回给调用者的指针前方。这部分额外空间用来存储两个关键信息:
- Size字段:记录我们实际分配的内存总容量
- 可用/不可用标记:标记当前内存块是否处于可用状态
对应的内存布局大概是这样的:
#########################################################
[可用/不可用标记] | [Size字段] | [用户实际使用的内存空间]#########################################################
内容的提问来源于stack exchange,提问作者Nishant
相关产品推荐
相关产品推荐

