indows的运行分实模式、标准模式和增强模式三种,虽然这几种模式各不相同,但其核心模块的调用关系却是完全一致的,见图一。 主要的三个模块,有如下的关系: ·KERNEL是Windows系统内核,它不依赖其它模块。 ·GDI是Windows图形设备接口模块,它依赖于KERNEL模块。 ·USER是Windows用户接口服务模块,它依赖于KERNEL、GDI模块及设备驱动程序等所有模块。 这三个模块,实际上就是Windows的三个动态链接库。KERNEL有三种系统存在形式:Kern el.exe(实模式)、Krnl286.exe(标准模式)、Krnl386.exe(386增强模式);GDI模块是Gdi.ex e;USER模块是User.exe。虽然文件名都以EXE为扩展名,但它们实际都是动态链接库。 同时,几乎所有的API函数都隐藏在这三个模块中。用EXEHDR对这三个模块分析,就可列出一大堆大家所熟悉的Windows API函数。 以GDI模块为例,运行结果如下: C:\WINDOWS\SYSTEM>exehdr gdi.exe Exports: rd seg offset name ............ 351 1 923e EXTTEXTOUT exported, shared data 56 3 19e1 CREATEFONT exported, shared data ............ 至此,读者已能从Windows纷繁复杂的系统中理出一些头续来。下面,再引入一个重要概念——重定位。 一个Windows执行程序对调用API函数或对其它动态库的页码:[1] [2] [3] [4] [5] [6] [7] [8] 第4页、共8页 |