常乐居

常乐居

简单的游戏修改 魔法门之英雄无敌3末日之刃


 Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As IntegerByVal lpAddress As IntegerByVal lpBuffer As Byte(), ByVal nSize As IntegerByVal lpNumberOfBytesWritten As IntegerAs Integer

    
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
Dim Ja As System.Diagnostics.Process() = Process.GetProcessesByName("Heroes3")
        
If Ja.Length > 0 Then
            
Dim A() As Byte = returnHexToByte(14)
            WriteProcessMemory(Ja(
0).Handle, &H16D0BEC, A, A.Length, 0)
        
End If
        
Me.Close()
    
End Sub


    
Public Function returnHexToByte(ByVal setNumer As IntegerByVal nSize As IntegerAs Byte()
        
Try
            
Dim ReturnByte() As Byte
            
ReDim ReturnByte(nSize)
            
'转换十六进制并如为奇数在左边补上0
            Dim HexNuner As String = Hex(setNumer)
            
If HexNuner.Length Mod 2 = 1 Then
                HexNuner 
= HexNuner.PadLeft(HexNuner.Length + 1"0")
            
End If

            
Dim A As Integer = HexNuner.Length / 2
            
Dim B As Integer = 0
            
Do While A > 0
                ReturnByte(B) 
= "&H" & Mid(HexNuner, A * 2 - 12)
                A 
-= 1
                B 
+= 1
                
If B > nSize Then
                    
Return Nothing '错误的字节 数太大了超出了字节范围
                End If
            
Loop
            
Return ReturnByte
        
Catch ex As Exception
            
MsgBox(ex.Message)
            
Return Nothing
        
End Try      
    

 

posted on 2009-03-17 11:52  常乐  阅读(603)  评论(0编辑  收藏  举报

导航