分析dos下exe文件的文件头
20201120 找到的分析dos下文件的
文件头的程序vb6源码
Private Sub Command2_Click()
Cls
Print Hex(Asc("E"))
Print Hex(Asc("r"))
Print "game.exe"
Dim b(1) As Byte
'Open "C:\j\dos\zd\runqbj.com" For Binary As 1
Open "C:\j\dos\zgcd\game.exe" For Binary As 1
Get #1, , d
Print Hex(d.bfType(0)), Hex(d.bfType(1))
Print "最后扇区的长度= " + Hex(d.a1)
Print
'Print , "文件长度除以512的余数"
Print "文件总页数(一页512BYTE)= " + Hex(d.a2)
'Print , "文件长度除以512的商"
Print d.a3, Hex(d.a3), "重定位表项数"
'Print , "重定位项的个数"
Print d.a4, Hex(d.a4), "文件头的节数(一节16BYTE)"
'Print , "文件头除以16的商 "
Print d.a5, Hex(d.a5), "程序需要最小节数"
'Print , "程序运行所需最小段数"
Print d.a6, Hex(d.a6), "允许程序最大节数"
'Print , "程序运行所需最大段数"
Print d.a7, Hex(d.a7), "初始堆栈段"
'Print , "堆栈段的段值(SS)"
Print d.a8, Hex(d.a8), "初始SP值"
'Print , "堆栈段的段值(SP)"
Print d.a9, Hex(d.a9), "检查和"
'Print , "文件校验和 "
Print d.a10, Hex(d.a10), "IP值"
'Print , "装入模块入口时的IP值 "
Print d.a11, Hex(d.a11), "初始代码段"
'Print , "装入模块代码相对段值(CS)"
Print d.a12, Hex(d.a12), "重定位表的偏移"
'Print , "重定位表,开始位置,以位移地址表示"
Print d.a13, Hex(d.a13), "覆盖数"
'Print , "覆盖号(程序驻留为零)"
Print d.a14, Hex(d.a14), "开始地址"
'Print , "覆盖号(程序驻留为零)"
Close 1
End Sub
'以下为ttt.bas的内容
'NE exe 0.1
Type Dos
bfType(0 To 1) As Byte 'EXE文件标志,4D5AH(“MZ”)
a1 As Integer '最后扇区的长度
a2 As Integer '文件总页数(一页512BYTE)
a3 As Integer '重定位表项数
a4 As Integer '文件头的节数(一节16BYTE)
a5 As Integer '程序需要最小节数
a6 As Integer '允许程序最大节数
a7 As Integer '初始堆栈段
a8 As Integer '初始SP值
a9 As Integer '检查和
a10 As Integer 'IP值
a11 As Integer '初始代码段
a12 As Integer '重定位表的偏移
a13 As Integer '覆盖数
a14 As Integer
End Type
Type Dos2
bfType(0 To 1) As Byte 'EXE文件标志,4D5AH(“MZ”)
a1 As Long '最后扇区的长度
a2 As Integer '文件总页数(一页512BYTE)
a3 As Integer '重定位表项数
a4 As Integer '文件头的节数(一节16BYTE)
a5 As Integer '程序需要最小节数
a6 As Integer '允许程序最大节数
a7 As Integer '初始堆栈段
a8 As Integer '初始SP值
a9 As Integer '检查和
a10 As Integer 'IP值
a11 As Integer '初始代码段
a12 As Integer '重定位表的偏移
a13 As Integer '覆盖数
a14 As Integer
End Type
Public d As Dos
Public d2 As Dos2