admin管理员组

文章数量:1530518

2024年5月20日发(作者:)

EXE文件的修改与空间扩展

鬣电千学与计算机9s年第1轴

EXE文件的修改与空间扩展●_●●_●-_●_●●__

顾景文徐佩珍

(同济大学.上海)

摘要

本文舟鲳了咝毫拦的修改秘充中所必然

要遇到的问题,即确定实际修改地址以及直接扩展

文件空问拇霹的解决方法.已用遗一方法成功地汉

化了一十轼件,证宴了方法的可靠性和有技性

ExE文件是££盆Q§和量2Q§下用汇

编语言或其它高级语言编写的程序经汇编或编

译,并在连接以后产生的可直接执行的二进制代

码文件沱的执行效率高1但可读性和可理解性差

因此,在无源程序可供利用而不得不对这种文

件进行修改或扩充(如软件有错误)吨其难

度较大由于在ExE文件中,代码区,数据

区和栈区的安{{卜搬都比铰紧凑.所以,当文

件原有的空问不足以满足修改或扩充的需要而

必须扩展其容量时,工作量就更大更复杂.这

样的软件,特别是汉化软件,目前还很少见到

介绍.根据不同的原文件和不同的目的要求.

空问的扩展可以采取不同的方法实现即可以

直接扩展,也可以利用软中断功能调用等手段

间接扩展

,£X£文僻的结构与格式化区

EXE文件由文件首部和装入模块两部分

组成装入模块位于文件首都之后.是程序的

本体即运行部分,它实际上是i丽里序的执行代

码赫.文件首耀系躺装入模块之间的界

面,它由—个有L4项共嚣个字节(每项2个字

节)的格式化区和一个f刮妾的含有若干项的重

定位表组成c它集中了系统对文件进行操作的

控制信息,系统根据其中各项的内容,确定程

序本体的长度.对程序中各重定位项进行处理,

并决定指令段,堆栈段寄存器与指令指针,堆

栈指针的值.以保证可浮动的程序代码在装入

内存后能获得正确麴控制流程关于文件首部

'车l螂8年6揖牧到

中各项内容的具体含义及文件装入过程可参

阅".这里仅指出格式化区中与所述的文

件修改,扩充密切相关的项及含义:

第项.指出了以512字节为一页单位的

文件的总页数,当将文件扩展了若干页以后必

须对该项内容作相应的更改:

第4项,它指明了重定位表中所含的重定

位项数当扩充的程序增加了重定位项后必须对

该项内容作相应的修改:

第5项.以l6字节为一节指出了文件首都

的长蛮节数.由它可确定装入模块的起始处.

它对本文中所述的空间扩展至为重要:

第8粕第】2项.分别给出了程序中的堆栈

段和代码段的段偏移量;

第l项的内容表示重定位表在文件首部中

的起始地址偏移量,重定位表中的重定位项信

本文标签: 文件修改定位装入扩展