table(Linux系统调用表)的地址(3)

四.方法四:通过/dev/mem在用户态完成
这种方式不会污染运行中的内核(不会载入任何模块),然而弄不好很容易PTD(panic to death,对应windows的blue screen...)。这种方式实际上是最直接的,相当于直接使用机器码对整个物理内存编程,需要相当高的水平。不过,整个内存都拥有了,还有什么做不到呢?
     之所以可以动态修改机器码,是因为冯诺依曼机器是基于存储模型的,指令和数据一样是存储在内存中的,而内存是可存取的 ,虽然现代机器架构使用了保护模型比如内存存取权限或者特权环等机制限制了某些存取,但是却无法从根本上改变冯诺依曼模型的存取特征,因为在任何领域,对于主体的鉴权 都是有缺陷了,比如一旦有特权的主体被以某种方式劫持了,那么它的行为将是危险的和有害的(暂且不考虑禁止向下写等单向信息鉴权模型,那样会引入新的复杂性和新的不确定因素),所以模型决定了一切而不是局部的设计决定了一切。

五:总结
1.不赞成替换系统调用。 因为这是linux,不是windows,你既然能编译并加载模块,说明你有root权限,既然你有root权限,替换一个系统调用毫无疑义,说明不了你的水平
2.不赞成用gdb反汇编内核, 我们需要的仅仅是一个地址值而已,没有必要那么麻烦反汇编内核。
3.我所作的一切只是为了调试新添加的系统调用而不希望重新编译内核,并不是搞攻击 ,如果真的搞攻击,最难的不是写代码,是如何发现漏洞以及如何利用漏洞,首先你不是root,弄到最后你成了root,接下来你就可以做替换系统调用这种简单至极的事了,前提是你怎么从非root成为root?最简单也是最难的攻击办法就是:直接逼问管理员!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfxgj.html