即时重新定位VDSO

时间:2014-01-01 17:58:33

标签: linux memory process computer-forensics vdso

我正在尝试从RAM转储中为我的程序中分配一个新的VDSO。我在“Linux user1-vbox 3.2.0-55-generic-pae#85-Ubuntu SMP Wed Oct 2 14:03:15 UTC 2013 i686 i686 i386 GNU / Linux”

问题是:

  • 内存替换效果非常好
  • 调用*%gs:通常调用__kernel_vsyscall的0x10完全丢失

问题是每次我运行我的程序时,%gs都是相同的(0x33),但必须有一些东西不断告诉proc“VDSO在这里”,并且我想修改为“嘿,不,现在,VDSO就在那里“。

我在Google上搜索了一下,我发现VDSO地址在两个变量的帮助下保存在进程内存中:AT_SYSINFO和AT_SYSINFO_EHDR。两者都属于一个名为“auxv”的数组,它位于堆栈中,紧跟在argc,argv和envp之后。

但即使我修改了这个值,我的进程仍然会找到一种方法来了解其VDSO的位置。什么方式?

0 个答案:

没有答案