我正在劫持__NR_read
(sys_read
调用),每当我用自己的系统调用劫持原始系统调用时,它会导致bash崩溃(在所有打开的KDE“konsoles”中)(是的,一旦我劫持sys_open
)。
我想知道这是否是我的代码中的错误(可能)或因为其他原因而发生的错误。
我的问题是:如果崩溃是由于我的代码引起的,那么究竟是什么导致了它以及如何(如果可能的话)我可以修复它?如果崩溃不是由我的代码引起的,那是什么导致它?
我的代码在这里:https://github.com/alexandernst/procmon/tree/master/procmon_kmodule
syshijack.c
是我获取系统调用表的地方,hookfns.c
是我劫持系统调用的地方。
PS:我之前已经问过这个问题Hijacking sys calls但现在已经改变了,因为一旦我劫持了系统调用就会发生崩溃。
*编辑*
我认为这个bug来自挂钩/解钩,所以我创建了一个问题https://github.com/alexandernst/procmon/issues/7 无论如何,我看不出导致崩溃/冻结的原因。
答案 0 :(得分:1)
Hook引擎在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
对我来说似乎很难看。