判断文件是否为合法的PE文件和应用类型
来源:互联网 发布:2.4ghz是什么意思网络 编辑:程序博客网 时间:2024/06/06 05:58
可能很多的人都没有注意到一些事情,就是你的程序是不是合法的可运行的应用程序,例如一个文件只是把后缀改成 .exe 的形式就显示为应用程序的图标了! 你不想写一个根据后缀名就确定应用程序类型的程序吧!这样太哪个了吧!解决方法就是根据PE文件格式来解释。关于PE文件格式的资料现在网上汗牛充栋,这里我就不再解释,有兴趣的朋友可以上网查阅PE文件格式资料。我就简单的用代码去演示如何判断PE文件合法,主要就是两个地方,头为"MZ"签名,跟着DOS头部的就是"PE"签名,任何标准的PE文件都会包含这两个签名。如下这段代码所示,这是一个判断是否为合法PE文件的API。
通过文件映射实现PE文件内容的读取:
这段代码实现了对PE文件合法性的判断。
但是,我还希望对应用程序的类型作一个更加彻底的判断,如何知道应用程序是基于窗口形式的还是基于命令行形式的程序呢?
其实PE文件中早已经包含了这种程序类型的标志!这个标志包含在PE文件的头部IMAGE_NT_HEADER的结构中的IMAGE_OPTIONAL_HEADER的Sybsystem记录! 看看"winnt.h"中对Sybsystem的宏定义:
通过这些定议则可以轻易的判断应用程序是何种形式的,当Subsystem的值为IMAGE_SUBSYSTEM_WINDOWS_GUI的时候,则可以确定这个程序是基于图形界面的,当它的值为IMAGE_SUBSYSTEM_WINDOWS_CUI的时候可以确定它为命令行的程序了。 核心的代码如下:
这个详细解释我就略过了,只要得到 IMAGE_OPTIONAL_HEADER 这个结构,再根据 subsytem这个位再判断类型。呵,这篇文章就到 这结束了,当然,为了证实以上代码结果,我当然会附一上份Demo!
源码下载:http://www.vckbase.com/code/downcode.asp?id=3220
本文转自:http://www.vckbase.com/document/viewdoc/?id=1893
相关链接:PE文件结构-学习笔记
- 判断你的文件是否为合法的PE文件和应用类型
- 判断你的文件是否为合法的PE文件和应用类型
- 判断文件是否为合法的PE文件和应用类型
- 判断是否为PE文件改进版
- python判断是否为“PE文件”
- 判断是否为PE文件改进版
- 通过DOS头判断一个文件是否为PE文件
- C#判断文件是否为指定类型的文件
- 判断文件是否PE格式
- 判断所选的是否是合法的WORD文件
- 判断所选的是否是合法的WORD文件
- 判断文件是否非pe文件
- 判断是否为合法的电话号码
- 判断是否为合法的电子邮件地址
- 判断输入是否为合法的电话号码
- 判断输入是否为合法的电话号码
- 判断是否为合法的标识符hdoj2024
- 判断输入是否为合法的电话号码
- 香辣鱿鱼卷
- PsGetCurrentProcess为什么能定位活动进程链(转)
- Wap开发FAQ大全
- 雷军:为什么马云马化腾创业那么容易成功 自己却需要煎熬数年
- 用BT3破解无线网络密码的教程以及如何制作U盘版和光盘版BT3
- 判断文件是否为合法的PE文件和应用类型
- MSSQL2008安装失败的解决方案
- 新手站长个人经验谈几点SEO优化技巧
- extern
- HTTP协议详解
- 服务器禁止某IP进行访问
- 21161的内存分配方法在visualdsp 5 中的改变
- LED照明已经到来!
- 夜难眠