上一篇 | 下一篇

判断一个程序是否dos版本

发布: 2008-6-26 20:29 | 作者: admin | 来源: | 查看: 0次

width="84%">判断一个程序是否dos版本

将文件头读进来,判断是否Exe

offset(0) -$5a45 'MZ'

offset($80) = 'PE' WIN32 EXE

offset($100) = 'NE' WIN16 EXE

e_magic:SmallInt

buffer:array[0..255] of byte;

FStream:TFileStream;

FStream:=TFileStream.Create(Filename,fmOpenRead+fmShareDenyNone);

Try

FStream.Read(buffer,256);

if SmallInt(buffer[0]) <>$5A4D then

FIsMSDos:=False

else

FIsMSDos:=True;

nPos:=$80

if (buffer[nPos+0]='P') and (buffer[nPos+1]='E') and (buffer[nPos+2]=#0) and

(buffer[nPos+3]=#0) then

FIsPE:=True;

finally

FStream.Free;

nPos:=$100

if (buffer[nPos+0]='N') and (buffer[nPos+1]='E') then

FIsNE:=True;

字号: | 推荐给好友

评分:0

我来说两句