03CACF28 这个是鬼武者3的HP血量地址.....
我想知道用什么途径可以得到自己想要的地址??(不用金山等软件,自己找 )另:我在程序中这么测试
Form1窗体
Option Explicit
Dim ss As String
Dim kk As StringPrivate Sub Command1_Click()
Text1.Text = VarPtr(ss)
Text2.Text = VarPtr(kk)
End SubPrivate Sub Form_Load()
ss = "nihao1234567890123456789012345678901234567890"
End Sub运行,点 command1 得到 ss的地址
假设得到的ss 地址为: &H1FE0B4
在另外一个程序里用以下代码 试图读取ss内存里的内容 Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
Dim pid As Long ' 储存进程标识符( Process Id )
Dim pHandle As Long ' 储存进程句柄
hwnd = FindWindow(vbNullString, "Form1")
' 取得进程标识符
GetWindowThreadProcessId hwnd, pid
' 使用进程标识符取得进程句柄
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
' 在内存地址中读取数据 lpADDress= &H1FE0B4 ''''前面得到的SS的地址
ReadProcessMemory pHandle, lpADDress, ByVal VarPtr(ncnr), 4, 0& ''''''VarPtr是取变量地址的
' 关闭进程句柄
CloseHandle pHandle
MsgBox ncnr可是为什么读取的不是ncnr 不是我在ss里的值 ss = "nihao1234567890123456789012345678901234567890"呢????
我是看了很多资料 这么写的,,,是不是我写的不对???
应该怎么读取 ss变量的值出来呢???
我想知道用什么途径可以得到自己想要的地址??(不用金山等软件,自己找 )另:我在程序中这么测试
Form1窗体
Option Explicit
Dim ss As String
Dim kk As StringPrivate Sub Command1_Click()
Text1.Text = VarPtr(ss)
Text2.Text = VarPtr(kk)
End SubPrivate Sub Form_Load()
ss = "nihao1234567890123456789012345678901234567890"
End Sub运行,点 command1 得到 ss的地址
假设得到的ss 地址为: &H1FE0B4
在另外一个程序里用以下代码 试图读取ss内存里的内容 Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
Dim pid As Long ' 储存进程标识符( Process Id )
Dim pHandle As Long ' 储存进程句柄
hwnd = FindWindow(vbNullString, "Form1")
' 取得进程标识符
GetWindowThreadProcessId hwnd, pid
' 使用进程标识符取得进程句柄
pHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
' 在内存地址中读取数据 lpADDress= &H1FE0B4 ''''前面得到的SS的地址
ReadProcessMemory pHandle, lpADDress, ByVal VarPtr(ncnr), 4, 0& ''''''VarPtr是取变量地址的
' 关闭进程句柄
CloseHandle pHandle
MsgBox ncnr可是为什么读取的不是ncnr 不是我在ss里的值 ss = "nihao1234567890123456789012345678901234567890"呢????
我是看了很多资料 这么写的,,,是不是我写的不对???
应该怎么读取 ss变量的值出来呢???
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, _
lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long2、 Text1.Text = VarPtr(ss) 要改为 Text1.Text = strPtr(ss)这是因为字符串的变量地址和其它变量的地址略有不同3、在ReadProcessMemory 要将缓冲区准备好
dim ncnr as string
ncnr=space(255)4、ReadProcessMemory pHandle, lpADDress, ByVal ncnr, ByVal 4, 0&
还是因为字符串的地址问题要改为上面的语句。
5、另注意,由于字符串在内在中是Unicode方式,所以长度会变为双倍,这时你要注意BYVAL 4的大小