|
13 | 13 | #define HANDLER_BUF_SIZE 256
|
14 | 14 |
|
15 | 15 | static struct kprobe execve_probe;
|
| 16 | +static struct kprobe compat_execve_probe; |
16 | 17 |
|
17 | 18 | /*
|
18 | 19 | * function declarations
|
@@ -204,24 +205,35 @@ static int __init dwarf_init(void) {
|
204 | 205 | disable_selinux();
|
205 | 206 |
|
206 | 207 | printk(KERN_INFO "dwarf -> sys execve: 0x%p", (void *) kallsyms_lookup_name("SyS_execve"));
|
| 208 | + printk(KERN_INFO "dwarf -> compat sys execve: 0x%p", (void *) kallsyms_lookup_name("compat_SyS_execve")); |
207 | 209 |
|
208 | 210 | execve_probe.pre_handler = handler_pre;
|
209 | 211 | execve_probe.addr = (kprobe_opcode_t *) kallsyms_lookup_name("SyS_execve");
|
| 212 | + compat_execve_probe.pre_handler = handler_pre; |
| 213 | + compat_execve_probe.addr = (kprobe_opcode_t *) kallsyms_lookup_name("compat_SyS_execve"); |
210 | 214 |
|
211 | 215 | ret = register_kprobe(&execve_probe);
|
212 | 216 | if (ret < 0) {
|
213 | 217 | printk(KERN_INFO "dwarf -> cannot register probe on execve, returned %d\n", ret);
|
214 | 218 | return ret;
|
215 | 219 | }
|
216 | 220 |
|
| 221 | + ret = register_kprobe(&compat_execve_probe); |
| 222 | + if (ret < 0) { |
| 223 | + printk(KERN_INFO "dwarf -> cannot register probe on compat execve, returned %d\n", ret); |
| 224 | + //return ret; |
| 225 | + } |
| 226 | + |
217 | 227 | printk(KERN_INFO "dwarf -> planted execve kprobe at %p\n", execve_probe.addr);
|
218 | 228 | return 0;
|
219 | 229 | }
|
220 | 230 |
|
221 | 231 |
|
222 | 232 | static void __exit dwarf_end(void) {
|
223 | 233 | unregister_kprobe(&execve_probe);
|
| 234 | + unregister_kprobe(&compat_execve_probe); |
224 | 235 | printk(KERN_INFO "dwarf -> kprobe at %p unregistered\n", execve_probe.addr);
|
| 236 | + printk(KERN_INFO "dwarf -> kprobe at %p unregistered\n", compat_execve_probe.addr); |
225 | 237 | }
|
226 | 238 |
|
227 | 239 | module_init(dwarf_init);
|
|
0 commit comments