当前位置: 代码迷 >> 汇编语言 >> dos下exe文件格式,该怎么解决
  详细解决方案

dos下exe文件格式,该怎么解决

热度:5073   发布时间:2013-02-26 00:00:00.0
dos下exe文件格式
请问一下dos下exe文件的格式       真正的指令在从什么位置执行?

------解决方案--------------------------------------------------------
在dos下,可执行程序都是由外壳程序进行加载,运行完成后再返回外壳程序,exe文件中的程序执行过程如下:
1. 由其他程序(Debug, command(shell 程序))将exe文件中的程序加载入
内存;
2. 设置 CS:IP指向程序第一条要执行的指令(即程序的入口地址),从而使程序可以运行

3. 程序运行结束后,返回到加载者

所以程序是从程序被加载进入内存后,第一次设定的CS:IP指向的内存处开始执行的。

------解决方案--------------------------------------------------------
bbs.pediy.com 有一篇描述模拟系统加载 exe 代码的文章,写得不错可以借鉴。
------解决方案--------------------------------------------------------
关于EXE,可以查查VC的包含文件里的相关结构
------解决方案--------------------------------------------------------
exe文件的格式,网上都有,你可以自己搜一下,或者给我发Email:little_grass at 163.com,我给你发一个。
------解决方案--------------------------------------------------------
文件头:
NE_MAGIC = 0 # Magic number
NE_EXRABYTES = 1 # Bytes on last page of file
NE_PAGES = 2 # Pages in file
NE_RELOCITEMS = 3 # Relocations
NE_HEADERSIZE = 4 # Size of header in paragraphs
NE_MINALLOC = 5 # Minimum extra paragraphs needed
NE_MAXALLOC = 6 # Maximum extra paragraphs needed
NE_INITSS = 7 # Initial (relative) SS value
NE_INITSP = 8 # Initial SP value
NE_CHECHSUM = 9 # Checksum
NE_INITIP = 10 # Initial IP value
NE_INITCS = 11 # Initial (relative) CS value
NE_RELOCTABLE = 12 # File address of relocation table
NE_OVERLAY = 13 # Overlay number

指令从 ne_header[NE_HEADERSIZE]*16 + ne_header[NE_INITCS]*16 开始
------解决方案--------------------------------------------------------
DOSEXE使用的是MZ格式,可以参考一下其结构图
  相关解决方案