- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PE文件结构 * .. PE文件结构 PE文件结构的导出表 当创建一个DLL文件时,实际上创建了一组能让EXE或其它DLL调用的一组函数,此时PE装载器根据DLL文件中输出信息修正被执行文件的IAT。当一个DLL函数能被EXE或另一个DLL文件使用时,它被称为导出了。其中导出信息保存在导出表中,DLL文件通过导出表向系统提供导出函数名、序号和入口地址等信息。 在数据目录表的第一个元素存放的是导出表的地址,其结构如下: * .. PE文件结构 PE文件结构的导出表 …… Name Base NumberOfFunctions NumberOfNames AddressOfFuntions AddressOfNames AddressOfNameOrdinals DLL名称 0函数地址 1函数地址 2函数地址 3函数地址 函数名地址 函数名地址 函数名地址 函数名 函数名 函数名 0 2 3 * .. PE文件结构 更多PE文件知识推荐 * .. Windows启动与程序装载 2.4.1 Windows启动过程 计算机开机后,先执行的是系统固件,即BIOS或EFI(Windows 8以后的主要引导方式),系统固件在完成了对硬件的基本检测之后,将控制权交给磁盘上的引导程序,磁盘引导程序再执行操作系统的加载程序,在Vista后加载程序是WinLoad.exe 系统加载程序首先会对CPU做必要的初始化工作,如切换到保护模式、启用分页机制等。然后通过启动配置文件(Boot.ini或BCD),得到Windows系统的系统目录并加载系统的内核文件,即NTOSKRNL.EXE。当加载这个文件时,会检查它的导入表所依赖的其它文件,包括内核调试通信的硬件扩展DLL等。 然后加载程序会读取注册表,加载其中定义的启动类型(SERVICE_BOOT_START(0))的驱动程序,如磁盘驱动程序等。 完成了上述操作后,系统加载程序会从内核文件的PE头中找到入口函数,并调用这个函数,函数名为:KiSystemStartup * .. Windows启动与程序装载 2.4.1 Windows启动过程 KiSystemStartup函数的主要过程为如下三步: 第一,调用HalInitializeProcessor()函数初始化CPU 第二,调用KdInitSystem()初始化内核调试引擎 第三,调用KiInitializeKernel()开始内核初始化,这个函数会调用KiInitSystem()来 初始化系统的全局数据结构。 KdInitSystem()函数会初始化系统的一些与调试相关的全局变量,如: KdPitchDebugger(bool):当系统启动选项包含 /NODEBUG时设置为真 kdDebuggerEnabled(bool):当系统启动选项包含 /DEBUG或/DEBUGPORT且不包含/NODEBUG时设置为真 KiDeubgRoutine(function):指向内核处理回调函数,调试启动时指向kdpTrap,否则指向kdpStub * .. 软件逆向概述 Windows系统启动过程 * .. Windows启动与程序装载 2.4.2windows程序运行原理 Windows程序运行在保护模式下,也就是每个程序都有自己独立的空间,在Win32系统中,每个程序都有独立的4G空间,即地址0地址0xFFFFFFFF。 为了高效的调度和执行操作系统的各种服务,Windows会把操作系统和内核数据和代码映射到系统中所有进程的进程空间中,因此4G的空间包括两个部分:用户空间和系统空间(低2G为用户空间,高2G为系统空间) 00x7FFFFFFF 00xFFFFFFFF 用户空间 系统空间 进程1 进程2 进程3 进程4 线程 线程 线程 线程 线程 线程 线程 系统模块 驱动程序 * .. Windows启动与程序装载 2.4.2windows程序运行原理 进程就是运行中的程序,在Windows中,一个进程的创建主要在于为进程分配了两个结构:EPROCESS和PEB,在Windows内核中,对进程的操作大都是对EPROCESS结构的操作。进程的EPROCESS结构存放在系统空间中,而PEB结构通过在系统创建后映射在用户空间。 我们可以这样理解为:整个系统内核为一个进程,它存放了应用层各个进程的信息,而内核加载的每一个驱动程序为内核进程的一个线程,共享内核数据。 * .. Windows启动与程序装载 2.4.2windows程序运行原理 EPROCESS结构几乎包括了进程的所有关键信息,比如与调试密切相关的DebugPo
原创力文档


文档评论(0)