learning
Day1
1、PE文件(portable executable)
EXE : 这是一个可执行文件
文件值属性:010F(H)
加载基址:0x00400000
DLL : 这是一个动态链接库文件,EXE 文件在运行时会调用 DLL 文件中的代码和资源
文件值属性:IMAGE_FILE_HEADER.Characteristics:210(H)
加载基址:0x10000000
加载过程:调用CreateProcess
启动,生产内核对象,分配4GB进程空间,系统加载器加载dll
文件以及完成重定位, IAT
, 接着创建进程的主线程,之后主线程为每个DLL
调用_DLLMainCRTStartup
函数,然后主线程根据 EXE
是GUI
(图形化)程序还是CUI
(控制台)程序执行MainCRTStartup
。
最后一步执行WinMain
(或者main函数):
1、ReadFile
读取文件头信息,判断是否是PE
文件
2、获取映像总大小,申请可读可写可执行的内存全部填为0
3、获取区段信息,循环读取每一个区段内容,将ReadFile
读取的数据映射到内存中
4、修复重定位
5、修复IAT
6、创建线程,线程回调指向OEP
2、基础知识
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.