- 注册时间
- 2013-2-6
- 最后登录
- 1970-1-1
该用户从未签到
|
发表于 2013-2-7 16:08:00
|
显示全部楼层
高效率的VB特征码搜索
本人的全部测试代码
本帖隐藏的内容需要回复才可以浏览
Option Explicit
Private Declare Function GetTickCount Lib kernel32 () As Long
Dim 缓冲区() As Byte, 字节数 As Long
Dim Hex字符串 As String
Private Sub 测试1_Click()
Dim 测试字符串 As String
测试字符串 = 我爱狼狼
缓冲区 = StrConv(测试字符串, vbFromUnicode)
Debug.Print StrConv(BinToHex(缓冲区), vbUpperCase)
End Sub
Public Function BinToHex(iArray() As Byte) As String
Dim iXml As New MSXML2.DOMDocument30
With iXml.createElement(Encoder)
.dataType = bin.hex
.nodeTypedValue = iArray()
BinToHex = .Text
End With
'Set iXml = Nothing
End Function
Private Sub 测试2_Click()
Dim Temp As Long
Temp = GetTickCount
Call 打开文件(E游戏类网络游戏《完美世界》国际版elementclient.exe)
Text2.Text = 特征码查找(Hex字符串, Text3.Text)
'Text2.Text = 特征码查找(Hex字符串, 6489250000000083EC18535556575068, YYYYYYYYYYYYYY)
MsgBox 字节数: & 字节数 & 字节 & vbCrLf & 耗时: & Trim(GetTickCount - Temp) 1000 & 秒, , 我爱狼狼
End Sub
Function 打开文件(ByVal 文件名 As String) As Byte()
On Error Resume Next
Dim 序号 As Integer
序号 = FreeFile '自动生成序号
Open 文件名 For Binary As #序号
字节数 = LOF(序号)
ReDim 缓冲区(1 To 字节数) As Byte
Get #序号, , 缓冲区
Close #序号
Me.Caption = BinToHex测试 By 克隆狼 - & 文件名
Hex字符串 = BinToHex(缓冲区)
'Text1.Text = Hex字符串
'Debug.Print UCase(Hex字符串)
End Function
Function 特征码查找(ByVal Hex格式字符串 As String, ByVal 特征码 As String, Optional ByVal 替换成的字符 As String = Y) As String
Dim 需要替换长度 As Long, 替换字符 As String
Dim 找到的位置 As Long
特征码 = LCase(Replace(Trim(特征码), , ))
需要替换长度 = (Len(特征码) 2) 2
替换字符 = Trim(String(需要替换长度, LCase(Mid(替换成的字符, 1, 1))))
Hex格式字符串 = LCase(Replace(Trim(Hex格式字符串), 特征码, 替换字符))
找到的位置 = InStr(Hex格式字符串, 替换字符) 2
特征码查找 = Hex(找到的位置)
'Debug.Print UCase(Hex格式字符串)
'Debug.Print UCase(特征码)
'Debug.Print UCase(替换字符)
End Function
复制代码 |
|