逆向分析学习笔记--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文件学习系列笔记四-C++实现PE文件的分析
- Linux 学习笔记_5_Linux引导流程解析_2_inittab文件剖析及系统启动流程分析
- 安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件
- 动态链接库(Dynamic Link Library)学习笔记(附PE文件分析)
- mybatis源码学习之执行过程分析(0)——配置文件加载(io包)
- vue.js学习笔记:如何加载本地json文件
- Spark学习笔记 --- spark RDD加载文件
- kernel 启动流程之 【设备驱动加载】 学习笔记
- Spring源码分析:Bean加载流程概览及配置文件读取
- Spring 源码分析:Bean 加载流程概览及配置文件读取
- 逆向工程核心原理学习笔记(十二):分析abex' crackme #1
- Struts2学习笔记一:工作流程与核心文件
- 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
- FATFS文件系统+源码分析——学习笔记
- MyBatis源码学习笔记(十)SQL执行流程分析
- 逆向工程核心原理学习笔记(十二):分析abex' crackme #1
- 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
- 《逆向工程核心原理》学习总结(四) - PE文件格式
- 安卓逆向学习笔记(0)- HelloWorld.apk的文件结构
- STM32学习笔记之USB工程目录文件分析