Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 在内核3和内核2.4中写入内核内存?_Memory_Data Structures_Linux Kernel_Kernel Module - Fatal编程技术网

Memory 在内核3和内核2.4中写入内核内存?

Memory 在内核3和内核2.4中写入内核内存?,memory,data-structures,linux-kernel,kernel-module,Memory,Data Structures,Linux Kernel,Kernel Module,我已经编写了一个LKM,它写入内核池fou_表的数据结构。如果我在内核2.4中修改这个LKM,我想它会写入这个数据结构,但是当我在内核3.10中执行同样的操作时,我的系统会像我预期的那样重新启动!内核2.4有什么问题?它的内核内存没有受到保护,或者我没有向它写东西?!我的意思是,当我试图写入内核的内存时,我期待任何内核崩溃,所以我怀疑我是否真的写入了内核2.4的内存。事实上,我在主机系统Fedora18和内核3.10上试过同样的代码,在来宾Redhat9和内核2.4上试过同样的代码。我在user

我已经编写了一个LKM,它写入内核池fou_表的数据结构。如果我在内核2.4中修改这个LKM,我想它会写入这个数据结构,但是当我在内核3.10中执行同样的操作时,我的系统会像我预期的那样重新启动!内核2.4有什么问题?它的内核内存没有受到保护,或者我没有向它写东西?!我的意思是,当我试图写入内核的内存时,我期待任何内核崩溃,所以我怀疑我是否真的写入了内核2.4的内存。事实上,我在主机系统Fedora18和内核3.10上试过同样的代码,在来宾Redhat9和内核2.4上试过同样的代码。我在userland中安装了虚拟机监控程序Xen,如果您向地址空间中不应该写入的不可写的地方写入,可能它没有映射,也可能是写保护的,例如mmu可能会向您的进程发出总线错误或分段冲突

这对于内核空间中的线程来说不太可能,但并非不可能——您可以很容易地导致内存损坏或弄乱内存映射设备,而不会触发即时崩溃。在内核空间中产生的最有可能的崩溃是踩别人的内存指针,让他们无意中跨过它进入未映射的空间


userland和kernel之间的主要区别实际上只与您可能造成的损害范围有关。显然,在内核中,您可能会搞得更糟。

您的目标是什么?听起来您希望通过写入内核内存的随机部分来崩溃系统?显然,并非每次从内核上下文写入内核内存都会导致基于保护的崩溃,因为内核需要合法地写入自己的数据结构。就腐败引发的崩溃而言,不应该指望随意戳东西会产生一致的结果——你可能会改变一些无关紧要的事情,或者只是一种微不足道的方式,或者直到更多的时间过去或者其他条件导致需要损坏的数据时才有意义。@克里斯·斯特拉顿:我已经为内核数据结构的完整性编写了一些完整性代码。事实上,为了测试它们,我尝试通过lkm更改它们,令人惊讶的是,我看到了内核2.4让我来修改数据结构,但内核3不会。我只是想确定这是不同内核的问题,或者我根本不涉及内核。你说让你修改到底是什么意思?这些文字生效了吗?或者内核在一段时间内没有明显受到更改的影响?我认为没有人能在不确切知道您更改了什么的情况下给您一个可靠的答案。@Chris Stratton:写入生效,内核显然受到了更改的影响。我很好奇为什么内核2.4中没有保护,不让我像内核3那样修改这些结构。如果你想知道这些修改,例如,我将max_线程的数量更改为一个小数字,它影响了系统,因此它不允许我再进行任何新的进程!您声称新内核提供了什么样的保护?