手工实现简易PE文件

手工打造超小PE文件 手工打造超小PE文件作者:Sunline lisunlin0@yahoo.com.cn代码下载:http://download.youkuaiyun.com/source/359340最近试着做一些比较小的PE文件, 系统可识别的EXE做到了119 Bytes(压缩包中的MinApp_06.bat.exe文件, 期望再减小2 bytes左右), 弹出一个对话 阅读详情

0x01、写在之前

        PE文件作为可执行文件在Windows上的重要性不言而喻。为了更好的理解PE文件的结构,花了一定的时间手工实现了一个简易的PE文件。完成后做了一些总结,记录在此,以免后忘!如有错误之处,还请指正!

0x02、结构解析

        要想手工打造一个PE文件,那么我们就必须先要知晓PE文件各个主要结构体的大小以及结构体的各个字段,这样实现起来才会更得心应手。我们可以使用两种方式来达到手工PE的目的。一种是根据PE结构纯手动划分各个字段并处理,另一种是借助工具辅助我们实现。这两种方式接下来会一一介绍!

1、通过结构体字段

        编辑工具:Notepad++;

        字段介绍:IMAGE_DOS_HEADER、IMAGE_FILE_HEADER、IMAGE_OPTIONAL_HEADER;

1.1、IMAGE_DOS_HEADER

        这是为了兼容16位系统而保留的一个文件头,一个DOS头包含了:DOS MZ头和DOS Stub(指令字节码)。DOS Stub的指令直接码是用在DOS平台的,而此次构造的PE文件为了精简文件大小就并无考虑构造它(事实是它在32位系统下并无作用,没有它并不影响程序执行)。但是没有DOS MZ头是必须的,没有它程序将无法正常运行。接下来看IMAGE_DOS_HEADER结构体:

typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
    WORD   e_magic;                     // **Magic number 固定MZ(0x5A4D)
    WORD   e_cblp;                      
    WORD   e_cp;                        
    WORD   e_crlc;                      
    WORD   e_cparhdr;                   
    WORD   e_minalloc;                  
    WORD   e_maxalloc;                  
    WORD   e_ss;                        
    WORD   e_sp;                        
    WORD   e_csum;                      
    WORD   e_ip;                        
    WORD   e_cs;                       
    WORD   e_lfarlc;                  
    WORD   e_ovno;                    
    WORD   e_res[4];                   
    WORD   e_oemid;                     
    WORD   e_oeminfo;                   
    WORD   e_res2[10];                 
    LONG   e_lfanew;                    // **PE头的文件偏移
  } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;

在此结构体中,需要关注的就是代码中注释出来的两个字段:e_magic、e_lfanew。在构造时我们就按照结构体中每个字段所需大小进行构造,如下:

-----IMAGE_DOS_HEADER--------
4D 5A 		// Dos Magic
00 00 
00 00 
00 00 
00 00 
00 00 
00 00 
00 00
00 00 
00 00 
00 00 
00 00 
00 00 
00 00 
00 00 00 00 00 00 00 00 
00 00 
00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
40 00 00 00	//PE FOA
-----IMAGE_DOS_HEADER--------

1.2、IMAGE_NT_HEADER

        NT头中包含了标识PE的Signature字段以及IMAGE_FILE_HEADER(文件头)、IMAGE_OPTIONAL_HEADER(可选头)

1.2.1、IMAGE_FILE_HEADER

结构体如下:

typedef struct _IMAGE_FILE_HEADER {
    WORD    Machine;                 // **指令运行平台
    WORD    NumberOfSections;        // **区段(节)数量
    DWORD   TimeDateStamp;           // 时间戳 
    DWORD   PointerToSymbolTable;    // COFF符号表文件偏移,此值对映像文件为 0(微软已不建议使用)
    DWORD   NumberOfSymbols;         // 符号表中元素数目,与上一个字段关联,为 0 
    WORD    SizeOfOptionalHeader;    // 可选头(扩展头)大小
    WORD    Characteristics;         // **文件属性标志
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

characteristics是一个很重要的字段。它的不同数据位定义了不同的文件属性,不同的定义将影响系统对文件的装入方式。对于普通PE文件这个值位:0x10F。

构造如下:

-----IMAGE_FILE_HEADER-------
4C 01 		// 指令运行平台 .386
03 00 		// 区段数量
00 00 00 00     // 时间戳
00 00 00 00	// 一般为0
00 00 00 00     // 一般为0
E0 00 		// 扩展头大小
0F 01 		// 文件属性标志 0000 0001 0000 1111
-----IMAGE_FILE_HEADER-------
1.2.2、IMAGE_OPTIONAL_HEADER

结构体如下:

typedef struct _IMAGE_OPTIONAL_HEADER {
    // Standard fields
    WORD    Magic;
    BYTE    MajorLinkerVersion;
    BYTE    MinorLinkerVersion;
    DWORD   SizeOfCode;
    DWORD   SizeOfInitializedData;
    DWORD   SizeOfUninitializedData;
    DWORD   AddressOfEntryPoint;
    DWORD   BaseOfCode;
    DWORD   BaseOfData;

    // NT additional fields.

    DWORD   ImageBase;
    DWORD   SectionAlignment;
    DWORD   FileAlignment;
    WORD    MajorOperatingSystemVersion;
    WORD    MinorOperatingSystemVersion;
    WORD    MajorImageVersion;
    WORD    MinorImageVersion;
    WORD    MajorSubsystemVersion;
    WORD    MinorSubsystemVersion;
    DWORD   Win32VersionValue;
    DWORD   SizeOfImage;
    DWORD   SizeOfHeaders;
    DWORD   CheckSum;
    WORD    Subsystem;
    WORD    DllCharacteristics;
    DWORD   SizeOfStackReserve;
    DWORD   SizeOfStackCommit;
    DWORD   SizeOfHeapReserve;
    DWORD   SizeOfHeapCommit;
    DWORD   LoaderFlags;
    DWORD   NumberOfRvaAndSizes;
    IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
} IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32;

构造如下:

0B 01        // magic PE32
00 00        // 链接器版本号,对程序运行无影响
00 02 00 00  // 区段文件对齐后的总大小
00 04 00 00  // 所有包含已经初始化数据的区段的总大小
00 00 00 00  // 所有包含未初始化数据的区段的总大小
00 10 00 00  // OEP
00 10 00 00  // 代码区段的起始RVA BaseOfCode 一般紧跟PE头后面,为.text段
00 20 00 00  // 数据区段的起始RVA BaseOfData 一般在文件末尾,为.data段
00 00 40 00  // PE文件默认加载基址
00 10 00 00  // 区段的内存对齐粒度
00 02 00 00  // 区段的文件对齐粒度
06 00 
00 00  	     // 操作系统版本号
00 00 
00 00  	     // 本PE文件映像版本号
06 00 
00 00  	     // 运行所需要的子系统版本号
00 00 00 00  // 子系统版本的值
00 00 00 00  // 加载到内存后的映像大小,可以比实际值大,但不能小
00 04 00 00  // SizeOfHeaders 所有头+区段表按照文件对齐粒度对齐后的大小
00 00 00 00  // 校验和,PE文件一般为0
03 00        // 指定使用界面的子系统 0000 0011 ==> 3
00 81        // PE文件属性,是否开启随机基址等
00 00 01 00  // 初始化时保留栈的大小,默认值为0x100000
00 10 00 00  // 初始化时实际提交的栈的大小,默认值为0x1000
00 00 01 00  // 初始化时保留堆大小,默认值0x100000
00 10 00 00  // 初始化时实际提交的堆大小,默认值为0x1000
00 00 00 00  // 加载标志 0
10 00 00 00  // 定义数据目录结构的数量,由SizeOfOptionalHeaders决定
00 00 00 00 00 00 00 00 //0 导出数据.edata,无
00 20 00 00 00 02 00 00 //1 导入数据.idata,需构造
00 00 00 00 00 00 00 00 //2 
00 00 00 00 00 00 00 00 //3 资源数据
00 00 00 00 00 00 00 00 //4 
00 00 00 00 00 00 00 00 //5 重定位数据,NULL
00 00 00 00 00 00 00 00 //6 
00 00 00 00 00 00 00 00 //7 必须为0
00 00 00 00 00 00 00 00 //8
00 00 00 00 00 00 00 00 //9
00 00 00 00 00 00 00 00 //10 
00 00 00 00 00 00 00 00 //11 
28 20 00 00 10 00 00 00 //12 IAT,是导入表的一部分
00 00 00 00 00 00 00 00 //13 延迟载入
00 00 00 00 00 00 00 00 //14 
00 00 00 00 00 00 00 00 //15 

可选头的构造与后面的数据相关联,并不是像DOS头和文件头一样那么简单的构造。可在与后面数据相关联的字段填上一些无关数据并做好注释以便后面修改。

1.3、IMAGE_SECTION_HEADER

        节(区段)是PE中非常重要的结构体之一,各个节分别表示着代码、数据、资源等数据的位置。

结构体如下:

typedef struct _IMAGE_SECTION_HEADER {
    BYTE    Name[IMAGE_SIZEOF_SHORT_NAME];
    union {
            DWORD   PhysicalAddress;
            DWORD   VirtualSize;
    } Misc;
    DWORD   VirtualAddress;
    DWORD   SizeOfRawData;
    DWORD   PointerToRawData;
    DWORD   PointerToRelocations;
    DWORD   PointerToLinenumbers;
    WORD    NumberOfRelocations;
    WORD    NumberOfLinenumbers;
    DWORD   Characteristics;
} IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER;

1.4、IMAGE_IMPORT_DESCRIPTOR(属于导入数据区段)

        导入表描述信息结构体,结构体中保存着双桥(IAT(桥2)、INT(桥1))的指向以及导入的DLL的名称。

        双桥中保存着的RVA都指向了一个结构体数组IMAGE_THUNK_DATA,而且它们指向的结构体数据相同。该结构体实际上是一个双字(DWORD),在不同的时刻拥有不同的解释。该字段有两种解释:

  1. 双字最高位为 0:表示导入符号是一个数值,该数值是一个RVA。
  2. 双字最高位为 1:表示导入符号是一个名称。

结构体如下:

typedef struct _IMAGE_THUNK_DATA32 {
    union {
        DWORD ForwarderString;      
        DWORD Function;             // PDWORD
        DWORD Ordinal;
        DWORD AddressOfData;        // PIMAGE_IMPORT_BY_NAME是一个RVA,指向另一个结构体IMAGE_IMPORT_BY_NAME
    } u1;
} IMAGE_THUNK_DATA32;

1.5、IMAGE_IMPORT_BY_NAME(属于导入数据区段)

结构体如下:
typedef struct _IMAGE_IMPORT_BY_NAME {
    WORD    Hint;                   // 函数序号
    CHAR   Name[1];                 // 大小不确定,以 0 结尾
} IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME;

在内存中,通过桥1可以找到调用的函数名称或函数的索引编号,桥2可以帮助找到该函数指令代码在内存空间的地址。关系图如下:


当PE被加载进虚拟内存空间以后,IAT的内容会被操作系统填充为函数的VA。需要注意的一点是,IMAGE_IMPORT_DESCRIPTOR是以全0结构体结尾的,与之相关的导入名称表(INT)和导入地址表(IAT)也是以0结尾。如果不同的IMAGE_IMPORT_DESCRIPTOR中指向的INT、IAT不小心没有以0结尾,那么将造成某个IMAGE_IMPORT_BY_NAME明明不属于这个IMAGE_IMPORT_DESCRIPTOR但是010Editor却将它识别成了与它相关联的数据!

        关于函数的调用过程:汇编语句在执行到call的时候call的是IAT中已经被系统填充好的函数地址(有随机基址的情况下,这个地址是被系统修复重定位后的数据)。而这个填充的过程是在PE文件载入内存时且程序开始运行前完成的,完成这个步骤需要依赖于导入表的数据,即双桥结构的数据。

2、借助编辑工具

        使用010Editor工具。

        经过上一节的介绍,此处就不再赘述文件结构了。以下是一张我总结并制作好的图片。通过这张图会对PE文件有个更为清晰直观的认识!


0x03、结束语

        通过此次手工实现的一个可执行的PE文件,对PE的结构有了更为清晰的认识。逆向之路 路漫漫其修远......

        《PE权威指南》是学习PE的一本好书,如您看此文章因我概述不清想更为细致的了解可看此书!

        本文以及本文中的图片为个人原创内容,他人非本人授权转载盗用必究!!!

PE手工编辑EXE(EXE文件手工编辑过程, PE文件格式,为EP编写的EXE源程序VC工程 ) PE手工编辑EXE(EXE文件手工编辑过程, PE文件格式,为EP编写的EXE源程序VC工程 ) 本文档最后是,本文档最后是,通过解析一个EXE文件的完整过程,达到对PE文件的学习和理解 1.在ollydbg.exe编辑中, 打开文件EP Test - 副本.exe 滚动到代码段第1行,注意观察00401000 - 0040103C区间的代码: 2.在010 Editor编辑中, 打开文件EP ... 阅读详情

相关推荐

手写PE文件(hello world)

手写PE文件(hello world) 文章目录手写PE文件(hello world)工具winhex平台win10注意事项PE结构过程DOS头(共0x40个字节)DOS程序(无固定字节长度)PE标志(共4个字节)PE文件头(共0x14个字节)PE可选头(共0xE0个字节)段头(共0x28个字节)text段rdata段data段参考: 工具 winhex 平台 win10 注意事项 **1、**文件读取中以字节读取文件,但是存储是以各种类型来使用变量 **例如:**word型为两个字节,读取时时先读取低位后

qq_45835867的博客 2675

最小的PE文件

最小的PE文件入门 因为做的比较仓促,有些部分尤其是标色部分可能不太完整具体结构内容请参照文中链接或其他文章。 工具用的是winhex 工具用的是IDApro6.6 汇编代码找的方法是在000000E8的位置有四个字节20020000表示汇编代码在00000220位置,或者直接在IDA中找 根据最开始的PE结构我们一步步分析 这里要提一点,在存每个结构的时候字节间按照低位在前高位在后,也就...

weixin_43345082的博客 5719

《WindowsPE权威指南》附书源代码.rar

pe结构 chapter1 Windows PE开发环境 -HelloWorld.exe -chapter2 三个小工具的编写 -HelloWorld.exe -chapter3 PE文件头 -HelloWorld.exe -chapter4 导入表 -HelloWorld.exe -chapter5 导出表 -HelloWorld.exe -chapter6 堆栈与重定位表 -HelloWorld.exe -chapter7 资源表 -HelloWorld.exe -chapter8 延迟导入表 -HelloWorld.exe -chapter9 线程局部存储 -HelloWorld.exe -chapter10 加载配置信息 -HelloWorld.exe -chapter11 动态加载技术 -HelloWorld.exe -chapter12 PE变形技术 -HelloWorld.exe -chapter13 PE补丁技术 -HelloWorld.exe -chapter14 在PE空闲空间中插入程序 -HelloWorld.exe -chapter15 在PE间隙中插入程序 -HelloWorld.exe -chapter16 在PE新增节中插入程序 -HelloWorld.exe -chapter17 在PE最后一节中插入程序 -HelloWorld.exe -chapter18 EXE捆绑器 -HelloWorld.exe -chapter19 软件安装自动化 -HelloWorld.exe -chapter20 EXE加锁器 -HelloWorld.exe -chapter21 EXE加密 -HelloWorld.exe -chapter22 PE病毒提示器 -HelloWorld.exe -chapter23 破解PE病毒的实现 -HelloWorld.exe

[读书][笔记]WINDOWS PE权威指南《三》PE的原理和基础 之 第三章 PE文件头

文章目录3.1 PE的数据组织方式3.2 与PE有关的基本概念3.2.1 地址3.2.2 指针3.2.3 数据目录3.2.4 节3.2.5 对齐3.2.6 Unicode字符串3.3 PE文件结构3.3.1 16位系统下的PE结构3.3.2 32位系统下的PE结构3.3.3 程序员眼中的PE结构3.4 PE文件头部解析3.5 数据结构字段详解3.6 PE内存映像3.7 PE文件头编程3.8 总结 3.1 PE的数据组织方式 3.2 与PE有关的基本概念 3.2.1 地址 3.2.2 指针 3.2.3 数据目

二次元怪兽的博客 2877

WindowsPE权威指南配套软件

WindowsPE权威指南配套软件 自己收集起来的 学WindowsPE权威指南 会用到

LabVIEW内存泄漏诊断与优化:从报错到高效运行

本文深入探讨LabVIEW内存泄漏的诊断与优化方法,从理解内存泄漏本质到使用专业工具链进行问题定位,再到高频场景的解决方案和高级优化策略。通过实战案例展示如何解决工业数据采集系统中的内存不足问题,帮助开发者提升LabVIEW应用的稳定性和效率。

moon9的博客 197

深入理解PE,手工制作64位PE程序

由于像 ASLR 这样的内存保护以及许多其他原因,该字段指定的地址几乎从未被使用过,在这种情况下,PE 加载程序选择一个未使用的内存范围来加载图像,在将图像加载到该地址后加载器进入一个称为重定位的过程,它修复图像中的常量地址以使用新的图像库,有一个特殊的部分保存有关需要重定位时需要修复的地方的信息,该部分称为重定位部分(对于 DLL,入口点是可选的,在没有入口点的情况下,该。十进制为70,这个大小是由我们在节区的数据量来确定,我们这个操作码+字符常量的总占地大小为70,所以这里填写70。

yhy1315的博客 2031

IEC104协议下的文件传输与软件升级的技术细节与操作流程

本文深入探讨IEC104协议下的文件传输过程和软件升级机制,揭示其背后的技术细节和操作流程。

2401_86189088的博客 2524

手工构造一个超微型的 PE 文件

作者: 一块三毛钱邮箱: zhongts@163.com日期: 2003.12.18最近构造了一个微型的 PE 文件,下面把构造的方法和一点心得写出来和大家交流,也算是对 PE 格式的一个复习吧。 最终构造好的文件大小是 180 字节,可以在 Win2k 下运行,运行后会弹出一个消息框。下载来看看最后生成的文件的内容:00000000 4D 5A 00 00 50 45 00 00

rageliu的专栏 2057

VGG16

VGG16学习笔记

一去不复返的通信er 1177

RK3568驱动XS9922B:AHD/CVBS双模摄像头兼容性实战

在嵌入式视频开发中,摄像头驱动的稳定性与兼容性往往决定项目交付质量。Linux内核的V4L2框架提供了统一的视频采集抽象,从v4l2_subdev子设备到media controller链路,再到用户态视频节点,每一层都需要精确配置。对于RK3568这类边缘计算平台,其MIPI CSI接口和自研ISP配合RKCIF,构成了完整的多路视频接入通路。当需要接入模拟视频解码芯片时,驱动设计就需同时考虑AHD高清协议与CVBS标清信号的模式切换、格式协商以及寄存器配置。XS9922B作为支持双模输入的解码芯片,可与

weixin_34216614的博客 346

实验五——手工编写PE文件

【实验名称】 手工编写PE文件 【实验目的】 1.了解PE文件的概念、结构 2.熟悉PE编辑查看工具,详细了解PE文件格式 3.重点分析PE文件文件头、引入表、引出表,以及资源表 【实验原理】 1.PE文件概述 PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL) 2.PE文件结构 3.PE文件各部分描述 MS-DOS

Onlyone_1314的博客 8926

在 SAP ABAP 里可靠地对接 FTP 服务器:从连接、命令到传输与排错的完整实战

本文详细介绍了在SAP ABAP中实现FTP文件交换的完整技术方案。文章首先解析了FTP协议的双连接特性(控制连接与数据连接),强调保持控制连接的重要性。随后详细说明了ABAP中FTP操作的四步标准流程:建立连接(包含HTTP_SCRAMBLE加密)、执行命令、断开连接和关闭RFC通道。文章提供了实战案例代码,演示如何将FTP文件复制到应用服务器再读取进内表处理,特别指出后台作业与前台操作的关键差异。最后总结了常见错误排查要点,包括连接模型、路径设置和资源释放等问题。全文通过SAP标准函数模块的调用顺序、典

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 305

详细的手工构造PE文件教程

一直以来都在学习PE文件结构,从不敢轻视,但是即使如此还是发现自己在这方面有所不足,于是便想到了用纯手工方式打造一个完整的可执行的PE文件。在这期间我也查了大量资料,但是这些资料都有一个通病就是不完整,看雪得那个只翻译了一部分,加解密技术内幕介绍的更是笼统,而且是打造一个只有180字节的PE文件,是高手们茶余饭后的怡情小游戏。 鉴于此,心想为什么不自己摸索着手工打造一个完整些的呢?一是加强一下自己对于PE文件的了解,二是写出一篇参考性比较强的文章,给有志于在此发展的朋友们铺...

子曰小玖的博客 1182

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 135

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

PE格式:手工实现各种脱壳后的修复

PE(Portable Executable)导入表是Windows操作系统中可执行文件(如DLL和EXE)的一部分,用于记录该文件所依赖的外部模块和函数。导入表是PE文件结构中的一部分,负责描述程序在运行时需要引用的外部符号,以便操作系统在加载程序时能够解析这些符号并正确地链接到相应的函数或模块。

微软技术分享 6095

【华为OD机试真题E卷】514、学生方阵 | 机试真题+思路参考+代码分析(E卷复用)(C++、Java、Py)

【华为OD机试真题E卷】514、学生方阵 | 机试真题+思路参考+代码分析(E卷复用)(C++、Java、Py) 题目描述 学校组织活动,将学生排成一个矩形方阵 请在矩形方阵中找到最大的位置相连的男生数量 这个相连位置在一个直线上,方向可以是水平的,垂直的,成对角线的或者呈反对角线的 注:学生个数不会超过10000

KJ.JK 2492

手工解析PE(文件注入代码实现)

手工解析PE(文件注入代码实现)

GNAIXGNAHZ的博客 663

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PE文件格式详解(手工实现一个可执行文件)

【转载文章-看雪学院】非常经典 http://www.pediy.com/kssd/index.html 其实还是很多细节的地方没弄懂,保存下来,认真分析分析。【文章标题】: 手写可执行程序 【文章作者】: dncwbc 【作者邮箱】: dnc2588@163.com 【作者QQ号】: 182445917 【软件名称】: Hello World! 【软件大小】: 2.5K 【下载地址

kouhong_lady的专栏 4283

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

一篇绝对详细的手工构造PE文件教程

题记:一篇绝对详细的手工构造PE文件教程。      转载请注明版权:A1Pass  http://a1pass.blog.163.com/       一直以来都在学习PE文件结构,从不敢轻视,但是即使如此还是发现自己在这方面有所不足,于是便想到了用纯手工方式打造一个完整的可执行的PE文件。在这期间我也查了大量资料,但是这些资料都有一个通病就是不完整,看雪得那个只翻译了一部分,加解密技术

自由无限 1548

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

题记:一篇绝对详细的手工构造PE文件教程

转载请注明版权:A1Pass  http://a1pass.blog.163.com/       一直以来都在学习PE文件结构,从不敢轻视,但是即使如此还是发现自己在这方面有所不足,于是便想到了用纯手工方式打造一个完整的可执行的PE文件。在这期间我也查了大量资料,但是这些资料都有一个通病就是不完整,看雪得那个只翻译了一部分,加解密技术内幕介绍的更是笼统,而且是打造一个只有180字节的PE文件

ww531dd的专栏 642

PE文件格式:导入表&IAT——手工重组

最近学了导入表和IAT之后,

Lagon的专栏 3652

PE格式:手工给程序插入ShellCode

PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如文件加密与解密,病毒分析,外挂技术等,本次实验的目标是手工修改或增加节区,并给特定可执行程序插入一段ShellCode代码,实现程序运行自动反弹一个Shell会话。

微软技术分享 5812

[PE结构] 手工给32位PE文件增加一个新节

0x01 去除重定位表 为了更好的理解PE文件结构,首先得了解增加一个节区需要修改什么,本片博客先去除.reloc节区再增加一个新的.new节区。 FileHeader.NumberOfSections 节区数量 OptionalHeaders.SizeOfHeaders PE头的大小(因为增加了一个新的IMAGE_SECION_HEADER) OptionalHeaders.SizeO...

輚至消亡 1833
下一篇: C++类对象占用空间大小计算
UntilTheCore
博客等级 码龄9年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值