nit*_*nms 10 system-calls linux-kernel procfs
我正在研究一种有时会劫持应用程序执行的工具,包括在不同的堆栈中工作.
我正在尝试让内核在执行某些系统调用时总是看到应用程序堆栈,这样它就会在/ proc/pid/maps中的正确位置打印[stack]限定符.
但是,简单地修改系统调用周围的esp似乎是不够的.当我在"cat/proc/self/stat"上使用我的工具时,我看到kstkesp(这里的条目29)有时具有我想要的值,但有时会有一个不同的值,对应于我的备用堆栈.
我想了解:
小智 1
看起来它是在http://lxr.free-electrons.com/source/fs/proc/array.c?v=3.16的第 409 行中定义的。
过去几年有很多关于相关宏 KSTK_ESP 的讨论,例如: https: //github.com/davet321/rpi-linux/commit/32effd19f64908551f8eff87e7975435edd16624
和
http://lists.openwall.net/linux-kernel/2015/01/04/140
根据我收集到的有关间歇性奇怪现象的信息,似乎 NMI 或其他中断有时会在内核内部命中,然后在这种情况下它无法正确遍历堆栈。