PE 中NT头 遍历

滴水逆向——PE扩大一个节 1.问题描述: 2.代码实现: #include<stdio.h> #include<stdlib.h> #include<windows.h> #define size_shellcode 0x12 #define size_surplus_sizeofheader 0x50 #define messagebox_add 0x76EE2030 ... 阅读详情
LPVOID ReadPEFile(LPSTR lpszFile)		
{		
	FILE *pFile = NULL;	
	DWORD fileSize = 0;	
	LPVOID pFileBuffer = NULL;	
		
	//打开文件	
    pFile = fopen(lpszFile, "rb");		
	if(!pFile)	
	{	
		printf(" 无法打开 EXE 文件! ");
		return NULL;
	}	
    //读取文件大小		
	fseek(pFile, 0, SEEK_END);	
    fileSize = ftell(pFile);		
    fseek(pFile, 0, SEEK_SET);		
	//分配缓冲区	
	pFileBuffer = malloc(fileSize);	
		
	if(!pFileBuffer)	
	{	
		printf(" 分配空间失败! ");
		fclose(pFile);
		return NULL;
	}	
	//将文件数据读取到缓冲区	
	size_t n = fread(pFileBuffer, fileSize, 1, pFile);	
	if(!n)	
	{	
		printf(" 读取数据失败! ");
		free(pFileBuffer);
		fclose(pFile);
		return NULL;
	}	
	//关闭文件	
	fclose(pFile);	
    return pFileBuffer;		
}		
		
VOID PrintNTHeaders()		
{		
	LPVOID pFileBuffer = NULL;	
	PIMAGE_DOS_HEADER pDosHeader = NULL;	
	PIMAGE_NT_HEADERS pNTHeader = NULL;	
	PIMAGE_FILE_HEADER pPEHeader = NULL;	
	PIMAGE_OPTIONAL_HEADER32 pOptionHeader = NULL;	
	PIMAGE_SECTION_HEADER pSectionHeader = NULL;	
		
	pFileBuffer = ReadPEFile(FILEPATH);	
	if(!pFileBuffer)	
	{	
		printf("文件读取失败\n");
		return ; 
	}	
		
	//判断是否是有效的MZ标志	
	if(*((PWORD)pFileBuffer) != IMAGE_DOS_SIGNATURE)	
	{	
		printf("不是有效的MZ标志\n");
		free(pFileBuffer);
		return ; 
	}	
	pDosHeader = (PIMAGE_DOS_HEADER)pFileBuffer;	
	//打印DOC头	
	printf("********************DOC头********************\n");	
	printf("MZ标志:%x\n",pDosHeader->e_magic);	
	printf("PE偏移:%x\n",pDosHeader->e_lfanew);	
	//判断是否是有效的PE标志	
	if(*((PDWORD)((DWORD)pFileBuffer+pDosHeader->e_lfanew)) != IMAGE_NT_SIGNATURE)	
	{	
		printf("不是有效的PE标志\n");
		free(pFileBuffer);
		return ;
	}	
	pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)pFileBuffer+pDosHeader->e_lfanew);	
	//打印NT头	
	printf("********************NT头********************\n");	
	printf("NT:%x\n",pNTHeader->Signature);	
	pPEHeader = (PIMAGE_FILE_HEADER)(((DWORD)pNTHeader) + 4);	
	printf("********************PE头********************\n");	
	printf("PE:%x\n",pPEHeader->Machine);	
	printf("节的数量:%x\n",pPEHeader->NumberOfSections);	
	printf("SizeOfOptionalHeader:%x\n",pPEHeader->SizeOfOptionalHeader);	
	//可选PE头	
	pOptionHeader = (PIMAGE_OPTIONAL_HEADER32)((DWORD)pPEHeader+IMAGE_SIZEOF_FILE_HEADER);	
	printf("********************OPTIOIN_PE头********************\n");	
	printf("OPTION_PE:%x\n",pOptionHeader->Magic);	
	//释放内存	
	free(pFileBuffer);	
}		

 

PE之代码解析资源表 7.输出根目录信息:按照固定格式打印资源目录的核心信息,包括:资源目录RVA和对应的文件偏移(左对齐28字符,十六进制大写,补8位),资源目录大小,特征值,时间戳,主版本号,次版本号,命名条目数,ID条目数,所有数值均以十六进制格式输出,保持和C++setw效果一致的对齐格式。8.递归枚举所有资源:调用EnumerateResources函数,传入资源目录的字节指针,资源目录根节点指针和初始层级,通过递归方式遍历资源目录的所有层级,枚举并解析所有资源条目(包括命名条目和ID条目)的详细信息。 阅读详情

相关推荐

通过WINNT.H定义的结构体,获取进程IAT表

利用已定义的PE文件结构体获取本进程的IAT表

enjoy5512的博客 1289

PE文件学习笔记

PE的DOC头里面最后一个字节的数字-e8表示文件开头开始过E8个字节是文件真正开始的地方–PE头.注意e8不是一定的. 1 DOC头: WORD e_magic “MZ标记”用于判断是否可执行文件 DWORD e_lfanew PE头相对于文件的偏移,用于定位PE文件 2 标准PE头: WORD Machine 程序运行的CPU型号:0x0任何处理器/0x14C 386及后续处理器 WORD NumberOfSections 文件存在的节的总数,如果要新增或者合并节,要修改这个值 DW

vurtual的博客 255

哨兵一号burst数据的下载和处理

在Sentinel - 1数据处理领域,其基本流程起始于从(ASF)下载原始压缩文件。这些文件规模颇为可观,常规大小约4GB,而部分数据的原文件甚至已攀升至7GB,对存储空间提出了严苛要求。从影像构成来看,每景Sentinel - 1影像由三个干涉宽幅(IW)模式子带组成,每个IW一般包含9个脉冲串(burst)。然而,在实际研究中,我们所关注的研究区域往往仅占据其中寥寥几个burst。

kangkangluoluo的博客 1965

滴水三期逆向基础系列(番外)-判断PE文件是否为64位

BOOL is64Bit = is64BitOS(FilePath_In); BOOL is64BitOS( IN LPSTR lpszFile ){ LPVOID pDemoBuffer = NULL; ReadPEFile(lpszFile, &pDemoBuffer); PIMAGE_DOS_HEADER idh = NULL; PIMAGE_NT_HEADERS i...

henuyl的博客 563

【Python】SUMO + Python 联合仿真平台

强化学习的核心思想是让智能体 (Agent) 通过与环境 (Environment) 的交互来学习如何做出最优决策,以最大化累积奖励 (Cumulative Reward)。在交通场景中,智能体可以是交通信号控制器、自动驾驶车辆或交通管理中心,环境则是 SUMO 模拟的交通路网,奖励则与交通效率、安全、环保等目标相关。交通系统本质上是动态的、随机的、高度复杂的系统,传统的基于规则或模型的优化方法在面对不断变化的需求和突发事件时,往往显得力不从心。强化学习的优势在于:在交通领域,强化学习已经被广泛应用于:为了

宅男很神经 1989

西门子V90 PN伺服控制核心:FB284功能块详解与实战

在工业自动化中,伺服定位控制是运动控制的基础环节,其本质是PLC通过PROFINET协议与伺服驱动器实现高速、确定性数据交互。FB284作为西门子为V90 PN定制的标准化功能块,封装了GSD映射、状态机管理与周期性PDO同步机制,将底层寄存器操作抽象为高可靠调用接口。相比MOVE指令或MC_MoveAbsolute等通用方案,FB284显著降低时序错乱风险,提升多轴同步精度与故障响应能力。它广泛应用于包装、灌装、装配等中端产线,尤其适配S7-1200/1500平台下的快速部署与现场维护。本文聚焦V90 P

weixin_42696271的博客 300

滴水逆向(作业4)

代码】滴水逆向(作业4)

weixin_52437902的博客 588

等保2.0下可信验证的动态实现与合规实践

本文深入解读等保2.0标准中的“可信验证”要求,并重点探讨其动态实现与合规实践。文章阐述了从可信根、信任链到动态验证的核心概念,拆解了不同安全等级的实施差异,并提供了从硬件选型、软件赋能到平台集成的四步落地指南。通过行业案例与避坑心得,为构建覆盖计算环境、区域边界、通信网络和安全管理中心的全链条可信防御体系提供了实用参考。

d3e4f的博客 829

通过PE结构遍历EXE所依赖的DLL

通过PE结构获取 exe执行文件所依赖的DLL列表

u012415226的博客 696

vue3:html2canvas+jspdf将页面以A4导出为PDF文件,解决内容截断+在分页处截断问题详细排查和解决教程(jsPDF + html2canvas A4分页截断、内容分页时存在截断)

html2canvas + jsPDF 解决内容截断问题,vue3 jspdf-html2canvas生成多页pdf防截断处理(包含代码),vue3解决html2canvas + jsPDF导出pdf分页内容截断问题,jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例),html页面导出pdf截断问题,html2canvas 与 jspdf 相结合生成 pdf 内容被截断的终极解决方案,提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页

✅ 精选推荐文章 2245

华为OD面试八股文嵌入式C语言基础问题及答案(一)

本文总结了C语言编程中的10个关键知识点:1.宏定义MIN的实现方法;2.嵌入式无限循环的两种写法;3.变量a的8种不同定义方式;4.static关键字的三种作用;5.const关键字的含义和使用场景;6.volatile关键字的含义及三个应用实例;7.变量存储位置(栈区、静态区、堆区);8.32位系统指针位数;9.局部与全局变量重名规则;10.引用与指针的三点区别。这些内容涵盖了宏定义、变量声明、存储类别、指针等C语言核心概念,对嵌入式开发和系统编程具有重要参考价值。

m0_50382756的博客 160

滴水逆向————PE头解析

PE头解析

clayoa的博客 1286

[Dify] 多步对话流程的实现技巧:构建连贯自然的多轮交互系统

摘要:本文探讨了AI系统中实现多轮对话的核心技术与应用方法。文章首先分析了多步对话的典型场景(如机票预订、财务报告生成)及其价值,提出了Dify平台实现该功能的三大机制:变量系统、条件控制和状态管理。随后详细介绍了顺序型、条件型和确认型三种基本对话模式,并通过"会议预约助手"案例展示了实际应用流程。文章还提供了提示词设计、变量引用等实用建议,并强调多轮对话成功的关键在于清晰的结构设计而非单纯依赖模型能力,最终实现自然流畅的人机交互体验。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1343

PE 结构 ——笔记整理

PE文件是Windows操作系统下的可执行文件,是微软在UNIX的COFF的基础上制作而成的,PE文件是指32位Windows操作系统的可执行文件(也称之为PE32) ,64位的Windows操作系统的可执行文件为 PE32+或者PE+,是PE32的一种扩展性形式. 一个PE文件的起始部分也就是PE头里边一般都存储着,这个PE文件在运行过程中所需要的资源以及空间的大小,当然还包括要加载那些DLL...

4SecNet团队专栏 239

高精地图构建:Lidar SLAM与视觉SLAM对比

高精地图构建:Lidar SLAM与视觉SLAM对比​ ,人工智能,计算机视觉,大模型,AI,本文围绕高精地图构建,对比 Lidar SLAM 与视觉 SLAM。Lidar SLAM 通过激光获取点云数据,精度高、环境适应性强但成本高、数据量大;视觉 SLAM 利用图像,成本低、信息丰富却受光照影响大、深度获取难。还解析了 SLAM、点云等关键概念,介绍了两者融合趋势、应用案例、技术挑战及未来方向,也给出常见问题解答,为相关领域应用与学习提供参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

PE文件查看学习

PE学习: xxx.h #include<Windows.h> #include"resource.h" #include<iostream> #pragma comment(lib,"Msimg32.lib") #define FILEBUFF "C:/LenovoSoftstore/Install/xxx/xxx.exe"//文件路径 #define fileBuff "C:/LenovoSoftstore/Install/xxx/副本xxx.exe"//保存文件路径 #d

weixin_43266544的博客 463

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

一个解析PE文件的小工具(可以检测一些可疑的api)

文章目录 // 003_解析导入表.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include &lt;windows.h&gt; DWORD RvaToOffset( IMAGE_NT_HEADERS* pNtHdr , DWORD dwRva ) { // 1. 找Rva所在的区段 // 2. 用Rva减去所在区段的首Rva ,再用减...

richard1230的博客 1004

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2.windbg-PE完整分析

1.PE结构常用的结构体 0:001> dt ntdll!*IMAGE* ntdll!_IMAGE_NT_HEADERS ntdll!_IMAGE_FILE_HEADER ntdll!_IMAGE_OPTIONAL_HEADER ntdll!_IMAGE_DOS_HEADER ntdll!_IMA

hgy413的专栏 3168

C语言遍历导入表导出表

通过C语言遍历PE文件的导入表和导出表

VI___ 2497

C/C++ 获取 PE 文件导出表

它首先读取PE文件的DOS头、NT头和节区头,然后计算导出表的RAW偏移,并读取导出表的相关信息,包括导出函数的名称、序号和地址。例如,您可以根据函数的名称或序号查找特定的导出函数,或根据函数的RVA计算其在文件中的偏移位置等。请注意,此示例假定输入的PE文件具有有效的导出表,并且是使用64位的NT头。请确保您的开发环境中包含了所需的头文件和库文件,并按照您的编译环境进行适当的配置和调整。请注意,此示例仅打印了导出表的部分内容,您可以根据需要进行进一步的处理和分析。

微软技术分享 8380

深入解析Go语言debug/pe库:PE文件的解析与Windows平台应用实践

摘要: 本文深入解析Go语言debug/pe库在PE文件解析中的应用。PE文件是Windows平台可执行文件标准格式,包含DOS头、NT头、区段表等核心结构。文章详细介绍了File、ImageDosHeader等关键类型,演示了文件头解析、区段遍历和导入表分析等核心功能,并提供了检测DLL依赖和提取资源等实用代码示例。针对非PE文件错误和32/64位兼容性问题,给出了具体解决方案。该库为逆向分析、恶意软件检测等场景提供了高效工具支持,适合Windows平台开发者深入学习。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 1113

深入解析Go语言debugpe库:PE文件的解析与Windows平台应用实践

Go语言debug/pe库解析PE文件实践 本文详细介绍了Go语言debug/pe库在PE文件解析中的应用。PE(可执行文件)是Windows平台的标准格式,包含DOS头、NT头、区段表和数据目录等关键结构。debug/pe库提供了File、ImageDosHeader等核心类型,支持解析文件头、遍历区段、提取导入表等功能。 文章通过代码示例演示了如何获取DOS魔数、NT头偏移、机器架构等基本信息,并展示了区段遍历、依赖检测和资源提取等实用功能。针对常见问题如非PE文件识别和32/64位兼容性问题,提供了具

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 943

可重用函数:

ULONG MapPeFile(TCHAR* szFileName) { HANDLE hFile; ULONG numR; IMAGE_DOS_HEADER dosHeader = {0}; IMAGE_NT_HEADERS ntHeader; ULONG dwImageSize; ULONG dwNumOfSections; ULONG dwHeadS

142

pefile 源码解析:理解 PE 文件解析的核心算法

pefile 是一个功能强大的 Python 模块,专门用于读取和处理 PE(Portable Executable)文件。作为 Windows 系统中可执行文件的标准格式,PE 文件结构复杂且包含丰富的信息,而 pefile 模块通过高效的算法实现了对 PE 文件的全面解析。本文将深入剖析 pefile 的核心解析算法,帮助开发者理解其工作原理和实现方式。 ## PE 类:解析的入口点 在

gitblog_00488的博客 310

C++ 获取 PE 文件导出表

// 内存偏移转文件偏移 int rva_to_raw(PIMAGE_SECTION_HEADER pSection,int nSectionNum,int nRva) { int nRet = 0; // 遍历节区...

墨鱼菜鸡 102

关于PE病毒编写的学习(四)——关于历遍磁盘的讨论

在上一章中的“前置病毒”中,由于它只是一个测试病毒,因此该病毒只是搜索病毒文件所在文件夹的exe文件。显然,为了让它具有更好传染性,能够历遍整个磁盘或某些重要文件夹的特性,是十分重要的。回到正题,让我们来改进原来的代码首先,在原来的代码中,只要结尾是“.exe”就判断为"可执行程序",这种方法在大多数情况下是正确的,但是如果程序经过压缩或加密后,某些行为会出错。因此,更加详细的文件类型检查很多时是必要的,参考代码如下:BOOL IsExeFile(HANDLE hFile){ IMAGE_DOS_HEADE

蛛丝 1934
上一篇: opecv Mat 遍历
下一篇: PE结构
__网瘾少年
博客等级 码龄11年 122粉丝 103原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值