我正在劫持__NR_read
(sys_read
调用),每次我用自己的系统调用劫持原始系统调用时,都会导致bash崩溃(在所有打开的kde“konsoles”中)(也就是说,只要我劫持sys_open
)。
我想知道这是我的代码中的一个bug(可能)还是因为其他原因而发生的。
我的问题是:如果崩溃是由于我的代码引起的,那么究竟是什么原因导致的,以及如何(如果可能)修复它?如果崩溃不是由我的代码引起的,是什么引起的?
我的代码在这里:https://github.com/alexandernst/procmon/tree/master/procmon_kmodulesyshijack.c
是获取syscall表的位置,而hookfns.c
是劫持syscalls的位置。
注:我之前已经问过这个问题,但现在变了,因为当我劫持系统调用时,崩溃就发生了。
*编辑*
我认为这个bug来自hook/unhook调用,所以我创建了一个问题Hijacking sys calls
不管怎样,我看不出是什么导致了撞车/结冰。
最佳答案
钩子引擎在我的x86_64
上运行良好,没有IA32
部分,也没有hooked_sys_read
中的代码,除了r = real_sys_read()
。在挖掘代码时,我发现ia32钩住可能有问题:
#define HOOK(F, RF, FF) RF = sys_call_table[F]; sys_call_table[F] = FF;
#ifdef CONFIG_IA32_EMULATION
#define HOOK_IA32(F, RF, FF) ia32_sys_call_table[F] = FF;
#endif
……因此
HOOK_IA32
不会存储在RF
宏中实现的HOOK
值。过来看。至于其他人…在我看来,
path_from_fd
很难看。祝你好运;)
关于linux - 劫持__NR_read和bash崩溃(咖啡馆用户?),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17575591/