exe文件格式翻译进展通报(0分)

  • 主题发起人 主题发起人 beta
  • 开始时间 开始时间
B

beta

Unregistered / Unconfirmed
GUEST, unregistred user!
暂时只翻译了一小部分.先贴出来看看,有什么问题即使纠正:<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;windows exe文件的格式(3.1)<br><br>//由DFW beta翻译,如有不当之处还望来信告知: xbeta@163.net<br>//对于我拿不准的,均附有原文,当然,如果第二次出现,则不用再加了<br><br>一个windows可执行文件是一个代码和数据或者是代码,数据,资源的联合.<br>同时,可执行文件包含两个文件头:dos文件头和windows文件头.<br>接下来的两个区(section)描述了这两个文件头;第三个段则是描述可执行文件中的代码和数据的.<br><br>dos文件头<br><br>dos文件头(旧式的)包含4个独特的部分:<br>&nbsp;1)文件头信息的集合(collection)[例如:标志字(signature word),文件长度等等]<br>&nbsp;2)保留区<br>&nbsp;3)指向windows文件头的指针(如果有windows文件头的话)<br>&nbsp;4)残余程序(stub program)<br><br>如果在偏移为18h处的word值为40h或更大的话,那么3ch处的word值则为windows文件头的偏移量.<br>应用程序必须校验每一个被测试(being tested)的可执行文件头,因为少数程序有不同的文件头风格.<br>如果用户企图在windows启动(be loaded)前运行它的话,ms-dos将用残余程序来显示某些信息.<br><br>windows文件头<br><br>windows文件头(新式的)含有装载程序(loader)所需要的文件段(segmented executable files)信息.<br>这些信息包括连接器(linker)版本号,连接器指定(specify)的数据,资源编译器(resource compiler)<br>指定的数据,段数据表(tables of segment data),资源数据表等等.<br>接下来的部分将叙述windows文件头的内容.<br><br>信息块(information block)<br><br>windows文件头的信息块包括连接器版本号,进一步描述该文件的各表的长度,从文件头的开始到这些<br>表的偏移量,堆和栈的长度等.<br>下面的列表总结了文件头信息块的内容(其位置与该块的起点有关):<br><br>偏移(location) &nbsp; 描述<br><br>00h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;标志字.低位"N"(4eh),高位"E"(45h)<br>02h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;连接器版本号<br>03h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;连接器修订版本号(revision number)<br>04h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;入口表(entry table)的偏移量(与文件头的起点有关)<br>06h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;入口表的长度(以字节为单位)<br>08h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;保留<br>0ch &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;描述文件内容的标志位.该标志位可以是以下的值:<br><br>&nbsp; &nbsp;位(bit) &nbsp;意义<br><br>&nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;如果此为单数据段(singledata)程序,连接器将置此位为1.如果是dll,则此位被置1.<br>&nbsp; &nbsp;1 &nbsp; &nbsp; &nbsp; &nbsp;如果此位多数据段(multipledata)程序,连接器将置此位为1.如果是windows程序,此位<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 被置1.<br><br>&nbsp; &nbsp;如果0,1两位都没被置,那么,该文件没有自动数据(autodata),即没有自动数据段(automatic data <br>&nbsp; &nbsp;segment).<br><br>&nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp;保留. <br>&nbsp; &nbsp;3 &nbsp; &nbsp; &nbsp; &nbsp;保留. <br>&nbsp; &nbsp;8 &nbsp; &nbsp; &nbsp; &nbsp;保留. <br>&nbsp; &nbsp;9 &nbsp; &nbsp; &nbsp; &nbsp;保留. <br>&nbsp; &nbsp;11 &nbsp; &nbsp; &nbsp; 如果该位被设,表明文件的第一个段(segment)包含调用程序的代码.<br>&nbsp; &nbsp;13 &nbsp; &nbsp; &nbsp; 如果该位被设,连接器将在联接时监测错误,但仍然会建立一个可执行文件.<br>&nbsp; &nbsp;14 &nbsp; &nbsp; &nbsp; 保留. <br>&nbsp; &nbsp;15 &nbsp; &nbsp; &nbsp; 如果该位被设,表明该文件是一个库模块(library module).<br><br>&nbsp; &nbsp;如果第15位被置,cs:ip寄存器将指向一个由ax寄存器的值--即模句柄(module handle)--所指定的<br>&nbsp; &nbsp;初始化过程,该初始化过程必须执行一个远程返回(far return)给调用者(caller).如果过程执行<br>&nbsp; &nbsp;成功ax寄存器的值为非零,否则,ax寄存器的值为零.如果是单数据段程序,ds寄存器将指向库的数<br>&nbsp; &nbsp;据段(library's data segment),否则ds将指向载入该库的程序(application that loads the <br>&nbsp; &nbsp;library)的数据段.<br>
 
咦,我现在才发现,原来我还可以"删除这个问题".有什么用?可以收回分?<br>呵呵,那不就......
 
呵呵,好,继续
 
保贵的资料。
 
还是翻译研究PE格式的吧 :-)
 
越看beta越像一头老黄牛,呵呵~~~
 
来一个例子吧。
 
beta:继续努力,我已经把你价为好友,可你没验证 :( &nbsp;<br>164926
 
好东东,值得鼓励,继续加油!
 
to o*o,把pe格式的给我看看
 
csdn中有PE格式。
 
哇,我这两天刚好打算做这件事,有beta兄动手,小弟就可以每天多睡几个钟头了。:)<br>对了,翻完了能不能给我发一份 piggykoala@263.net<br>在这里先多谢了!!!<br>不够?好,再来点掌声,啪,啪,啪,啪,啪,加油!
 
I Will Wait!
 
I WANT ONE COPY!
 
好了,不要拖太久
 
接受答案了.
 
后退
顶部