在dos下,文件头由IMAGE_DOS_HEADER结构定义,其中,可执行性文件在定义的IMAGE_DOS_HEADER STRUCT里的标志是 e_magic WORD ?
在windows下,文件头由IMAGE_NT_HEADERS结构定义,在IMAGE_NT_SIGNATURE中,标志是Signature WORD ?
参照这些,我写了一个判断是否为可执行文件的代码:
.386
.model flat, stdcall
option casemap :none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include comdlg32.inc
includelib comdlg32.lib
.data?
hWinMain dd ?
.data
szFileName db 256 dup(0)
szFilter db '选择你要打开的文件(*.*)',0,'*.*',0
szMyTitle db '选择你要打开的文件',0
szMessageTitle db '文件',0
szNoFoud db '你没有选择文件',0
szLong db '发生错误',0
szCaption db '对不起,该文件并不是有效的可执行文件!',0
szYesPe db '可执行文件查找正确',0
szTitle db '查找正确',0
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_OpenFile proc
local @stOF:OPENFILENAME
local @stES:EDITSTREAM