2025年关于exe文件

关于exe文件一 EXE 文件结构 EXE 文件分为两个部分 EXE 文件头和程序本体 exe 文件比较复杂 属于一种多段的结构 是 DOS 最成功和复杂的设计之一 每个 exe 文件包含一个文件头和一个可重定位程序的映像 文件头包含 MS DOS 用于加载程序的信息 例如程序的大小和寄存器的初始值 文件头还指向一个重定位表

大家好,我是讯享网,很高兴认识大家。

一、EXE文件结构

EXE文件分为两个部分: EXE文件头和程序本体。exe文件比较复杂,属于一种多段的结构,是DOS最成功和复杂的设计之一。每个exe文件包含一个文件头和一个可重定位程序的映像。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映像中可重定位段地址的指针链表。MS-DOS通过把该映像直接从文件复制到内存加载exe程序,然后调整定位表中说明的可重定位段地址。定位表是一个重定位指针数组,每个指向程序映像中的可重定位段地址。

二、EXE文件分析

1.MZ是EXE文件的标示,它占用了文件最开头的俩字节。

2.再往下看,在偏移02-03h的地方存放了000C,在偏移04-04h的地方存放了0009。通过这两个数据可以计算出文件大小,在这里0009指出该文件用了9个块(1个块是512B),000C指出最后一个块(第9个块)没有用完只用了000C个字节。

3.偏移06-07h处为重定向项目的个数。什么叫重定向呢,就是:EXE文件必须要加载到内存中才能执行,但是文件中数据的偏移地址跟内存中偏移是不一样的,重定向就是达到重新修改偏移的目的。在这里我们也应该看一下偏移18-19h处的数据,它指出了第一个重定向项目在本文件中的偏移,在本文件中为003Eh。即,在本文件003Eh偏移处存放了第一个重定向项目的内容,它的结构体声明为:

struct EXE_RELOC { unsigned short offset; unsigned short segment; };

讯享网

4.偏移08-09h处:该处数据指出了EXE头部大小,一般EXE头部后面紧跟着的就是程序数据了。本文件中为0020h,注意它的单位是节,一个节为16个字节,也即程序数据开始于文件偏移200h处。

5.偏移0A-0Bh处:该处数据指出了运行该程序所需的最小内存,如果小于这个内存,程序将不会被加载执行。

6.偏移0C-0Dh处:该处数据指出了运行该程序所需的最大内存,一般为FFFFh。

7.偏移0E-0Fh处:堆栈段在装入模块中的偏移,本文件中为:00E5h
 偏移10-11h处:SP初始值,本文件中为:0080h
 即SS:SP=00E5:0080

三、IAT表和导入表

当exe程序中调用dll中的函数时,反汇编可以看到,call后面并不是跟的实际函数的地址,而是给了一个地址;


讯享网

这些连起来就是一张表,就是IAT表;

例如:一个exe中调用系统提供的dll中的MessageBox函数时call的地址是42d2c4;

查看42d2c4中的内容:

可以看到:42d2c4中保存的是762b0026;

762b0026是dll中MessageBox函数的地址;

exe程序调用dll中的函数时,会使用FF15call;

call的并不是实际的函数地址,而是该函数对应的IAT表的地址;

通过IAT表来找到实际的函数地址;

查看一个运行的exe执行程序有哪些DLL:

打开“360安全卫士”软件

打开“功能大全”菜单

运行“360任务管理器”。

用鼠标选中查看需要分析的exe执行程序

鼠标点击“显示进程加载的模块

显示正在运行的exe所包含的动态链接库DLL以及引用的库文件所在的位置 

小讯
上一篇 2025-02-15 18:11
下一篇 2025-01-11 07:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/71398.html