从用户隐藏进程的一种流行方法是劫持/ proc目录的iterate函数。这可以按如下方式完成:
struct file *filep = filp_open("/proc", O_RDONLY, 0));
filep->f_op->iterate = p // We swap the pointer with our hacked iterate
我正在研究一种检测方法,我希望恢复原始的迭代功能(假设它已经被劫持)。有没有办法找到用于/ proc目录的原始迭代函数?
答案 0 :(得分:1)
您可以尝试启发式方法。原始函数的地址将与其他proc函数位于同一区域,而劫持函数的地址将明显不同。然后解析劫持器功能的机器代码。劫持者函数必须在返回之前转移到原始函数,因此您查看所有分支指令并检查哪一个适合其他原始地址。
答案 1 :(得分:0)
我假设你知道你正在使用哪个版本的内核?
只需将该版本的函数复制到您的模块中,并使用您的副本地址覆盖迭代指针。
这应该在功能上是等效的,尽管没有人知道胭脂模块可能释放出来的其他邪恶。