VB版 植物大战僵尸修改器源码

aohan aohan 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
前几天在C#版中看到了C#版的修改器源码,现修改一个VB版的




Option Explicit

Private Declare Function ReadProcessMemory _
Lib "Kernel32.dll" (ByVal hProcess As Long, _
ByRef lpBaseAddress As Any, _
ByRef lpBuffer As Any, _
ByVal nSize As Long, _
ByRef lpNumberOfBytesWritten As Long) As Long

Private Declare Function WriteProcessMemory _
Lib "Kernel32.dll" (ByVal hProcess As Long, _
ByRef lpBaseAddress As Any, _
ByRef lpBuffer As Any, _
ByVal nSize As Long, _
ByRef lpNumberOfBytesWritten As Long) As Long

Private Declare Function OpenProcess _
Lib "Kernel32.dll" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long

Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long


Private Const baseAddress As Long = &H6A9EC0
Private Const processName As String = "PlantsVsZombies.exe"

Private Sub cmdMoneyUnlimited_Click() '金钱无限

If cmdMoneyUnlimited.Caption = "启用金钱无限" Then
If GetPid = 0 Then
MsgBox "植物大战僵尸程序还未打开", vbInformation, "提示"

Exit Sub

End If

cmdMoneyUnlimited.Caption = "停止启用金钱无限"
Timer2.Interval = 1000
Timer2.Enabled = True
Else
cmdMoneyUnlimited.Caption = "启用金钱无限"
Timer2.Enabled = False
End If

End Sub

Private Sub cmdSunUnlimited_Click() '阳光无限

If cmdSunUnlimited.Caption = "启用阳光无限" Then
If GetPid = 0 Then
MsgBox "植物大战僵尸程序还未打开", vbInformation, "提示"

Exit Sub

End If

cmdSunUnlimited.Caption = "停止启用阳光无限"
Timer1.Interval = 1000
Timer1.Enabled = True
Else
cmdSunUnlimited.Caption = "启用阳光无限"
Timer1.Enabled = False
End If

End Sub

Private Sub WriteMemoryValue(ByVal baseAddress As Long, ByVal value As Long)
Dim hProcess As Long
hProcess = OpenProcess(&H1F0FFF, 0, GetPid)
WriteProcessMemory hProcess, ByVal baseAddress, value, 4, 0&
CloseHandle hProcess

End Sub

Private Function ReadMemoryValue(ByVal Address As Long) As Long
Dim hProcess As Long
Dim buffer As Long

hProcess = OpenProcess(&H1F0FFF, 0, GetPid)
ReadProcessMemory hProcess, ByVal Address, ByVal VarPtr(buffer), 4, 0&
CloseHandle hProcess
ReadMemoryValue = buffer
End Function

'根据进程获取PID
Private Function GetPid() As Long
Dim objWMIService, objProcess, colProcess
Dim strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery("Select * from Win32_Process")

For Each objProcess In colProcess

If objProcess.Name = processName Then
GetPid = objProcess.ProcessID

Exit For

End If

Next

Set objWMIService = Nothing
Set colProcess = Nothing

End Function

Private Sub Timer1_Timer() '阳光无限
Dim Address As Long

If GetPid = 0 Then
cmdMoneyUnlimited.Caption = "启用阳光无限"
Timer1.Enabled = False
Exit Sub

End If

Address = ReadMemoryValue(baseAddress) '基地址不会改变
Address = Address + &H768 '二级地址
Address = ReadMemoryValue(Address)
Address = Address + &H5560
WriteMemoryValue Address, &H1869F '&H1869F=99999
End Sub

Private Sub Timer2_Timer() '金钱无限
Dim Address As Long
If GetPid = 0 Then
cmdMoneyUnlimited.Caption = "启用金钱无限"
Timer2.Enabled = False
Exit Sub

End If

Address = ReadMemoryValue(baseAddress) '基地址不会改变
Address = Address + &H82C '二级地址
Address = ReadMemoryValue(Address)
Address = Address + &H28
WriteMemoryValue Address, &H1869F '&H1869F=99999
End Sub


...全文
评论 21
收藏 已收藏
分享
返回顶部
aohan
API 1,488 成员 23,270 内容