-
-
[分享]从NT5源码学习进程创建和PE加载过程
-
发表于: 2025-6-19 00:59 704
-
涉及到的知识点:
文件的映射,section对象,或者叫filemap对象的组织形式
VAD,原型PTE,PTE
VAD和PE文件中节区属性的关系
PEB->LDR,已加载模块链表的记录
构造内核栈空间和用户栈空间
线程切换
内核apc的执行
用户apc的执行
程序的入口点是怎么被执行的
等等等......
每个点都可以延展出无数点的知识,一开始我只想学习一下PE文件的组成,但是发现看完就忘了,逆向win10的
CreateProcessInternalW 函数又非常吃力,已经添加了不少新特性,可以学习的书籍还停留在wrk或者reactos中,并且书上这些内容被划分在不同的章节.有些只是一笔带过.,本质上这篇文章是个人的总结,希望可以给其他在学习的提供一点点帮助.
默认调用NT开头的函数它会进入内核,它就是内核函数(因为我也不知道某个文件到底生成的是哪个DLL)
并没有调试跟踪,可能会存在某些跳转错误.尤其是在内核空间栈的创建和填充 ,,以及用户空间栈的创建和填充.
系统是64位的
缺少了很多函数调用,我只看了我觉得重要的部分,例如:
PE文件是使用readfile 读到物理内存的吗?如果1G的PE文件,我只有512M的物理内存怎么办?
什么是映射?难道映射就不需要读到物理内存中吗?
指令执行 总是要在物理内存中的,难道直接在磁盘中取指令?
怎么按照节表的内容映射的?
各种节在哪里解析的?
PE文件中的各种标志在哪里检查的?
都说内核空间是所有程序共享的,到底怎么共享的?
父进程怎么创建出来的新进程,新进程的线程怎么跑起来的?PE文件的入口点在哪里被执行的?
只是个人的总结,并没有很特别的东西.而且很多函数没有真正的弄明白,也就一个半成品







最后于 2025-6-19 09:47
被mb_osgpzxge编辑
,原因: 可能不方便看
赞赏记录
参与人
雪币
留言
时间
道友请留步
这个讨论对我很有帮助,谢谢!
2025-7-9 16:07
htpidk
为你点赞!
2025-6-25 22:46
_Smile`Melo
非常支持你的观点!
2025-6-25 14:14
木志本柯
+5
你的分享对大家帮助很大,非常感谢!
2025-6-23 00:56
zhangbuib
谢谢你的细致分析,受益匪浅!
2025-6-22 22:05
咖啡_741298
你的分享对大家帮助很大,非常感谢!
2025-6-22 21:13
AL10000
谢谢你的细致分析,受益匪浅!
2025-6-19 01:12
赞赏
他的文章
赞赏
雪币:
留言: