一、概述: 1.名词解释: PE系统一般指windows PE,即windows预安装环境,是在windows内核上构建的具有有限服务的最小win32子系统,它用于安装windows而准备计算机,以便从网络文件服务器复制磁盘映像并启动 2.功能: windows 系统安装 磁盘分区 磁盘、内存检测 手动ghost 系统密码清除 虚拟光驱 3.分类 PE系统可以安装在CD,DVD和U盘等介质中,但因为u盘使用方便且易于携带等,所以大多都是安装在 u盘里(具体优点见下图),所以是u盘pe系统,常见u盘pe系统有电脑店u盘pe系统,大白菜u盘pe系统等等。 二、制作U盘PE系统 准备工作:U盘一个,相关pe系统软件,如电脑店,大白菜 具体步骤:以大白菜u盘pe系统为例 完成上面5步大白菜U盘PE系统即制作完成。 但要想pe系统可以在电脑上实际运行,需要将电脑的系统引导顺序改为U盘优先(台式机一般按del键进入bios界面),然后引导进入PE系统启动界面,就可以放心的安装操作系统,破解密码等等了。
小提示:U盘必须装PE启动系统,才可以进行一下操作步骤 使用U盘重装系统,需自行将所需系统文件复制到U盘内文件夹支持ISO、GHO、WIM、ESD格式的系统文件, ⚠️如果您的电脑支持UEFI启动,则开机后无需任何热键就会直接进入到 U盘PE系统 ⚠️新电脑默认需要调整启动选项<关闭状态>需要手动调整开启, 老电脑英文,重启电脑按F11或者F12进入BIOS设置界面,在“bootoptionmenu”选项下选择“USBHDD”这一项作为首选启动方式
ComPE for win是一款Windows PE系统,其背景和作用都与用户在系统维护和安装过程中遇到的痛点密切相关。 当系统无法启动时,用户可以通过ComPE启动盘进入PE环境,使用这些工具对系统进行修复。例如,它可以修复损坏的系统文件、重建引导记录,帮助用户快速恢复系统的正常运行。 用户可以将系统安装文件准备好后,通过ComPE启动盘进入PE环境,直接使用内置的安装器进行系统安装。 强大的病毒和恶意软件清理功能:ComPE可以在系统之外运行,用户可以在PE环境下使用杀毒软件对系统进行全面的扫描和清理。 https://pan.xunlei.com/s/VOYaW4ehGj4ugXIBY2HIBn8oA1?pwd=khut#
前言 我需要一台稳定且能够全天候运行的机器时,电脑原本预装的 Windows 10 系统,虽然在日常使用场景下表现良好,但大家都知道Windows系统的自动更新太频繁了,而且无法关闭。 在本文中,我将使用 PE 盘安装 Windows Server 2022 系统,PE 盘采用的微PE工具制作。 之后进入PE系统界面,选择GCI备份还原工具,系统文件选择刚刚下载的Windows server 2022镜像文件,之后会让你选择具体的Windows Server版本,博主选择是Datacenter版本 之后就是等待系统自行安装好,关机后再开机之前需要先拔下优盘。 pe系统没有截图工具,所以没有图啦,不过操作很简单的。 再之后就是设置Windows Server 2022系统了,后续博主会有文章补充。 参考 微PE工具箱 Windows server 入门
可能这么说大家感觉比较绕,简单来说,PE系统就是用来安装和修复系统的工具系统,最主要的作用就是用来重装系统。 当然PE系统的作用并不是仅仅用来重装系统,还有其他很多作用: 新装的电脑没系统怎么办,用PE可以直接格式化分区并释放镜像; 系统登录密码忘记了怎么办,用PE系统可以清除系统密码; 系统中了病毒没办法启动怎么办 所以如果想要成为一个出色的系统重装大师(误),做一个PE启动盘是必须的。优秀的PE系统有很多,像大白菜、老毛桃、微PE等等都是很老牌的PE系统,但是它们存在一些问题。 这里我们使用U盘模式来制作PE系统。制作PE系统很简单,确认磁盘那里是插入的U盘之后,点击全新制作按钮即可。 ? 功能上两个PE系统和附带软件都相似,所以我这里就用Win10 PE来作为例子。 优启通PE附带了大量系统安装、检测、修复实用工具,打开开始菜单即可看到。
PE知识复习之PE合并节 一丶简介 根据上一讲.我们为PE新增了一个节. 并且属性了各个成员中的相互配合. 以前我们讲过PE扩大一个节怎么做. 合并节跟扩大节类似. 只不过一个是扩大. 一个是合并了. 合并节的步骤. 1.修改文件头节表个数 2.修改节表中的属性 节.sIzeofRawData 节数据对齐后的大小. 3.修改扩展头中PE镜像大小 SizeofImage 4.被合并的节以 最后一个节表以0填充即可. 3.修改扩展头的PE镜像大小. SizeofImage ? 我们上一讲新增了一个节.所以映像大小为0x1E000. 所以现在要进行修改.合并了0x1000数据大小.那么改为0x1D000即可. 4.测试程序 ? 程序可以直接运行.那么内存中看看节展开位置有没有我们的合并节的节数据. ?
本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术。 该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行后挂入后台并继续运行原始程序,实现了一种隐蔽的Shell访问。而我把这种技术叫做字节注入反弹。 我们以如下截图中的30352为例; 接着读者需要自行准备一段ShellCode代码,只保留代码部分去掉头部变量参数,如下所示; 接着我们使用如下这段代码中的WritePEShellCode函数,通过传入指定PE // 将ShellCode写出到PE程序的特定位置 // 参数1: 指定PE路径 参数2: 指定文件中的偏移(十进制) 参数3: 指定ShellCode文件 void WritePEShellCode( 文件中我们需要手动分析寻找空余块,并在注入成功后还需要自行修正PE文件内的入口地址等,这种方式适合于对PE结构非常熟悉的人可以,但也要花费一些精力去寻找分析,如下代码则是实现了自动化注入功能,该代码中FindSpace
2.文件系统选择【NTFS】点击【开始】。 3.点击【确定】。 4.格式化完成点击【确定】。 5.鼠标右击【PE工具箱V2.3】压缩包选择【解压到 PE工具箱V2.3】。 10.PE正在制作中……大约需要3分钟 11.制作完成点击【完成安装】。 12.PE系统已经成功安装进U盘此时会看到U盘位为空并且多了一个【EFI】的磁盘。 开始安装系统 安装系统 1.把U盘插到电脑上将下载的【win11】文件夹复制到制作的PE系统U盘里。 2.重启电脑选择电脑从介质U盘启动(由于电脑型号不同同设置方法不同提供以下两种方法。 3.进入PE系统后格式化【系统盘】 ①双击【此电脑】。 ②鼠标右击【C盘】选择【格式化】。 ③点击【开始】。 ④点击【确定】。 ⑤格式化完成点击【确定】。 3.可以看到当前c盘是空闲状态我们要进行分区 4.点击快速分区
用PE盘装系统时,在选择包含Windows安装文件的文件夹时,找不到ISO系统镜像映像,如图所示 此时在‘选择包含Windows安装文件的文件夹’选项时,不能鼠标左击,需要右击。。。
PE知识复习之PE新增节 一丶为什么新增节.以及新增节的步骤 例如前几讲.我们的PE文件在空白区可以添加代码.但是这样是由一个弊端的.因为你的空白区节属性可能是只读的不能执行 节.VirtualAddress .这个成员指定了这个节在内存哪里展开.所以需要修改. 4.修改节表文件偏移 节.PointerToRawData 我们指定了内存中从哪里展开节.那么也需要指定这个节在文件中在哪里展开 我们新增的节.自己需要在PE文件添加一段节数据.数据的大小按照文件对齐添加. 并且填写到这个成员中. 6.修改扩展头的PE镜像大小. sizeofImage. 所以我们的偏移位置在0x8A00开始. 4.修改扩展头中PE的镜像大小 SizeofImage 我们新增了0x1000节数据大小.那么我们的镜像大小也要加0x1000大小进行映射.注意.要按照内存对齐 节.PointerToRawData = ()上一个节.PointerToRawData + 上一个节.SizeofRawData. ) 4.修改扩展头SizeofImage PE镜像大小.
PE知识复习之PE扩大节 一丶为什么扩大节 上面我们讲了,空白区添加我们的代码.但是有的时候.我们的空白区不够了怎么办.所以需要进行扩大节. 并且在PE文件中添加0数据进行填充即可. 还要修改扩展头中的 SizeofImage(内存PE镜像大小) 三丶扩大节实战 1.添加数据 随便找一个PE文件.在最后文件偏移处添加数据. 但是注意,修改之后并不能直接查看.因为PE没法运行.我们必须修改扩展头中的sizeofImage属性.这样我们的内存镜像大小才是真正的大小. 加上我们扩展后的数据.然后进行内存对齐. 4.程序运行. ? 程序可以正常运行.并且我们添加的数据也映射到内存中了.
本章笔者将介绍一种通过Metasploit生成ShellCode并将其注入到特定PE文件内的Shell注入技术。 该技术能够劫持原始PE文件的入口地址,在PE程序运行之前执行ShellCode反弹,执行后挂入后台并继续运行原始程序,实现了一种隐蔽的Shell访问。而我把这种技术叫做字节注入反弹。 我们以如下截图中的30352为例;图片接着读者需要自行准备一段ShellCode代码,只保留代码部分去掉头部变量参数,如下所示;图片接着我们使用如下这段代码中的WritePEShellCode函数,通过传入指定PE // 将ShellCode写出到PE程序的特定位置// 参数1: 指定PE路径 参数2: 指定文件中的偏移(十进制) 参数3: 指定ShellCode文件void WritePEShellCode(const 文件中我们需要手动分析寻找空余块,并在注入成功后还需要自行修正PE文件内的入口地址等,这种方式适合于对PE结构非常熟悉的人可以,但也要花费一些精力去寻找分析,如下代码则是实现了自动化注入功能,该代码中FindSpace
0, 0, 0); HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0); // 找到PE char Code[] = { "\x60" "\xb8\x00\x00\x00\x00" "\x80\x30\x88" "\x40" "\x3d\xff\x4f 0, 0, 0); HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0); // 定位PE
PE知识复习之PE的导入表 一丶简介 上一讲讲解了导出表. 也就是一个PE文件给别人使用的时候.导出的函数 函数的地址 函数名称 序号 等等. 一个进程是一组PE文件构成的. PE文件需要依赖那些模块.以及依赖这些模块中的那些函数.这个就是导入表需要做的. 确定PE依赖那个模块. 确定PE依赖的那个函数. 以及确定函数地址. 我们发现在文件中定位导入表的时候都是0,原因是程序加载到内存中.需要用到的时候.操作系统才会往这个地方填写数据. 里面有4个成员.为当前的4个字节起了四个名字. 真正有用的是下面两个. 也就是说有的时候需要用第三个成员. 有的时候需要用第四个成员. 十六进制 0x14 ,一行零4个字节. 1.导入表重要成员有三个. INT表. Name表. IAT表. PE加载前. INT 表 IAT表相同.
PE文件就是我们常说的EXE可执行文件,针对文件特征的识别可以清晰的知道该程序是使用何种编程语言实现的,前提是要有特征库,PE特征识别有多种形式,第一种是静态识别,此方法就是只针对磁盘中文件的特征码字段进行检测来判断编译器版本 打开PE文件映射: 在读取PE结构之前,首先要做的就是打开PE文件到内存,这里打开文件我们使用了CreateFile()函数该函数可以打开文件并返回文件句柄,接着使用CreateFileMapping( 结构,然后判断其是否符合PE文件规范即可,这里需要注意32位于64位PE结构所使用的的结构定义略有不同,代码中已经对其进行了区分. (lpMapAddress, 0); printf("是否为PE文件: %d \n", ret); system("pause"); return 0; } 判断PE文件特征码: 判断程序使用了何种编译器编写 你可以自己去提取一段特征码 SIGN Sign[2] = { { "Microsoft Visual C/C++ x86 (2013)", 0x8a0, "\x55\x8B\xEC\x81\xEC\xC4\
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密 Windows NT 系统中可执行文件使用微软设计的新的文件格式,也就是至今还在使用的PE格式,PE文件的基本结构如下图所示: 在PE文件中,代码,已初始化的数据,资源和重定位信息等数据被按照属性分类放到不同的 PE文件,为了兼容以前的DOS系统,所以保留了DOS的文件格式,接下来将依次介绍这几种数据结构. ,当节被装入内存的时候,同一个节对应的内存页面将被赋予相同的页属性,Windows系统对内存属性的设置是以页为单位进行的,所以节在内存中的对其单位必须至少是一个页的大小,对于X86来说这个值是4KB(1000h ),而对于X64来说这个值是8KB(2000h),磁盘中存储的程序并不会对齐4KB,而只有被PE加载器载入内存的时候,PE装载器才会自动的补齐4KB对其的零头数据。
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密 Windows NT 系统中可执行文件使用微软设计的新的文件格式,也就是至今还在使用的PE格式,PE文件的基本结构如下图所示:图片在PE文件中,代码,已初始化的数据,资源和重定位信息等数据被按照属性分类放到不同的 ,上面介绍的是真正的PE文件,为了兼容以前的DOS系统,所以保留了DOS的文件格式,接下来将依次介绍这几种数据结构.我们需要编程实现读取PE结构,在读取PE文件中的数据的前提下,我们先来打开文件,然后才能读取 ,当节被装入内存的时候,同一个节对应的内存页面将被赋予相同的页属性,Windows系统对内存属性的设置是以页为单位进行的,所以节在内存中的对其单位必须至少是一个页的大小,对于X86来说这个值是4KB(1000h ),而对于X64来说这个值是8KB(2000h),磁盘中存储的程序并不会对齐4KB,而只有被PE加载器载入内存的时候,PE装载器才会自动的补齐4KB对其的零头数据。
PE知识复习之PE的导出表 一丶简介 在说明PE导出表之前.我们要理解.一个PE可执行程序.是由一个文件组成的吗. 答案: 不是.是由很多PE文件组成.DLL也是PE文件.如果我们PE文件运行.那么就需要依赖DLL.系统DLL就是Kerner32.dll user32.dll等等.这些都是PE文件. 这里我拷贝一下系统的DLL kerner32.dll进行解析. 解析导出表的第一步就是定位导出表.求出FOA. 也就是在文件中的位置. 数据目录中查看导出表RVA ? 没一个占4个字节. 存放的是函数地址的 RVA偏移. ? 函数地址表. 4个字节进行存储. 总共有函数所有导出函数个数大小个字节. 还需要注意的就是,如果你按照序号导出. 1 3 4 5导出了4个函数.
PAGE_READWRITE, 0, 0, 0); HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0); // 找到PE NumberOfSections; char Code[] = { "\x60" "\xb8\x00\x00\x00\x00" "\x80\x30\x88" "\x40" "\x3d\xff\x4f PAGE_READWRITE, 0, 0, 0); HANDLE lpBase = MapViewOfFile(hMap, FILE_MAP_READ | FILE_SHARE_WRITE, 0, 0, 0); // 定位PE
PE知识复习之PE的重定位表 一丶何为重定位 重定位的意思就是修正偏移的意思. 如一个地址位 0x401234 ,Imagebase = 0x400000 . 这时候操作系统就会给我们进行修正. 将B DLL 换个内存位置. 进行展开. 这也是为什么很多游戏外挂.等等.都选择DLL注入. 因为系统帮你重定位了各种信息. 代码写在DLL中即可. 但是我们知道.PE文件中有很多RVA .RVA 是相对于ImageBase的偏移进行存放的. 如果PE文件中都是 RVA 那就好办了. 但是不一定呀. 那么每个地址有4个字节的. 那么 4 * 10000 = 4万个字节. 也就是我们要准备一张4万个字节的表来保存重定位的. 高4位存储是否进行重定位. 高4位为3则需要进行重定位. virtuall + 低12位 就是要修正的 RVA偏移.