专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
申请内存: void *kmalloc(size_t size, int flags) kmalloc函数和malloc函数相似,它有两个参数,一个参数是size,即申请内存块的大小,这个参数比较简单,就像malloc中的参数一样。第二个参数是一个标志,在里面可以指定优先权之类的信息。在Linux中,有以下的一些优先权: GFP_KERNEL,它的意思是该内存分配是由运行在内核模式的进程调用的,即当内存低于min_free_pages的时候可以让该进程进入睡眠; GFP_ATOMIC,原子性的内存分配允许在实际内存低于min_f [阅读全文] [PDF]
Linux 可加载内核模块(从内核 1.2 版本开始引入)是 Linux 内核最重要创新的它们提供了可伸缩、动态内核探索隐藏在可加载模块后面原理并学习这些独立对象如何动态地转换成 Linux 内核部分 Linux 就是通常所说单内核(monolithic kernel)即操作系统大部分功能都被称为内核并在特权模式下运行它和微型内核 区别后者只把基本功能(进程间通信 [IPC]、调度、基本输入/输出 [I/O] 和内存管理)当作内核运行而把其他功能(驱 [阅读全文] [PDF]
  2.6内核与2.4内核相比,有了许多变化,模块部分的实现完全重写,结构也有了一些变化。2.4内核中模块隐藏的方式为:(参考madsys的phrack 61-03)    struct module *p;  for (p=&__this_module; p->next; p=p->next)  {  if (strcmp(p->next->name, str))  continue;  p->next=p->next->next; //   break;  }  2.4的module定义为:  struct module  {  unsigned long [阅读全文] [PDF]
    这篇短小的文档用于描述内核编程中推荐的编程风格。编程风格是很个人  化的东西,我不想把我的观点_强加_给任何人,但这是我必须维护的代码中所遵守  的,我也建议其他部分的代码也能遵守它。请至少给这里的观点一些考虑。    首先,我建议你打印一份GNU代码风格,不是去读它,而是把它烧了,这是个很  不错的姿态。    下面就是Linux内核编程风格:    第一章:缩进  制表符(tabs)占8个字符,所以缩进也是8个字符。有些异端运动想使用4个字符  (甚至是2个字符)的缩进,这和把PI(圆周率)定为3没什么两样。    原因:缩进的根本目的是用来清晰地标 [阅读全文] [PDF]
  第四部分 一些更好的想法(给hacker的)    4.1 击败系统管理员的LKM的方法    这一部分会给我们对付一些使用LKM保护内核的多疑(好的)的管理员的方法。在解释了所有系统管理员能够使用的方法之后,很难为我们(hackers)找到一个更好的办法。我们需要离开LKM一会儿,来寻找击败这些困难的保护的方法。    假定一个系统可以被管理员安装上一个十分好的大范围的监视的LKM,他可以检查那个系统的每一个细节。他可以做到第二或者第三部分提到的所有事情。    第一种除掉这些LKM的方法可以是重新启动系统。也许管理员并没有在启动文件里面加载这些LKM。因 [阅读全文] [PDF]
  简介    将Linux操作系统用于在现在是越来越普遍了。因此,入侵Linux在今天也变得越来越有趣.目前最好的攻击Linux的技术就是修改内核代码.由于一种叫做可卸载内核(Loadable    KernelModules(LKMs))的机制,我们有可能编写在内核级别运行的代码,而这种代码可以允许我们接触到操作系统中非常敏感的部分.在过去有一些很好的关于LKM知识的文本或者文件,他们介绍一些新的想法,方法以及一名Hacker所梦寐以求的完整的LKMs.而且也有一些很有趣的公开的讨论(在新闻组,邮件列表).    然而为什么我再重新写这些关于LKMs的东西呢 [阅读全文] [PDF]
  第二部分 渐入佳境    2.1 如何截获系统调用    现在我们开始入侵LKM,在正常情况下LKMs是用来扩展内核的(特别是那些硬件驱动)。然而我们的‘Hacks’做一些不一样的事情。他们会截获系统调用并且更改他们,为了改变系统某些命令的响应方式。    下面的这个模块可以使得任何用户都不能创建目录。这只不过是我们随后方法的一个小小演示。    #define MODULE    #define __KERNEL__    #include    #include    #include    #include    #include    #includ [阅读全文] [PDF]
  1.应用是从头到尾执行单个任务;模块却只是预先注册自己以便服务于将来某个请求其中init_module(模块入口)任务是为以后模块预先做准备cleanup_module(模块第 2入口)是在模块卸载时   2.应用可以它未定义在连接过程能够解析外部引用从而使用适当库;模块仅仅被连接到内核因此它仅能有内核导出(如prk)而没有任何可连接库   3.应用开发过程中段是无害并且总是可以使用调试器跟踪到源代码中问题所在;内核模块个即使不对整个系统是致命 [阅读全文] [PDF]
  1. 几种内核调试工具比较   kdb:只能在汇编代码级进行调试;   优点是不需要两台机器进行调试   gdb:在调试模块时缺少些至关重要功能它可用来查看内核运行情况包括反汇编内核   kgdb:能很方便在源码级对内核进行调试缺点是kgdb只能进行远程调试它需要根串口线及两台机器来调试内核(也可以是在同台主机上用vmware软件Software运行两个操作系统来调试)   使用kdb和gdb调试内核思路方法相对比较简单这里只描述如 [阅读全文] [PDF]
Linux是单内核结构也就是说 它是个大, 其中任都可以访问公共数据结构和其它 (作为操作系统)另外种可能结构是多核式 各功能块自成体 相互的间由严格通信机制相连单核结构在添加新模块时种思路方法是重新调整设置所以非常费时 比如你想在内核中加个NCR 810 SCSI驱动 你必须重新设置 重建内核这也有另外个办法,Linux 允许动态装载和卸掉模块. Linux 模块是段可以在机器起动后任意时间被动态连接代码. 在不需要时, 它们可以被从内核中卸掉. 大多数Li [阅读全文] [PDF]
如果在入侵事件调查中传统工具完全失效了你该如何办?当我在对付入侵者已经加载内核模块时就陷入了这种困境由于从用户空间升级到了内核空间LKM方式入侵改变了以往使用入侵响应技术旦内核空间遭破坏影响将覆盖到整个用户空间这样入侵者无须改动系统就能控制他们行为而用户即使将可信工具包上传到被入侵主机这些工具也不再可信下面我将揭示恶意内核模块如何工作并且给出些我开发对付此类入侵工具 LKM概述 LKM存在对系统管理员是个福音对入侵检测却是个噩梦LKM最初被设计 [阅读全文] [PDF]
  动态内存使用   上节思路方法虽然可以避免溢出问题但会导致数据丢失下面我们就来学习种更好思路方法-动态内存使用由于动态内存是完全由用户自行分配使用因此需要用到些系统下面我们就分别学习它们   首先我们需要是动态内存分配系统calloc其原型为: # void *malloc(size_t size); void *calloc(size_t nmemb,size_t size); [阅读全文] [PDF]
  Lsmod通过读取/proc/modules文件的内容来查看内核已经加载了哪些内核模块。操作系统内核需要的扩展功能不存在时,内核模块管理守护进程kmod执行modprobe去加载内核模块。当传递给modprobe是通用识别符时,modprobe首先在文件 /etc/modules.conf查找该字符串。然后,modprobe遍历文件/lib/modules/version/modules.dep 来判断是否有其它内核模块需要在该模块加载前被加载。该文件是由命令depmod -a 建立,保存着内核模块的依赖关系。最终,modprobe调用insmod先加载被依 [阅读全文] [PDF]
  当前在国产自主版权操作系统这面大旗倡导下IT界掀起了浪高过浪Linux编程热潮Linux以其源码开放、配置灵活等不可多得优越性吸引着越来越多编程爱好者深入Linux内核开发笔者近来实战过个Linux实时化改造课题任务积累了点Linux内核编程实战经验在这里想就编译内核、增加系统等方面问题和感兴趣爱好者共做切磋      编译内核       在Linux编程实战中经常会遇到编译内核问题为什么要编译内核呢?其可以定制内核模块Linux引入了“动态 [阅读全文] [PDF]
  这篇短小文章是对Linux内核编程风格建议. 编程风格非常个性化,而且,我并不想将我观点强加给任何人,但是为了变于维护,我不得不提出这个观点.        详情如下:        在最开始,我应该写出GNU 编程风格标准而不用理会它. 不要理会他们,它只是个符号表情而已.        好,让我们开始吧!        第章: 缩进格式        Tab 是 8 个,于是缩进也是8个.有很多怪异风格,他们将缩进格式定义为4个(设置为2个! [阅读全文] [PDF]
  1. 介绍  1.1. 内核模块  1.2. 一些有用的函数    2. 方法  2.1. 替换函数指针  2.1.2. 系统调用  2.1.3. 其它的表  2.1.4. 单一的函数指针  2.2. 修改内核空间的队列  2.3. 读写内核空间  2.3.1. 查找符号的地址  2.3.2. 读数据  2.3.3. 修改内核数据    3. 应用  3.1. 隐藏并重定向文件  3.2. 隐藏进程  3.3. 隐藏网络连接  3.4. 隐藏规则  3.5. 触发器  3.6. 隐藏模块  3.7. 其它的应用    4. 内核补丁  4.1 介绍  4.2 [阅读全文] [PDF]
1 共16条 分1页