看流星社区

 找回密码
 注册账号
查看: 2829|回复: 1

[VB] VB 读取内存地址遇到的问题 求助

[复制链接]

该用户从未签到

发表于 2011-4-5 10:18:16 | 显示全部楼层 |阅读模式
Private Sub Command2_Click()

Text1.Text = GetMemoryI(&H2228CAC)


'MsgBox GetMemoryI(&H4A30D4)
End Sub

Private Sub Command3_Click()
'Call SetMemoryI(&H4A3194, 9999)
'Call SetMemoryI(&H4A30D4, 9999)
End Sub

Private Sub Form_Load()
If FindGame(vbNullString, "QQ游戏") Then '开始检测 如果游戏进程在运行则...
MsgBox "QQ游戏正在运行!"
Else '否则...  即如不满足If的条件的话,就无条件执行下面的代码。
MsgBox "QQ游戏没有运行!"
End If '结束检测
End Sub

Text1.Text = GetMemoryI(&H2228CAC) '就这段实在不知道怎么改!

问题就是出在这里,我想做个QQ游戏内辅辅助,想读取帐号的汉字,但读取出来,全是数字不知道怎么改

该用户从未签到

 楼主| 发表于 2011-4-5 10:18:33 | 显示全部楼层
模块代码 我给大家看下!问题到底出在哪里?
'内存处理与控制模块
Option Explicit
'查找窗口,返回符合指定的类名( ClassName )和窗口名( WindowTitle )的窗口句柄
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'获得窗口句柄,把 FindWindow 函数中得到的句柄作为参数,来获得进程标识符(ProcessId )
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
'打开内存,返回一个我们目标进程的句柄,可以用来对目标进行读写操作
'DesiredAccess 参数的值决定了句柄对进程的存取权利,使用 PROCESS_ALL_ACCESS(完全存取权限)。Inherit 应该总是 False。 ProcessId 是从 GetWindowThreadProcessId 函数中取得的。
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
'写入内存,把指定的值 Value 写入由 Address 指定的目标地址
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
'读取内存,把 Address 指定的目标地址的值存入 Value 位置的变量中
Public Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
'关闭句柄,每一个打开的句柄必须呼叫这个函数来关闭,不过一般不太会用得上。在自动监测中如果游戏被关闭可以使用该函数关闭句柄以便再次打开。
'Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'最大内存读写权限
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public hProcess As Long
Public GameHwnd As Long '游戏窗口句柄
Public PID As Long '进程ID
'Public offset As Long '偏移值,对付某些游戏的不同版本相当有效

'查找进程函数,若找到进程返回 Ture
Public Function FindGame(ClassName As String, WindowName As String) As Boolean
FindGame = False '初始化函数FindGame的值
GameHwnd = FindWindow(ClassName, WindowName) '查找游戏窗口的命名空间和窗体名称,知道其中一项即可,另外一项可以使用VbNullString代替。返回游戏窗口句柄。
If GameHwnd = 0 Then Exit Function '找不到指定窗口则退出函数
GetWindowThreadProcessId GameHwnd, PID '取得进程ID
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, PID) '以最大权力打开进程
If hProcess = 0 Then Exit Function '打开进程失败则退出函数
FindGame = True '成功设置函数FindGame的值为真
End Function

'写入单数值过程 1字节整数
Public Sub SetMemoryB(Adderss As Long, NumVal As Byte)
WriteProcessMemory hProcess, Adderss, NumVal, 1, 0
End Sub
'写入整数值过程 2字节整数
Public Sub SetMemoryI(Adderss As Long, NumVal As Integer)
WriteProcessMemory hProcess, Adderss, NumVal, 2, 0
End Sub
'写入长整形值过程 4字节整数
Public Sub SetMemoryL(Adderss As Long, NumVal As Long)
WriteProcessMemory hProcess, Adderss, NumVal, 4, 0
End Sub
'写入单精度浮点值过程 4字节浮点
Public Sub SetMemoryS(Adderss As Long, NumVal As Single)
WriteProcessMemory hProcess, Adderss, NumVal, 4, 0
End Sub
'写入双精度浮点值过程 8字节浮点
Public Sub SetMemoryD(Adderss As Long, NumVal As Double)
WriteProcessMemory hProcess, Adderss, NumVal, 8, 0
End Sub

'读取内存函数 1字节整数
Public Function GetMemoryB(Adderss As Long) As Byte
ReadProcessMemory hProcess, Adderss, GetMemoryB, 1, 0
End Function
'读取内存函数 2字节整数
Public Function GetMemoryI(Adderss As Long) As Integer
ReadProcessMemory hProcess, Adderss, GetMemoryI, 2, 0
End Function
'读取内存函数 4字节整数
Public Function GetMemoryL(Adderss As Long) As Long
ReadProcessMemory hProcess, Adderss, GetMemoryL, 4, 0
End Function
'读取内存函数 4字节浮点
Public Function GetMemoryS(Adderss As Long) As Single
ReadProcessMemory hProcess, Adderss, GetMemoryS, 4, 0
End Function
'读取内存函数 8字节浮点
Public Function GetMemoryD(Adderss As Long) As Double
ReadProcessMemory hProcess, Adderss, GetMemoryD, 8, 0
End Function
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-19 11:38

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表