您的位置:首页 > 其它

逆向分析学习笔记--PE文件加载流程

2016-10-07 22:00 423 查看

一、WIN32PE加载流程

(参考《软件保护及分析技术》)

win32程序一般是由其他程序启动生成的,启动的顺序一般为:

1、创建进程CreateProcessA或CreateProcessA,这两个函数在其内部调用了又调用了NtCreateUserProcess,从这里开始进程就已经创建

2、内核调用NtCreateUserProcess后,会根据传递过来的参数来检查参数中指定的程序状态和文件格式,如果PE文件合格且允许载入,就开启新进程,新进程创建完成后,内核就已经把Ntdll.dll模块加载到内存空间

3、新进程创建后第一条指令函数(Ntdll.dll).LdrInitializeThunk,在这个函数内部会调用LdrLoadDll来载入Kernel32.dll以及其它需要的dll模块

4、LdrLoadDll在装载dll时,会用模块名称测试模块是否已在内存,若没有加载则调用NtOpenFile–>NtMapViewOfSetiony映射模块,否则直接NtMapViewOfSetiony映射

5、所有模块及数据初始化完毕之后,调用(Ntdll.dll)RtlUserThreadStart启动主线程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PE文件