PE文件格式学习之PE头移位
以前刚开始学网络安全,是从免杀开始的。记得那时候杀毒软件还很弱。金山江民瑞星还存在。
那会什么原理也不懂,就一直瞎鼓捣。(后来转入渗透行列了)
这段时间一直在学PE格式,突然想起来以前很古老的PE文件头移位。
网上搜了搜,看大家虽然做了视频,但是竟然没人讲原理。借着刚好在学PE格式的知识,就做个PE文件头移位的笔记。(不喜勿喷,刚学PE头文件格式,难免出错请提点,谢谢)
当然现在这种很古老的免杀方式对于杀软来说根本是不堪一击了。纯属做笔记。
PE文件的基本结构如图示:
IMAGE_DOS_HEADER 定义
IMAGE_DOS_HEADER STRUCT +00h WORD e_magic // Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记 +02h WORD e_cblp // Bytes on last page of file +04h WORD e_cp // Pages in file+06h WORD e_crlc // Relocations+08h WORD e_cparhdr // Size of header in paragraphs+0ah WORD e_minalloc // Minimun extra paragraphs needs+0ch WORD e_maxalloc // Maximun extra paragraphs needs+0eh WORD e_ss // intial(relative)SS value DOS代码的初始化堆栈SS +10h WORD e_sp // intial SP value DOS代码的初始化堆栈指针SP +12h WORD e_csum // Checksum +14h WORD e_ip // intial IP value DOS代码的初始化指令入口[指针IP] +16h WORD e_cs // intial(relative)CS value DOS代码的初始堆栈入口 CS+18h WORD e_lfarlc // File Address of relocation table +1ah WORD e_ovno // Overlay number +1ch WORD e_res[4] // Reserved words +24h WORD e_oemid // OEM identifier(for e_oeminfo) +26h WORD e_oeminfo // OEM information;e_oemid specific +29h WORD e_res2[10] // Reserved words +3ch LONG e_lfanew // Offset to start of PE header 指向PE文件头 IMAGE_DOS_HEADER ENDS
以:nc(瑞士军刀为例)
用C32ASM载入nc.exe
(图1网上转载)
偏移地址从0字节开始,就是DOS头的EXE MZ标志。也就是5A4D。有了这个标识,DOS就能识别出该程序是不是有效的执行体。(由于INTEL CPU属于LITTLE-ENDIAN类,字符存储时位低在前,高位在后)
+3ch LONG e_lfanew // Offset to start of PE header 指向PE文件头 ,LONG占4个字节
所以,我们得到了PE文件头偏移地址为00d8。
IMAGE_FILE_HEADER 结构
IMAGE_FILE_HEADER STRUCT +04h WORD Machine; // 运行平台 +06h WORD NumberOfSections; // 文件的区块数目 +08h DWORD TimeDateStamp; // 文件创建日期和时间 +0Ch DWORD PointerToSymbolTable; // 指向符号表(主要用于调试) +10h DWORD NumberOfSymbols; // 符号表中符号个数(同上) +14h WORD SizeOfOptionalHeader; // IMAGE_OPTIONAL_HEADER32 结构大小 +16h WORD Characteristics; // 文件属性 IMAGE_FILE_HEADER ENDS
在这里,我们只需要注意即可。
+14h WORD SizeOfOptionalHeader; // IMAGE_OPTIONAL_HEADER32 结构大小
从PE头开始,偏移14H也就是20个字节,得到结构大小。
结构大小为E0,我们将16换成10进制。就知道该结构有多少个字节。
将数据复制,往上移动8个字节。
因为PE头移动位置,需要重新计算PE头大小。
因为PE头已经移动过位置了,所以需要重新修改PE头大小以及DOS头指向PE头位置。如上图。
运行成功。
转载于:https://www.cnblogs.com/killbit/p/5994670.html
PE文件格式学习之PE头移位相关推荐
- PE文件格式粗浅认识
前言:最近开始学习PE文件格式,写点笔记做点记录,当然,下面这些只是我这个初学者的一些简单的认识. 1.PE文件格式图总览 2.PE文件格式介绍 PE(Portable Execute)文件是Wind ...
- PE文件学习系列二 DOS头分析
合肥程序员群:49313181. 合肥实名程序员群 :128131462 (不愿透露姓名和信息者勿加入) Q Q:408365330 E-Mail:egojit@qq.com PE文件 ...
- Windows Pe 第三章 PE头文件(上)
第三章 PE头文件 本章是全书重点,所以要好好理解,概念比较多,但是非常重要. PE头文件记录了PE文件中所有的数据的组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节:通过P ...
- 深入浅出PE文件格式---自己动手打造PE Show
深入浅出PE文件格式---自己动手打造PE Show 作者:WiNrOOt // ...
- “PE文件格式”1.9版 完整译文
标 题: [翻译]"PE文件格式"1.9版 完整译文(附注释) 作 者: ah007 时 间: 2006-02-28,13:32 链 接: http://bbs.pediy.com ...
- PE文件格式”1.9版 完整译文(附注释)
没看完,先贴上来,以再看! 标 题: [翻译]"PE文件格式"1.9版 完整译文(附注释) 作 者:ah007 时 间: 2006-02-28,13:32 链 接: http:// ...
- PE文件格式系列译文之
PE文件格式系列译文之一---- [翻译]"PE文件格式"1.9版 完整译文(附注释) ==================================== ...
- 【翻译】“PE文件格式”1.9版 完整译文(附注释)
标 题: [翻译]"PE文件格式"1.9版 完整译文(附注释) 作 者: ah007 时 间: 2006-02-28,13:32:12 链 接: http://bbs.pediy. ...
- PE文件格式”1.9版 完整译文
2019独角兽企业重金招聘Python工程师标准>>> PE文件格式系列译文之一---- [翻译]"PE文件格式"1.9版 完整译文(附注释) ========= ...
最新文章
- 人类基因组注释包org.Hs.eg.db
- jQuery对select操作
- Docker 命令自动补全必须有
- UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
- 计算智能-群智能算法-蚁群算法matlab实现
- UVA - 1378 A Funny Stone Game(博弈+sg函数)
- 图片合成gif_谈谈有哪些好用的制作GIF的方式
- 如何安装最新版本Pycharm2019
- Linux的目录结构与磁盘分区
- Docker容器时间与宿主机同步
- 常用傅里叶变换公式大全_高二数学常用导数公式大全
- JavaScript 键盘事件处理
- Android机顶盒网络地址端口连通性测试
- General VDPConfig对讲配置工具
- matlab图片纹理特征直方图,常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。...
- linux udp 端口 抓包,Linux系统-tcpdump常用抓包命令
- QQ开放平台调用示例--QQ登录,分享(JS环境)
- Python-Scrapy-抓取链家二手房信息
- oracle输出加文字,输出cx字符串
- CodeForces 19E 仙女fairy
热门文章
- 前端、后端、全栈都要学什么?薪资前景如何?
- 非线性薛定谔方程_五分钟彻底搞懂“薛定谔方程”,看后绝对不在迷惑了
- java 12_为什么在Java(高低)/ 2是错误但(高低) 1不是?
- mysql挂载数据卷_docker卷挂载技术
- mac计算机属性怎么找,删除Mac OS文件系统的附加属性
- oracle sql的正则表达式,Oracle SQL 语句中正则表达式的应用
- devtools 无法加载 sourcemap_用 babel-plugin 实现按需加载
- http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=9332 多broser
- OpenCV学习(7.10)
- 内外网同时使用解决办法