summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--syscall.c62
1 files changed, 31 insertions, 31 deletions
diff --git a/syscall.c b/syscall.c
index 6068592..8decf5c 100644
--- a/syscall.c
+++ b/syscall.c
@@ -6,7 +6,7 @@
#include <linux/syscalls.h>
#include <asm/uaccess.h>
-//extern void* sys_call_table[];
+extern void* sys_call_table[];
static int uid;
module_param(uid, int, 0644);
@@ -32,46 +32,46 @@ asmlinkage int our_sys_open(const char* filename, int flags, int mode)
return original_call(filename, flags, mode);
}
-unsigned long** find_sys_call_table(void)
-{
- unsigned long** sctable;
- unsigned long ptr;
-
- extern int loops_per_jiffy;
-
- sctable = NULL;
- for (ptr = (unsigned long)&loops_per_jiffy;
- ptr < (unsigned long)&boot_cpu_data; ptr += sizeof(void*)) {
- unsigned long *p;
- p = (unsigned long*)ptr;
- if (p[__NR_open] == (unsigned long) sys_open) {
- sctable = (unsigned long**)p;
- return sctable;
- }
- }
-
- return sctable;
-}
+//unsigned long** find_sys_call_table(void)
+//{
+// unsigned long** sctable;
+// unsigned long ptr;
+//
+// extern int loops_per_jiffy;
+//
+// sctable = NULL;
+// for (ptr = (unsigned long)&loops_per_jiffy;
+// ptr < (unsigned long)&boot_cpu_data; ptr += sizeof(void*)) {
+// unsigned long *p;
+// p = (unsigned long*)ptr;
+// if (p[__NR_open] == (unsigned long) sys_open) {
+// sctable = (unsigned long**)p;
+// return sctable;
+// }
+// }
+//
+// return sctable;
+//}
int init_module(void)
{
-// original_call = sys_call_table[__NR_open];
-// sys_call_table[__NR_open] = our_sys_open;
-//
-// printk(KERN_INFO "Spying on uid: %d\n", uid);
- printk(KERN_INFO "sys_call_table[__NR_open] = %p\n", find_sys_call_table()[__NR_open]);
+ original_call = sys_call_table[__NR_open];
+ sys_call_table[__NR_open] = our_sys_open;
+
+ printk(KERN_INFO "Spying on uid: %d\n", uid);
+// printk(KERN_INFO "sys_call_table[__NR_open] = %p\n", find_sys_call_table()[__NR_open]);
return 0;
}
void cleanup_module(void)
{
-// if (sys_call_table[__NR_open] != our_sys_open) {
-// printk(KERN_ALERT "Somebody else also played with the open syscall\n");
-// printk(KERN_ALERT "The system may be left in an unstable state\n");
-// }
+ if (sys_call_table[__NR_open] != our_sys_open) {
+ printk(KERN_ALERT "Somebody else also played with the open syscall\n");
+ printk(KERN_ALERT "The system may be left in an unstable state\n");
+ }
-// sys_call_table[__NR_open] = original_call;
+ sys_call_table[__NR_open] = original_call;
}
MODULE_LICENSE("GPL");