返回首页

您好,
我做病毒扫描,到现在为止我做我的工作。
但你知道每个病毒或每个程序有签名,可以从其他程序中是独一无二的,并发现这个签名,我必须从执行文件读取二进制流,我已阅读文章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(指文件的长度相等的位置)。

这是很清楚的吗? 拉苏尔・艾哈迈德・

回答

评论会员: 时间:2