doable2012 doable2012
生活不如意,一届农民打工仔。
关注数: 0 粉丝数: 75 发帖数: 384 关注贴吧数: 1
老王学VB 字节数组写法 看帖留下你的15滑稽币 把基址 B2FE7A 写值 90 90 高手勿笑 最简单的写法 @莪芯囿祢 Option Explicit Dim lphwnd As Long Dim pid As Long Dim hprocess As Long Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hprocess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function ReadProcessMemory Lib "kernel32.dll" (ByVal hprocess As Long, ByVal lpBaseAddress As Long, ByRef lpBuffer As Any, ByVal nSize As Long, ByRef lpNumberOfBytesWritten As Long) As Long Private Const PROCESS_ALL_ACCESS = &H1F0FFF Private Sub Command1_Click() hprocess = OpenProcess(PROCESS_ALL_ACCESS, False, pid) If hprocess Then Dim byts(1) As Byte byts(0) = &H90 byts(1) = &H90 WriteProcessMemory hprocess, ByVal &HB2FE7A, ByVal VarPtr(byts(0)), 2, ByVal 0 CloseHandle hprocess End If End Sub Private Sub Form_Load() lphwnd = FindWindow(vbNullString, "地下城与勇士") '查找窗口 GetWindowThreadProcessId lphwnd, pid '获取进程ID End Sub
用VB写辅助新手教程(通用版) 首先感谢CE大神的原教程 @莪芯囿祢 DNF毁我一生教程开始 代码开始 -------------------------------分割线------------------------------- '定义全局变量 Option Explicit '强制声明变量 Dim PID As Long '定义进程ID为变量 Dim lphwnd As Long '定义窗口为变量 Dim RW As Long '定义人物为变量 Dim RWZB As Long '定义人物装备为变量 Dim RWZBYS As Long '定义人物装备移速为变量 Dim RWZBSQ As Long '定义人物装备属强为变量 Dim YS1 As Long '定义增加后的移速为变量 Dim YS2 As Long '定义减少后的移速为变量 Dim SQ1 As Long '定义增加后的属强为变量 Dim SQ2 As Long '定义减少后的属强为变量 '定义几个用到的模块 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer ' Private Declare Function MessageBoxTimeout Lib "user32" Alias "MessageBoxTimeoutA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long, ByVal wlange As Long, ByVal dwTimeout As Long) As Long '定义基址常量 Private Const JW_Address As Long = &H1515C6B '捡物基址 Private Const RW_Address As Long = &H332D3E0 '人物基址 Private Const CD_Address As Long = &H149FF13 '无CD基址 '定义偏移常量 Private Const ZB_Offset As Long = &H2930 '装备偏移 Private Const BT_Offset As Long = &H7F4 '霸体偏移 Private Const WD_Offset As Long = &H1184 '无敌偏移 Private Const YS_Offset As Long = &H938 '移速偏移 Private Const SQ_Offset As Long = &HC50 '属强偏移 Private Const HP_Offset As Long = &H2F24 'HP偏移 Private Const MP_Offset As Long = &H2F28 'MP偏移 '响应按钮1 Private Sub Command1_Click() MsgBox "请务必使用管理员运行工具" & Chr(10) & "先启动游戏,后打开辅助" & Chr(10) & "切换角色后,不需要关闭辅助工具" & Chr(10) & "╔------------------------------╗" & Chr(10) & "┆键盘示意图所示: ┆" & Chr(10) & "┆波浪键开启 无敌/霸体 ┆" & Chr(10) & "┆ 技能无CD/自动捡物 ┆" & Chr(10) & "┆ ┆" & Chr(10) & "┆快捷键7减少人物移动速度 ┆" & Chr(10) & "┆快捷键8增加人物移动速度 ┆" & Chr(10) & "┆(移动速度推荐100%-200%) ┆" & Chr(10) & "┆ ┆" & Chr(10) & "┆快捷键9减少人物属性强化 ┆" & Chr(10) & "┆快捷键0增加人物属性强化 ┆" & Chr(10) & "┆(全属强增加推荐150-200) ┆" & Chr(10) & "┆ ┆" & Chr(10) & "┆= 键恢复100%的HP和MP值 ┆" & Chr(10) & "╚------------------------------╝" & Chr(10) & " 辅助仅供学习研究使用,请于下载后24 小时内删除!" & Chr(10) & " 作者不承担一切后果与责任, 必须同意此条款方可继续使用!" & Chr(10) & " 禁止外传和复制以及盗版!" End Sub '主窗口载入内容 Private Sub Form_Load() Timer1.Interval = 100 '时间控件1响应频率 Timer2.Interval = 100 '时间控件2响应频率 Timer3.Interval = 100 '时间控件3响应频率 Timer4.Interval = 100 '时间控件4响应频率 Timer5.Interval = 100 '时间控件5响应频率 Timer6.Interval = 100 '时间控件6响应频率 lphwnd = FindWindow(vbNullString, "地下城与勇士") '查找窗口 GetWindowThreadProcessId lphwnd, PID '获取进程ID If lphwnd = 0 Then '如果进程ID为空,则 MessageBoxTimeout Me.hwnd, "请先启动游戏", "警告", 0, 0, 600 '600毫秒弹出可自动关闭的无属性弹窗 Unload Me '关闭窗体 End If End Sub '获取内存模块 Private Function readmemory(ByVal address As Long) As Long Dim buffer As Long Dim biread As Long Dim binheritprocss As Long binheritprocss = OpenProcess(&H1F0FFF, False, PID) '获取操作句柄 biread = ReadProcessMemory(binheritprocss, address, VarPtr(buffer), 4, 0) '读取内存 If biread = 0 Then MessageBoxTimeout Me.hwnd, "内存获取失败", "警告", 0, 0, 300 CloseHandle binheritprocss readmemory = 0 Exit Function End If readmemory = buffer CloseHandle binheritprocss End Function '写内存模块 Private Sub writememory(ByVal address As Long, ByVal setvalue As Long) Dim binheritprocss As Long Hex binheritprocss & address binheritprocss = OpenProcess(&H1F0FFF, False, PID) '获取操作句柄 WriteProcessMemory binheritprocss, address, VarPtr(setvalue), 4, 0 '写入内存 CloseHandle binheritprocss End Sub '时间控件1触发内容 Private Sub Timer1_Timer() If GetAsyncKeyState(192) Then '如果获取用户按下了·键,则 RW = readmemory(RW_Address) '每次重新读取人物(属性) RWZB = readmemory(RW + ZB_Offset) '每次重新读取人物装备 writememory CD_Address, &H7D8025EB '把技能无CD的数值写进内存 writememory JW_Address, &H4D8B0134 '把自动捡物的数值写进内存 writememory RW + BT_Offset, &H1 '把霸体的数值写进内存 writememory RWZB + WD_Offset, &H64 '把无敌的数值写进内存 End If End Sub '时间控件2触发内容 Private Sub Timer2_Timer() If GetAsyncKeyState(55) Then '如果获取用户按下了7键,则 RW = readmemory(RW_Address) '每次重新读取人物(属性) RWZB = readmemory(RW + ZB_Offset) '每次重新读取人物装备 RWZBYS = readmemory(RWZB + YS_Offset) '每次重新读取人物装备移速 YS1 = RWZBYS + &H64 '每次重新计算增加后的移速 writememory RWZB + YS_Offset, YS1 '写内存计算后的移速数值 End If End Sub '时间控件3触发内容 Private Sub Timer3_Timer() If GetAsyncKeyState(56) Then '如果获取用户按下了8键,则 RW = readmemory(RW_Address) '每次重新读取人物(属性) RWZB = readmemory(RW + ZB_Offset) '每次重新读取人物装备 RWZBYS = readmemory(RWZB + YS_Offset) '每次重新读取人物装备移速 YS2 = RWZBYS - &H64 '每次重新计算减少后的移速 writememory RWZB + YS_Offset, YS2 '写内存计算后的移速数值 End If End Sub '时间控件4触发内容 Private Sub Timer4_Timer() If GetAsyncKeyState(57) Then '如果获取用户按下了9键,则 RW = readmemory(RW_Address) '每次重新读取人物(属性) RWZB = readmemory(RW + ZB_Offset) '每次重新读取人物装备 RWZBSQ = readmemory(RWZB + SQ_Offset) '每次重新读取人物装备属强 SQ1 = RWZBSQ + &H32 '每次重新计算增加后的属强 writememory RWZB + SQ_Offset, SQ1 '写内存计算后的属强数值 End If End Sub '时间控件5触发内容 Private Sub Timer5_Timer() If GetAsyncKeyState(48) Then '如果获取用户按下了0键,则 RW = readmemory(RW_Address) '每次重新读取人物(属性) RWZB = readmemory(RW + ZB_Offset) '每次重新读取人物装备 RWZBSQ = readmemory(RWZB + SQ_Offset) '每次重新读取人物装备属强 SQ2 = RWZBSQ - &H32 '每次重新计算减少后的属强 writememory RWZB + SQ_Offset, SQ2 '写内存计算后的属强数值 End If End Sub '时间控件6触发内容 Private Sub Timer6_Timer() If GetAsyncKeyState(187) Then '如果获取用户按下了=键,则 RW = readmemory(RW_Address) '每次重新读取人物(属性) writememory RW + HP_Offset, &H64 '写内存HP值 writememory RW + MP_Offset, &H64 '写内存MP值 End If End Sub
1 下一页