有关PE文件的一些总结

PE加载的一些核心步骤

1.当PE 文件被执行时候,PE加载器首先会检查Dos 头里面的PE header 偏移,如果找到则跳转至PE header
2.PE加载器会检查PE header标志位是否有效,如果有效,则跳转至PE header尾部;
3.PE加载器会读取节表中信息,然后采用内存文件映射的方法,将这些节映射至内存,同时按照节表的属性设置内存块属性
4.PE文件映射至内存以后,PE加载器将处理导入表部分的逻辑

软件加载过程

1、双击exe时候, Shell(Explorer.exe )的一个子进程会检测到这个动作,根据注册表中的信息获取文件名,然后Shell(Explorer.exe )调用CreateProcess函数激活exe程序
2、系统创建一个进程内核对象,引用计数置为1
3、系统为进程创建一个4GB的进程虚拟地址空间
4、PE加载器把exe的代码映射到地址空间,并查找ImportTable引入相关
的动态链接库(DLLs )
5、系统为进程创建一个主线程,线程得到CPU后,把CS:IP指向.text节中
的程序进入点(OEP) ,此处是一条JMP指令,它跳到XXXCRTStartup
函数处执行
6、这里完成c/c++运行期库的一些初始化设置,包括c++ 构造函数的调用
全局变量,静态变量的初始化
7、调用WinMain/main函数,进入主函数
8、注册窗口类,创建窗口,显示窗口,更新窗口,进入消息循环
9、窗口关闭,循环退出,返回到C/C++ 运行期库
10、完成一些清理工作
11 、最后是ExitProcess退出进程

猜你喜欢

转载自blog.csdn.net/richard1230/article/details/80104874