Linux LD_预加载堆栈和数据段内存分配

Linux LD_预加载堆栈和数据段内存分配,linux,linux-kernel,linux-device-driver,Linux,Linux Kernel,Linux Device Driver,您好 我正在编写一个Linux模块(基于一个名为“Ccontrol”的GitHub项目)来创建缓存分区(也称为页面着色),以减轻定时端通道攻击(防止像Prime+Probe这样的攻击) 我使用了LD\u PRELOADsystem env变量来覆盖所有malloc()、calloc()和free()调用,并将它们替换为颜色感知调用。 现在,我正在寻找另外的颜色堆栈和数据段也。 为新生成的进程分配内存的系统调用/库是什么? 是否有方法使用LD\u PRELOAD或任何其他方法覆盖此调用(而不


您好

我正在编写一个Linux模块(基于一个名为“Ccontrol”的GitHub项目)来创建缓存分区(也称为页面着色),以减轻定时端通道攻击(防止像Prime+Probe这样的攻击)

我使用了
LD\u PRELOAD
system env变量来覆盖所有
malloc()
calloc()
free()
调用,并将它们替换为颜色感知调用。 现在,我正在寻找另外的颜色堆栈和数据段也。 为新生成的进程分配内存的系统调用/库是什么?
是否有方法使用
LD\u PRELOAD
或任何其他方法覆盖此调用(而不重新编译内核)

提前谢谢大家,,

Gal

有两个内存分配系统调用:
sbrk
,用于扩展(连续)堆段和
mmap
,用于将单独的匿名内存段映射到调用进程的地址空间

但是,您将无法使用
LD_PRELOAD
在任何地方覆盖这些。 只有当覆盖的代码通过DSO导出的libc包装器进行这些调用时,您才能执行此操作,这意味着您将无法覆盖直接系统调用和通过未报告的包装器(DSO内部(
\u属性(可见性(“隐藏”))进行的系统调用)
),大多数libc实现都会使用它。您也无法覆盖动态链接器进行的系统调用

如果您需要一种健壮的方法来覆盖调用,则需要转到
ptrace
或修改内核