黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 综合频道 >> 硬件天地 >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[推荐]拿起手术刀 深入剖解路由器的“心脏”技术
      ★★★★★

拿起手术刀 深入剖解路由器的“心脏”技术

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2007-5-21 10:26:14

  路由器软件系统的设计过程

  uClinux 操作系统提供了嵌入式Web服务器、PPPOE拔号软件、基于IPTable过滤防火墙等功能模块的源代码。路由器软件系统的设计包括uClinux操作系统的裁剪、基于uClinux操作系统提供的以上功能模块源代码下的修改和设计,从而实现本路由器的嵌入式Web服务器、PPPOE拔号软件、基于IPTable过滤防火墙。

  1、uClinux操作系统裁剪

  ⑴裁剪前准备

  uclinux的裁剪牵涉到对目标的硬件支持问题。要让uClinux支持一个新硬件体系,要做的第一件事情就是收集和构建代码的工具。然后就可以裁减和编译内核。一旦内核支持基本的处理器功能,它就可以运作了,但是如果缺乏驱动程序的支持,就起不了多大作用。典型的驱动程序集合中包括了诸如控制台终端、基本串行设备和一个可能包含了根文件系统的块设备的驱动等。

  在这里主要介绍针对我们刚才介绍的实例系统采用的uClinux裁剪方法。本实例中的宿主机上装redhat9操作系统,因为redhat9具备安装uClinux交叉编译工具时所需要的库。

  首先必须在redhat9下建立uclinux开发环境,建立uclinux开发环境的方法有很多,而且也十分方便。可以从http://www.uClinux.org处下载最新的uClinux的源代码、最新的gcc3的工具链,不过针对于不同的工具链在不同的操作系统下,以及目标板的MCU的不一样,可能在编译内核时会产生错误,在这里,我讲解实例所使用的不是最新版本的。同样的,针对不同的硬件开发环境要对uClinux源代码进行不同的适当修改,修改部分通常是以代码补丁形式实现的,一般网络上会有各种通用模式的补丁提供使用。好了,切入正题,有了齐全的软件包后,安装过程如下:

  (1) 下载内核和工具包

  内核包 : uClinux-disc-200408.tar.gz

  补丁文件:uClinux-disc-200408.patch

  uclinux的源代码和文件系统的源代码,软件包后的数字代表完成的日期。

  工具链 : arm-elf-gcc-200403.sh

  (2) 安装工具包

  sh arm -elf-gcc-200403.sh

  (3) 解压缩内核

  tar -xzvfuClinux-dist-200408.tar.gz,生成uClinux-disk目录。

  (4)安装补丁:

  将补丁文件复制到uClinux-disk目录下,进入该目录,在Shell命令中使用如下命令:

  patch -pl-f

  ⑵内核的编译和生成

  执行以下命令可以进行uClinux编译:

  make xconfig。具体的编译选项配置过程本文不做详细介绍。但在此给出编译的一些基本思想:

  ucLinux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

  为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:

  自己定制编译的内核运行更快(具有更少的代码)。

  系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)。

  不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞。

  将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些。

  在此需要补充说明的是内核编译的目的是为了创建一个能够放置在flash上支持flash读取的完成要求功能的内核,同时也是flash读取步骤其中一步。对uCLinux的内核进行配置和创建要对uCLinux内核的版本进行选择:uCLinux内核的版本号有三种:主号、次号、修订号。以2.4.10为例一般来说,主号如目前的2是很稳定的。主号的变动说明了操作系统发生了很大的变动。次号如目前的.4,用来说明内核的稳定性。当次号为偶数号((0,2, 4, 6) 时,表明现在的内核的稳定性强,而当次号为奇数号(1,3, 5) 时,表明现在的内核处于测试的阶段,其稳定性值得考虑,如果你使用次号为奇数号的内核进行配置和创建时、就值得三思而行了。而修订号的发表比较的频繁,它主要是用来对前面的版本进行修补。开发新的版本和修改以前的版本是同时进行的,很有可能修改的修订版本在新的版本出来之后。

  依次执行以下命令完成uClinux的编译过程:

  cd/usr/local/src/uclinux=dist

  make dep

  make clean

  make lib_only

  make user_only

  make romfs

  make image

  最终在image目录下生成2个文件:

  zImage——uClinux内核2.4.x的压缩方式可执行映象文件;

  romfs——文件系统的映象文件。

  这就是我们要用来烧录到硬件板内的最终文件了。具体烧写可以通过使用专用的烧写工具来实现,烧写过程一定要参照烧写工具的说明要求来进行。

  其中zImage已经包含了文件系统映象文件,通常直接烧写到Flash文件上即可执行了。当然在这之前要进行BootLoader的烧录, BootLoader其实就是一个引导程序,主要作用就是初始化系统,进而来引导操作系统。在嵌入式系统中,处理器上电后首先执行的一段代码就是BootLoader,BootLoader与硬件密切相关,其代码主要用C和汇编语言写成,不同的系统中,BootLoader的功能有所不同,但主要作用还是差不多的,主要有下面几点:

  初始化微控制器MCU运行的时钟频率;

  初始化Flash和内存的数据宽度,读/写访问周期和刷新周期;

  初始化中断系统;

  初始化系统中各种片内、片外设备和I/O端口设备;

  初始化系统各种运行模式下的寄存器和堆栈;

  加载和引导操作系统;

  BLOb是BootLoaderObject的缩写,它是一个功能强大、源代码公开的自由软件,它已经实现了对多种处理器芯片的Linux 引导支持。对ARM7等核心的BootLoader支持版本可以到专业网站上进行下载,并稍微做适当修改来满足开发应用中的硬件环境要求即可,在此我们不做过多讲述。

  上面所讲述的内核编译过程只是比较宽泛的、笼统的操作过程,也就是说只是基本的操作过程,而在真正的路由功能实现过程中,还要对内核进行多种设置编译,比如说对硬件系统中设计到的部件进行驱动配置安装等,当然,这些并不是特别难的操作技术,再比如我们下面就要讲到的内容,这可就是很有挑战性的核心技术了,这些都是针对内核进行技术性操作来实现特定的网络功能。

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

文章录入:liult    责任编辑:liult 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886