是不是很期待今天的内容呢?上次我们已经可以在我们的小软件中显示人物的血量了,那真气值你是不是也会做了!
学习目的:
1.复习上次内容,显示人物名称
2.利用VB实现简单飞天功能
内容:
1.好,下面图片所示的内容你是否做到了,是不是人物名称不知道该怎么显示。
将上次代码中的Timer1_Timer()替换成以下内容
Private Sub Timer1_Timer()
Dim base As Long '存放人物基地址
Dim hp As Long '存储生命值
Dim hpmax As Long '存储生命最大值
Dim mp As Long '存储真气值
Dim mpmax As Long '存储真气最大值
Dim name(31) As Byte ’存放人名字符串
Dim name_temp As Long ‘存放人物值
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
ReadProcessMemory hProcess, ByVal &H8C9E54, base, 4, 0&
ReadProcessMemory hProcess, ByVal base + &H24, base, 4, 0& '得到为人物基地址,方便以后使用
ReadProcessMemory hProcess, ByVal base + &H254, hp, 4, 0& '得到生命值
ReadProcessMemory hProcess, ByVal base + &H26C, hpmax, 4, 0& '得到生命最大值
ReadProcessMemory hProcess, ByVal base + &H258, mp, 4, 0& '得到真气值
ReadProcessMemory hProcess, ByVal base + &H270, mpmax, 4, 0& '得到真气最大值
ReadProcessMemory hProcess, ByVal base + &H390, name_temp, 4, 0& ‘得到人名的值
ReadProcessMemory hProcess, ByVal name_temp, name(0), 32, 0& ‘转换字符串
CloseHandle hProcess
End If
Label1.Caption = name ‘显示人名
Label2.Caption = "生命值:" & hp & "/" & hpmax '显示生命值
Label3.Caption = "真气值:" & mp & "/" & mpmax '显示真气值
End Sub
2.今天我们学习的重点是简单修改游戏,实现飞天功能。
我想你已经在论坛中看到过飞天修改的文章,没错就是
00459199 6A 0A push 0A
这个地址,要飞天时需要把0A改01。那么你是否在CE中验证了这个功能呢?
2.1.我们开好CE和游戏,单击[查看内存]按钮
2.2.在[内存察看器]中,在(1)显示的位置上单击鼠标右健,选择[跳转到地址]命令
2.3.在对话框中输入地址:00459199
2.4.(1)显示的就是我们要找的地址,我们要把(2)的0A改为01
2.5.看结果,我们已经修改好啦!修改后:00459199 6A 0A push 01,在游戏中一直按住空格,是不是很爽(找个人少的地方,小心被...)
3.接下来,我们要在用VB实现这一功能。首先我要做一个工作,还是利用上次内容中的代码加以改进。
模块添加新的声明:
'存储进程内存的函数
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Timer1_Timer()中的内容:
Private Sub Timer1_Timer()
Dim h As Long
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
ReadProcessMemory hProcess, ByVal &H459199, h, 4, 0& ‘显示459199这个地址的值
CloseHandle hProcess
End If
Label1.Caption = h ‘输出459199地址的值
End Sub
我们得到的值是:-846525846,这是人物不能飞天时的值
4.我们再来看看人物可以飞天时的值。首先用刚才的方法用CE修改达到飞天的功能,再次运行我们的程序,这时的值显示为:-846528150
5.好了,我们只要利用VB改变00459199内的值-846525846或-846528150就可以达到改变是否飞天的功能。我们要添加一个按钮,用来改变00459199内的值。以下是按钮Command的代码:
Private Sub Command1_Click()
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
WriteProcessMemory hProcess, ByVal &H459199, -846528150, 4, 0& ‘写入内存-846528150这个值实现飞天功能。
CloseHandle hProcess
End If
End Sub
运行我们的程序,单击[飞天]按钮,00459199的值被改变了,游戏人物实现飞天功能,CE中的代码也改了,成功!
6.好了,我们实现了简单的飞天功能,但是并没有把这个功能做的更完善,比如飞天与正常的转换,因为我知道你是可以做到的。