在linux内核上实现windows进程的研究

在linux内核上实现windows进程的研究

ID:34618772

大小:379.16 KB

页数:7页

时间:2019-03-08

在linux内核上实现windows进程的研究_第1页
在linux内核上实现windows进程的研究_第2页
在linux内核上实现windows进程的研究_第3页
在linux内核上实现windows进程的研究_第4页
在linux内核上实现windows进程的研究_第5页
资源描述:

《在linux内核上实现windows进程的研究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第30卷第2期2008年4月湖州师范学院学报JournaIofHuzhouTeachersCollegeV01.30No.2Apr.,2008在Linux内核上实现Windows进程的研究。同力炜(杭州电子科技大学通信学院,浙江杭州310018)摘要:针对Windows可执行程序与1.inux-口T执行程序互不兼容的问题.提出了在I。inux操作系统上实现运行Windows进程的思想,并且将两种操作系统的差异在内核中弥补,以提高IAnux操作系统的可用性.介绍r两种碟作系统可执行文件格式的区别和实现这

2、种思路需要修改的主要数据结构,以及在IAnux上创建Windows进程的实现步骤.最后介绍了为证实这种思路而进行的测试实验的实验环境和测试结果.关键词:操作系统;进程;内核;可执行文件;系统调用中图分类号:TP316文献标识码:A文章编号:1009一】734(2008)02—0058—050引言众所周知,由于Windows操作系统和Linux操作系统在底层实现j二的差异,Windows的应用程序在1.inux操作系统上并不能运行,反之亦然.Windows操作系统在市场占有率上远远超过Linux,且Li

3、nux是开源的操作系统,因此修改Linux,使得Linux操作系统兼容Windows的应用程序就显得更有意义,也更具可行性.要实现这样的兼容,就需让Linux内核支持Windows的进程.开源项目Wine在这方面已经做厂相当多的工作,但是它的思路是在Linux内核外实现一个适配器,从而形成一个虚拟的Windows应用程序界面.这种在内核外弥补Windows与Linux差异的机制固然可行,但是其效率与性能就成r一个问题.因此在Linux内核上实现Windows进程就显得尤为重要.1两种操作系统可执行文件

4、的差异1.1Windows可执行文件格式Windows操作系统采用的可执行文件格式是PE格式文件‘1].PE(PortableExecutable)格式是继WindowsNT3.1后引入的一种文件格式,由于其需要对过去的MS—DOS系统进行兼容,因此其中保留了不少与DOS相关的信息.在Windows系统上运行的可执行文件以及动态链接库(did文件都足采用PE文件格式.PE格式的文件由PE文件头和其他内容所组成.由于要兼容DOS系统的可执行文件,因此,PE文件最L层是MS—DOS头部,其次是一个MS—D

5、OS实模式残余程序,其后才是PE文件头和PE可选头.PE文件头中包含rPE的标识。为“P”、“E”、“0”、“0”四个字节.在后面的PE可选头中,还有标识,指明PE文件的类型,如可执行文件的一种.exe.图l是PE格式文件结构图.1.2Linux可执行文件格式在Linux操作系统上使用最广泛的可执行文件格式是EI。F(Exe—MS—DOS头部MS—DOS实模式残余程序PE文件头PE可选头部段头部...(各段头部)段...(各段)图1PE文件格式总体结构*收稿日期:2008—03—10作者简介:周力炜,

6、杭州电子科技大学通信学院2005级硕士生,从事Linux操作系统研究第2期周力炜:在Linux内核上实现Windows进程的研究59eutableandLinkingFormat)格式嘲.这是作为应用程序二进制接口由Unix系统实验室开发的.El,F格式的文件在结构上与PE格式比较相似,主要由ELF头部和其他一些表、节等组成.ELF头部是对整个ELF文件的一个整体描述,E1.F头部最前面是4个字节,分别为“0x7F”、“E”、“I。”和“F”,表示是E1.F的文件格式.随后是文件类型,指明是可执行文件

7、还是动态库文件等.这些信息在文件装载和类型判别时非常重要.相关数据结构处理2.1Windows进程数据结构由于Windows对于用户来说是个黑盒子,因此Windows进程、线程的数据结构也是未知的.文献E3-]中通过逆向工程手段得到了Windows进程、线程的数据结构EPROCESS和ETHREAD,而线程又是一个进程运行的实体,因此线程数据结构ETHREAD相当重要.它的结构如下:/*000*/KTHREADTcb;/*1B0*/LARGE—INTEGERCreateTime;/*188*/unio

8、n{/*188*/LARGE—INTEGERExitTime;/*1B8*/LIST—ENTRYLpcReplyChain;);./*1C0*funion{/*1CO*/NTSTATUSExitStatUS;/*1C0*/DW()RDOfsChain;/*1C4*/LIST—ENTRYPostBlockList;/*22C*/PEPROCESSThreadsProcess:f*230杀

9、PVOIDStartAddress;}*234长funion{/*2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。