您好,
我做病毒扫描,到现在为止我做我的工作。
但你知道每个病毒或每个程序有签名,可以从其他程序中是独一无二的,并发现这个签名,我必须从执行文件读取二进制流,我已阅读文章A0} descripe PE(便携式执行文件)知道EXE文件的结构,
但我有一个问题:当我读到的EXE文件,它的速度太快太慢,像卡巴斯基反病毒
这些反virueses工作如何太快了,但我的程序是缓慢的,现在我真正的问题是:
"我怎样才能从EXE文件中读取速度快吗?"
我希望是不够清楚!
这里是我的代码:
Imports System
Imports System.IO
Imports System.Threading
Public Class Form1
Dim thread As New Thread(AddressOf RW_EXE)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = ""
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
With OpenFileDialog1
If .ShowDialog() = Windows.Forms.DialogResult.OK Then
thread.IsBackground = True
Control.CheckForIllegalCrossThreadCalls = False
thread.Start()
End If
End With
End Sub
Sub RW_EXE()
TextBox1.Text = ""
Dim FS As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)
Dim BS As New BinaryReader(FS)
Dim x As Integer = BS.BaseStream.Position
Dim y As Integer = BS.BaseStream.Length
Dim s As String = ""
While x < y
s &= BS.ReadByte.ToString("X") & " "
Label1.Text = x & " from " & y - 1
x += 1
End While
TextBox1.Text = s
FS.Close()
BS.Close()
thread.Abort()
End Sub
End Class
正如你看到的上面的代码,我创建一个FileStream,在读取模式打开文件,我创建BinaryStream,使程序创建的文件读取二进制前实现我的观点来检测病毒,通过读取二进制出了viruse签名和检查数据的基础上,看它是否是病毒或!
然后,我已宣布首次等于0阅读文件的当前位置的X,Y,则X =
Y =长度的二进制文件(EXE文件中的字符串的长度)。
然后,我已经把while循环,这样我就可以从文件的字节读,直到x等于y(指文件的长度相等的位置)。
这是很清楚的吗?
拉苏尔・艾哈迈德・