c语言格式错误pe,C语言PE文件filebuffer到imagebuffer的错误

// 代码节空白添加.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include

#include

int FileBuffers(PVOID* FileBuffer){//传入的FileBuffer

LPVOID PtempBuffer;

FILE* f = fopen("C:\\Users\\Administrator\\Desktop\\PETool 1.0.0.5.exe","rb");

if(!f)

{

printf("文件打开失败\n");

return 0;

}

fseek(f,0,SEEK_END);

int file_size = ftell(f);

fseek(f,0,SEEK_SET);

PtempBuffer = malloc(file_size);

if(!PtempBuffer){

printf("malloc分配失败");

return 0;

}

size_t n = fread(PtempBuffer,file_size,1,f);

if(!n){

printf("内存分配失败");

return 0;

}

*FileBuffer = PtempBuffer;

PtempBuffer = NULL;

fclose(f);

return file_size;

}

int FileToImage(PVOID Filebuffer,PVOID* Imagebuffer){

//PE头信息

PIMAGE_DOS_HEADER pDosHeader = NULL;

PIMAGE_NT_HEADERS pNTHeader = NULL;

PIMAGE_FILE_HEADER pPEHeader =NULL;

PIMAGE_OPTIONAL_HEADER PoptionHeader = NULL;

PIMAGE_SECTION_HEADER pSectionHeader = NULL;

PVOID pTempImagebuffer = NULL; //临时的imagebuffer

if(!Filebuffer){

printf("读到内存的Filebuffer失效\n");

return 0;

}

if(*((PWORD)Filebuffer) != IMAGE_DOS_SIGNATURE){

printf("不含MZ标志,不是EXE文件\n");

return 0;

}

pDosHeader = (PIMAGE_DOS_HEADER)Filebuffer; //强制结构体类型转换pDosHeader

pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)Filebuffer+pDosHeader->e_lfanew);//NT头开始的地方

if(*((PWORD)((DWORD)Filebuffer+pDosHeader->e_lfanew)) != IMAGE_NT_SIGNATURE){//判断PE标识

printf("不是有效的PE标识\n");

}

pPEHeader = (PIMAGE_FILE_HEADER)((DWORD)pNTHeader+4);//PE标准头开始

PoptionHeader = (PIMAGE_OPTIONAL_HEADER)((DWORD)pPEHeader+0X18);//PE可选头开始  IMAGE_SIZEOF_FILE_HEADER

pSectionHeader = (PIMAGE_SECTION_HEADER)((DWORD)PoptionHeader+pPEHeader->SizeOfOptionalHeader);//PE节表开始

//分配动态内存

pTempImagebuffer = malloc(PoptionHeader->SizeOfImage);

if(!pTempImagebuffer){

printf("pTempImagebuffer为NULL");

return 0;

}

//为临时的imagebuffer初始化

memset(pTempImagebuffer,0,PoptionHeader->SizeOfImage);

//copy头部

memcpy(pTempImagebuffer,pDosHeader,PoptionHeader->SizeOfHeaders);

//创建一个临时的PE节表

PIMAGE_SECTION_HEADER pTempSectionHeader = pSectionHeader;

for(DWORD i=0;iNumberOfSections;i++,pTempSectionHeader++){

//copy节从Filebuffer到临时的imagebuffer

//断点到这里有问题  各位师傅求解决

memcpy((void*)((DWORD)pTempImagebuffer+pTempSectionHeader->VirtualAddress)

,(void*)((DWORD)Filebuffer+pTempSectionHeader->PointerToRawData)

,pTempSectionHeader->SizeOfRawData);

}

*Imagebuffer = pTempImagebuffer;

pTempImagebuffer = NULL;

return PoptionHeader->SizeOfImage;

}

int main(int argc, char* argv[])

{

PVOID FileBuffer;

PVOID ImageBuffer;

int  x = FileBuffers(&FileBuffer);

printf("FileBuffer分配大小为:%d个字节\n",x);

int y = FileToImage(FileBuffer,&ImageBuffer);

printf("大小为%d\n",y);

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2011年影响3G手机发展四大因素

今晨闻讯,中电信明年3季度将推出iPhone。据称CDMA版本的iPhone推出,对中国电信意义重大,售价会高于WCDMA版。联通、移动、电信争夺“苹果血案”将继续上演。 截止2010年12月31日,中国3G用户不超过5000万。而工信部落实3G发展规划是…

c语言字符数组实参 形参,c语言基础(3) 数组和指针作为实参和形参的问题

字符串char a[]"abc";printf("%s",a);fgets(a,100, stdin) //安全的字符串输入函数printf("%s",a);scanf("%*[^\n]"); //两个scanf清空输入缓存scanf("%*c");int 值作为实参 指针作为形参void xchange1(int *n1,int *n2)…

Feature Engineering 特征工程 1. Baseline Model

文章目录1. 读取数据2. 处理label3. 添加特征4. 数据集切片5. 训练6. 预测learn from https://www.kaggle.com/learn/feature-engineering下一篇:Feature Engineering 特征工程 2. Categorical Encodings 1. 读取数据 预测任务:用户是否会下载APP&…

[转载] 湖北:星空团队——海燕计划

2010-7-1 来源:网易科技报道 本文网址:http://tech.163.com/10/0701/16/6AH5MA4S00094II8.html 1.项目及团队名称:星空团队——海燕计划 2.所在的赛区、所在的城市、所属高校:湖北赛区、武汉、华中科技大学 3.所处的公益领域&…

c语言静态存储和动态存储,为了便于计算机存储管理,C语言把保存所有变量的数据区,分成动态存储区和静态存储区,静态局部变量被存放在动态存储区。...

在向旅游者致欢迎词时,便于保存变量部变地陪的态度要热情,感情要真挚,内容要依情而异,语言要( )计算机存据区静山西省总的地势是()。储管成动储区储区存放储区提出到2020年要将我国旅游业建设成国民经济的战略性支柱产业和人民群众…

Feature Engineering 特征工程 2. Categorical Encodings

文章目录1. Count Encoding 计数编码2. Target Encoding 目标编码3. CatBoost Encodinglearn from https://www.kaggle.com/learn/feature-engineering上一篇:Feature Engineering 特征工程 1. Baseline Model 下一篇:Feature Engineering 特征工程 3.…

基于Silverlight+WCF的SAAS开发平台TAP(二)之核心技术

1 核心技术 1.1 元数据 元素据是一个统称,从软件的展现角度来看窗体、页签、字段、从数据存储角度,包括表、列;从逻辑处理角度,包括处理、回调等,在TAP开发平台中会详细讲解各元素的定义与应用。 1.2 函数引擎 函数引擎…

c语言函数能改变指针吗,如何修改传递给C中函数的指针?

如果要这样做,则需要传入指向指针的指针。void barPush(BarList ** list,Bar * bar){if (list NULL) return; // need to pass in the pointer to your pointer to your list.// if there is no move to add, then we are doneif (bar NULL) return;// allocate s…

Feature Engineering 特征工程 3. Feature Generation

文章目录1. 组合特征2. 过去7天的数据3. 上一个相同类型的项目的时间4. 转换数值特征learn from https://www.kaggle.com/learn/feature-engineering上一篇:Feature Engineering 特征工程 2. Categorical Encodings 下一篇:Feature Engineering 特征工程…

C# 转繁体转简体转拼音,超级文本大转换

最近项目中遇到一个需求:把员工的中文姓名根据系统配置转换成中文简体或中文繁体。 原以为需要一个很大的一个简体和繁体相对应的字符对应表之类的东西。 后来发现,VB中就包含了这样的函数Strings.StrConv(this.TextBox1.Text.Trim(), VbStrConv.Traditi…

c语言程序stm8s,经典STM8s20实用C语言编程大全

经典STM8s20实用C语言编程大全我学单片机开门三砖总是要砸的。第一砖:电源系统,这没什么好说的,只是它是stm8工作的基础总是要提一下第二砖:时钟系统,这等下再说。第三砖:复位系统,stm8只需要一…

Feature Engineering 特征工程 4. Feature Selection

文章目录1. Univariate Feature Selection 单变量特征选择2. L1 regularization L1正则learn from https://www.kaggle.com/learn/feature-engineering上一篇:Feature Engineering 特征工程 3. Feature Generation 经过各种编码和特征生成后,通常会拥有…

分销平台使用手册

分销平台使用手册 分销商和供应商流程图 基本资料维护 1、分销联系人资料:包括:联系人;联系固话(手机号码);email;阿里旺旺(建议用已认证过的账号或商城店铺的阿里旺旺子账号&#x…

非常好的C语言章节习题集带答案,非常好的C语言章节习题集带答案选编.doc

非常好的C语言章节习题集带答案选编PAGE \* MERGEFORMAT 90第1章 认识C语言二、习题(一)、是非题1.程序是指挥计算机进行各种信息处理任务的一组指令序列。A.对 B.错2.机器语言与硬件平台相关,但汇编语言和硬件平台无关。A.对 B.错3.编译型高级语言明显优于解释型高…

LeetCode 662. 二叉树最大宽度(递归)

1. 题目 给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。 每一层的宽度被定义为两个端点(该层最左和最右的非…

生物信息考研C语言,四川大学生物信息学初试经验分享

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼关于生物学(656):我所用的教材是《陈阅增普通生物学》。以及陈增阅的普生的配套练习册。今年还加了两本参考书 动物生物学和植物生物学题型:1.选择(10个,每个2分) 2.判断(10个,每个2分…

LeetCode 474. 一和零(01背包动态规划)

1. 题目 在计算机界中,我们总是追求用有限的资源获取最大的收益。 现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。 你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字…

LeetCode 452. 用最少数量的箭打破气球(贪心)

1. 题目 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。 由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。 开始坐标总是小于结束坐标。平面内最多存…

android发展的外文文献综述,android文献综述总结.docx

android文献综述总结单位代码01  学号  分类号TP315  密级  文献综述  AJAXWeb应用程序开发技术的讨论  院名称  专业名称  学生姓名  指导教师  信息工程学院计算机科学与技术高博张亚娟  XX年2月21日  AJAXWeb应用程序开发技术的讨论  摘要  传统…

如何通过对方IP地址查对方的MAC

ping 对方IP 在用arp -a 查看机器上的arp缓存,其中一个是你自己机器的还有个就是那个IP的用ipconfig /all 查自己的MAC地址查同网段其他机器的nbtstat -A ip 或者 ping过的IP地址其主机nic的mac地址都会保存到arp缓存里面用arp -a就可以查看里面的内容。&#xff0…