估计没玩过单机游戏的人现在只好去火星找了……
恐怕很多人都用过游戏修改器,也有不少不少人写过,或者正在准备写,或者正在写但是遇到了一些小问题。在这里作为一个VB爱好者提供一些参考给大家,当然我写过的游戏修改器有不少,出于兴趣也写了好几年,在我CSDN的下载频道里面有一些,也有一些没有公布的,虽然这样,我也不是什么资深专家,这篇文章提到的很多知识也是我新学的,例如说我正在学OD(有点汗颜,有一段时间没摸了)。
这篇文章早就写好了,也没有订正,错误之处请大家多多指正。由于图片比较多,写的时候用的WORD,又不能直接贴到这里,所以干脆截屏下来了。在这些图片之后,有一个简短的游戏修改器,有兴趣的可以参考一下,么有用以前封装的类,只是那天找到修改方法作为记录写了一会。看了代码也许一些正在困惑的同学们就豁然开朗了,原来就那么点玩意,非高深之学也!呵呵,不过有些游戏并不是简单的搜索搜索标记标记NOPNOP就能得到修改方法的。
以上就是一点经验了。下面贴一个游戏修改器的源码:
幻幻球无限球内存修改器:
Public Class Form1
'将加-1(&HFFFFFFFF)修改为减-1
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Byte, Optional ByVal nSize As Integer = 1, Optional ByRef lpNumberOfBytesWritten As Integer = 0) As Integer
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Int32, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Byte, Optional ByVal nSize As Integer = 1, Optional ByRef lpNumberOfBytesWritten As Integer = 0) As Integer
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Dim pros = Process.GetProcessesByName("Peggle")
Dim code As Byte
If pros.Length > 0 Then
ReadProcessMemory(pros(0).Handle, &H4536FD, code)
If code = &H3 OrElse code = &H2B Then
If CheckBox1.Checked Then
WriteProcessMemory(pros(0).Handle, &H4536FD, &H2B)
Else
WriteProcessMemory(pros(0).Handle, &H4536FD, &H3)
End If
Else
MsgBox("发现Peggle.exe版本不符!(适用版本1.00)")
End If
Else
MsgBox("未发现Peggle.exe")
End If
End Sub
End Class