如何反编译IMG(内核)文件?

如何反编译IMG(内核)文件?,第1张

先介绍一下编译核心的选项,希望能对大家消除对内核的神秘感有所帮助。

1.代码成熟等级

2..处理器类型和特色

3.对模块的支持

4.基本的选择

5.即插即用支持

6.块设备支持

7.网络选项

8.电话支持

9.SCSI设备的支持

10.I2O接口适配器

11.网络设备支持

12.配置业余无线广播

13.红外支持

14.ISDN的文件系统

15.旧型的光驱类型(非IDE界面的光驱)

16.字符设备

17.USB支持

18.文件系统

19.控制台驱动

20.声卡驱动

21.Kernel hacking

第二节 内核版本

由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布

给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应

),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳

定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(developm

ent tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所

做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同

的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体现在

源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开

发树来说,y比相应的稳定树大一(因此,是奇数)。确定是以″ root ″的身份签入,

然后cd 到 /usr/src 。uname -r 这个指令将会显示版本。内核版本的更新可以访问<h

ttp://www.kernel.org/>。

第三节 编译原因

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了

旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的

系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳

定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是

Linux使用者的必要 *** 作内容。

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

要有下面四个考虑:

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

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

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

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

以上是针对成熟的Linux套件如Redhat Linux而言,我的目的是为建造嵌入式Linux *** 作系

统做准备,也是必由之路。

第四节 准备工作

第一部分 新版本内核的获取和更新

Linux内核版本发布的官方网站是<http://www.kernel.org/>,国内各大ftp上一般都可

以找到某些版本的内核。新版本的内核的发布有两种形式,一种是完整的内核版本,另

外一种是patch文件,即补丁。完整的内核版本比较大,比如linux-2.4.0-test8.tar.b

z2就有18M之多。完整内核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分别

是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。patch文件则比较小,一般

只有几十K到几百K,极少的会超过1M。但是patch文件是针对于特定的版本的,需要找到

自己对应的版本才能使用。

编译内核需要root权限。把需要升级的内 拷贝到/usr/src/下(下文中以2.2.16的内核

的linux-2.2.16tar.gz为例),命令为

#cp linux-2.2.16tar.gz /usr/src

先查看当前/usr/src的内容,注意到有一个linux的符号链接,它指向一个类似于linux

-2.2.14(对应于现在使用的内核版本号)的目录。首先删除这个链接:

#cd /usr/src

#rm -f linux

现在解压下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,使用命令:

#tar -xzvf linux-2.2.16tar.gz

如果下载的是.bz2文件,例如linux-2.2.16tar.bz2,使用命令

#bzip2 -d linux-2.2.16tar.bz2

#tar -xvf linux-2.2.16tar

现在再来看一下/usr/src下的内容,发现现在有了一个名为linux的目录,里面就是需要

升级到的版本的内核的源程序。还记得那个名为linux的链接么?之所以使用那个链接就

是防止在升级内核的时候会不慎把原来版本内核的源程序给覆盖掉了。现在也需要同样

处理:

#mv linux linux-2.2.16

#ln -s linux-2.2.16 linux

如果还下载了patch文件,比如patch-2.2.16,就可以进行patch *** 作(下面假设patch-

2.2.16已经位于/usr/src目录下了,否则需要先把该文件拷贝到/usr/src下):

#patch -p0 <patch-2.2.16

第二部分 准备主机板和相关硬件的说明手册

其实也不用太详细,只要知道您的硬件是属于哪一类型就行了。例如:有一张SCSI卡,

那就要知道这张卡的名字,有一台cd-rom,就要知道这台光驱是哪一种牌子的,是否为标

准的IDE/ATAPI界面,还是另有专属接口卡呢?或者,主机版是否有支持Triton芯片(通

常586以上的电脑常有),这些信息能帮助我们,使得设定变得清楚且容易。

因此,不管您有什么使用手册,准备好吧。即使现在不用,将来还是会用到的(设X-w

indow system时要显示卡的手册)。

第三部分 检查声卡的IRQ设定和其种类

如果配有一张声卡,除了要知道卡的种类外(例如 Sound Blaster)还需要知道这张卡

的IRQ地址。一般来说,卢卡的IRQ地址是5或7而IO地址则为220。DMA则l,不过,有时不

同的声卡可能会有不同的设定。因为稍后的选项里,就会要填入这些数字。

第四部分 编译核心的硬件需求

在编译核心时,确定您的RAM最好在8MB以上, 否则可能会很慢而且问题会很多,记得查

看swap有没有打开(用free指令)。此外,最好不要超频,不然很有可能会发生signal

11的错误,使得编到一半的核心停了下来,其实编译核心就好比编译程序一样,只是因

为构成核心的程序太多了,因此我们能小心尽量小心。

1、 *** 作

linux区分大小写,windows在dos界面命令下不区分大小写;

linux所有内容均以文件形式保存包括硬件,用户,而windows文件和硬件没什么关系,两个之间没有关联;

windows用扩展名区分文件如.exe代表执行文件,.txt代表文本文件,而linux无扩展名的概念,当然为了管理员区分方便会有部分扩展名如.gz , .bz2 ,.tar.bz2代表压缩包。

.html ,,php代表网页文件,这些纯粹是给管理员看的便于区分,但是linux本身是没有扩展名的,linux是以权限区分文件的,文件权限总共有十位。

windows下的.exe文件不能直接在linux下安装与运行,同时linux大部分是字符界面,大大增加了linux系统的安全性,减少了木马攻击的可能性,同时linux字符界面占用的系统资源要小于windows下的图形界面所占的资源。

2、系统概念

UNIX *** 作系统

是一个强大的多用户、多任务 *** 作系统,支持多种处理器架构。

整个UNIX系统可分为五层:

最底层是裸机,即硬件部分;

第二层是UNIX的核心,它直接建立在裸机的上面,实现了 *** 作系统重要的功能,如进程管理、存储管理、设备管理、文件管理、网络管理等。

用户不能直接执行UNIX内核中的程序,而只能通过一种称为”系统调用”的指令,以规定的方法访问核心,以获得系统服务;

第三层系统调用构成了第四层应用程序层和第二层核心层之间的接口界面;

应用层主要是UNIX系统的核外支持程序,如文本编辑处理程序、编译程序、系统命令程序、通信软件包和窗口图形软件包、各种库函数及用户自编程序;

UNIX系统的最外层是Shell解释程序,它作为用户与 *** 作系统交互的接口,分析用户键入的命令和解释并执行命令,Shell中的一些内部命令可不经过应用层,直接通过系统调用访问核心层。

Linux *** 作系统:

是基于UNIX *** 作系统发展而来的一种克隆系统,是一套免费使用和自由传播的类Unix *** 作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。

Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络 *** 作系统。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。

Windows *** 作系统:

Windows1.0是微软第一次对个人电脑 *** 作平台进行用户图形界面的尝试。Windows 1.0基于MS-DOS *** 作系统,实际上其本身并非 *** 作系统,至多只是基于DOS的应用软件。

之后的 Windows 2.x,3.x 和 95,98,ME仍是基于DOS的 *** 作系统。 而Windows NT则宣告了DOS *** 作系统的终结,并成为流行至今的主流 *** 作系统。

3、发展背景

Linux与其他 *** 作系统的区别是,Linux是从一个比较成熟的 *** 作系统发展而来的,而其他 *** 作系统,如Windows NT等,都是自成体系,无对应的相依托的 *** 作系统。这一区别使得Linux的用户能大大地从Unix团体贡献中获利。

因为Unix是世界上使用最普遍、发展最成熟的 *** 作系统之一,它是七十年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少相对集中的标准,但还是发展壮大成为了最广泛使用的 *** 作系统之一。

无论是Unix的作者还是Unix的用户,都认为只有Unix才是一个真正的 *** 作系统,许多计算机系统(从个人计算机到超级计算机)都存在Unix版本,Unix的用户可以从很多方面得到支持和帮助。

因此,Linux做为Unix的一个克隆,同样会得到相应的支持和帮助,直接拥有Unix在用户中建立的牢固的地位。

4、使用费用

从使用费用上看,Linux与其他 *** 作系统的区别在于Linux是一种开放、免费的 *** 作系统,而其他 *** 作系统都是封闭的系统,需要有偿使用。

这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问Internet时,会发现几乎所有可用的自由软件都能够运行在Linux系统上。

有来自很多软件商的多种Unix实现,Unix的开发、发展商以开放系统的方式推动其标准化,但却没有一个公司来控制这种设计。

因此,任何一个软件商(或开拓者)都能在某种Unix实现中实现这些标准。

OS/2和Windows NT等 *** 作系统是具有版权的产品,其接口和设计均由某一公司控制,而且只有这些公司才有权实现其设计,它们是在封闭的环境下发展的。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8796814.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-21
下一篇2023-04-21

发表评论

登录后才能评论

评论列表(0条)

    保存