分享
 
 
 

判断文件是否是可执行文件

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

判断文件是否是可执行文件其实可以调用API函数GetBinaryType来完成。但是我不想用这个方法,因为还有其他的方法来判断,虽然这样比较麻烦,也不一定特别的准,但是我觉得这可以让我们对文件有所了解。好,let's go!

在windows操作系统下,可执行文件的第25个字节是0x40,因此可以编写程序来读取文件的第25个字节的内容从而判断文件是否是可执行文件。 这里我编写的程序是用C语言编写的。读取文件的第25个字节我借助于缓冲型I/O系统中的fseek()函数可以完成其读取操作,它可以设置文件位置,调用方法为:int fseek(FILE *fp,long int num_bytes,int origin);其中fp是调用fopen()时所返回的文件指针,num_bytes是一个长整型量,表示由origin位置到当前位置的字节数。具体相关操作,在代码中解释。代码如下:

#include <stdio.h>

main(int argv,char *argc[])

{

FILE *fp;

char c;

/*判断是否输入了要判断的文件名*/

if(argv!=2)

{

printf("usage:%S filename\n",argc[0]);

exit(1);

}

/*判断文件是否可以正确打开*/

if((fp=fopen(agrc[1],"rb"))==NULL)

{

printf("can not file open\n");

exit(1);

}

fseek(fp,24L,1,SEEK_SET);

/*c语言的第一个字节的从0开始,因此第25个字节应该是24,在24后面加L说明是长整形,这一点十分重要*/

/*SEET_SET是一个宏名,SEEK_SET的整型量为0,意思是把文件开头当作起点*/

fread(&c,1,1,fp);

/*fread()函数把当前的1个字符(即第25个字节的字符)读到了c变量中*/

if(c==0x40)

printf("%s is exefile",argv[1]);

else

printf("%s is not exefile",argv[1]);

fclose(fp);

}

好了,代码就是这样了,在Turbo C 2.0下编译是没有问题的。但是经我测试发现一个问题。我用这个文件测试自身,发现提示它是一个不可执行文件,倒!我在测试一下其他用Turbo C 2.0编译出来的exe文件,也提示不是可执行文件。我在else后面加了一条语句,就是printf("%c",c);这样我知道了,用Turbo C 2.0编译出来的exe文件的第25个字节为0x22。但是,我觉得还需要测试一下,找了一个用VC编译的控制台的exe文件,OK!提示是可执行文件。试试98下的\windows\command\目录下的DOS命令看看,提示它们的第25个字节为0x1e,在试试ping和netstat这样的32位的网络命令,提示它们是可执行文件。这样我把最后几行的判断修改了一下。代码如下:

if(c==0x40)

printf("%s is 32bit exefile\n",argv[1]);

else if(c==0x22||c==0x1e)

printf("%s is 16bit exefile\n",argv[1]);

else

printf("%s is not exefile\n",argv[1]);

这样看起来就完美多了。

本人愚件,请过往的高手赐教!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有