【发布时间】:2020-07-02 09:19:05
【问题描述】:
我正在尝试 HookExecve 并打印参数。我可以很好地打印文件名。如何在内核模式下打印 char *const argv[] 的参数?我需要能够获取它们的数量并能够打印它们。
所以如果我运行 ls -lah 。我应该在 argv ["ls", "-lah"] 中看到;我可以在用户空间中执行此操作,但是所有将信息从用户空间复制到内核空间的尝试似乎都会导致崩溃。
char CharBuffer [255] = {'\0'};
char Argz [255] = {'\0'};
asmlinkage int (*origional_execve)(const char *filename, char *const argv[], char *const envp[]);
asmlinkage int HookExecve(const char *filename, char *const argv[], char *const envp[]) {
unsigned int len = sizeof(CharBuffer) / sizeof(CharBuffer[0]);
unsigned int Argzlen = sizeof(Argz) / sizeof(Argz[0]);
copy_from_user(&CharBuffer , filename , len );
//copy_from_user(Argz , argv[0] , sizeof(argv[0]) );
//strncpy_from_user(Argz, argv[0], len ); // Might break stuff
printk( KERN_INFO "Executable Name %s \n", CharBuffer );
memset(CharBuffer, 0 , len);
return (*origional_execve)(filename, argv, envp);
}
【问题讨论】:
-
请发布您希望代码执行的操作。
-
我不确定我是否清楚,但我正在挂接 Linux 中的 execve 调用。我只想打印 argv 字符串。
标签: c unix linux-kernel hook rootkit