CE查找基址的方法,大家也都学会了。那么在辅助所需的偏移量,我们就可以写出第一个小挂了。
写个什么呢...我想那就从人物名称和血量法量信息好了。
首先需要找到武林外传的窗口句柄,我们利用如下语句可以得到:
hWndG = FindWindow(vbNullString, "Element Client")
再获取processID:
GetWindowThreadProcessId hWndG, pid
此时我们就可以利用从CE中得到的基址和偏移量来进行数据读取了,下面就是人物资料的读取源代码:
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
'下面的代码是为了获取人物状态-------------------------------------------------------------------------------------------------
ReadProcessMemory hProcess, ByVal baseaddr, h, 4, 0& '这个是存放基址的地址baseaddr=0x12F824
ReadProcessMemory hProcess, ByVal (h + &H24), eax, 4, 0&'[base+&H24]
ReadProcessMemory hProcess, ByVal (eax + &H24C), dengji, 4, 0& '获得等级[[base+&H24]+&H24C]
ReadProcessMemory hProcess, ByVal (eax + &H254), HP, 4, 0& '当前红[[base+&H24]+&H254]
ReadProcessMemory hProcess, ByVal (eax + &H26C), HPMAX, 4, 0& '最大红
ReadProcessMemory hProcess, ByVal (eax + &H258), MP, 4, 0& '当前蓝
ReadProcessMemory hProcess, ByVal (eax + &H270), MPMAX, 4, 0& '最大蓝
ReadProcessMemory hProcess, ByVal (eax + &H2D4), money, 4, 0& '获得金钱数
ReadProcessMemory hProcess, ByVal (eax + &H25C), exp, 4, 0& '获得经验值
ReadProcessMemory hProcess, ByVal (eax + &H3DC), renx, 4, 0& '获得x地址
ReadProcessMemory hProcess, ByVal (eax + &H3CC), reny, 4, 0& '获得y地址
ReadProcessMemory hProcess, ByVal (eax + &H240), manID, 4, 0& '人物ID
ReadProcessMemory hProcess, ByVal (eax + &H3A4), yundong, 1, 0& '人物运动状态:跑动=1,跳起=4,停止=0
ReadProcessMemory hProcess, ByVal (eax + &H408), zhandou, 1, 0& '人物战斗状态:战斗=1
ReadProcessMemory hProcess, ByVal (eax + &H390), namep, 4, 0&
ReadProcessMemory hProcess, ByVal namep, renwuname(0), 32, 0& '获得人物名称
'下面的代码是为了输出人物状态-------------------------------------------------------------------------------------------------
Label2.Caption = "人 物 名 称 :" & CStr(renwuname)
Label3.Caption = "当前/最大红:" & HP & "/" & HPMAX & "[" & CStr(HP * 100 / HPMAX) & "%]"
Label4.Caption = "当前/最大蓝:" & MP & "/" & MPMAX & "[" & CStr(MP * 100 / MPMAX) & "%]"
Label5.Caption = "人 物 等 级:" & dengji & "级"
Label23.Caption = "等 级 经 验:" & exp & "/" & jibieexp & "[" & CStr(exp * 100 / jibieexp) & "%]"
Label6.Caption = "人 物 坐 标 :" & "(" & CInt(renx) & "," & CInt(reny) & ")"
Label1.Caption = "人 物 金 钱 :" & Int(money / 10000) & " 金 " & Int((money Mod 10000) / 100) & " 银 " & (money Mod 100) & " 铜 "
If zhandou = 1 And yundong = 0 Then
If yundong = 0 Then
Label12.Caption = "战斗/运动状态: 战斗+静止"
ElseIf yundong = 1 Then
Label12.Caption = "战斗/运动状态: 战斗+跑动"
ElseIf yundong = 4 Then
Label12.Caption = "战斗/运动状态: 战斗+跳起"
End If
Else
If yundong = 0 Then
Label12.Caption = "战斗/运动状态: 静止"
ElseIf yundong = 1 Then
Label12.Caption = "战斗/运动状态: 跑动"
ElseIf yundong = 4 Then
Label12.Caption = "战斗/运动状态: 跳起"
End If
End If
CloseHandle hProcess
'处理结束-----------------------------------------------------------------------------------------------------------
上面的代码就是我们读取人物信息并且显示出来。偏移量大部分是从网上查出来的,如果要自己找也行。只要利用上次所讲的CE就可以查出来的。
如果只是开软件的时候显示出人物信息,就放在form_load函数内,如果要实时显示就需要开一个timer了,将此代码放入timer内即可。
不知道我讲的明白不?如果还有问题请回帖,我会再给大家讲解的。