ReadProcessMemory求助万能的吧友
vb.net吧
全部回复
仅看楼主
level 1
SQB113 楼主
是这样子的,我用VB.NET2010和VB6做了个测试,用同一个函数ReadProcessMemory读取单机游戏两个软件都没有问题,但是读取DNF人物基址(&H332D3E0)的时候,VB能正常读取,VB.NET2010无论怎么修改都是0。
2016年03月09日 05点03分 1
level 9
多半是你 API 函数声明的问题,我以前试过 VB.NET 可以读到内存数据。
---贴吧极速版 For UWP
2016年03月09日 05点03分 2
[不高兴]明明读单机游戏都好使的 Public Declare Function ReadProcessMemory Lib "kernel32.dll" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As IntPtr, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
2016年03月09日 11点03分
你这也只是声明了其中的一个 API 函数,没有打开进程的权限也是读取不了的。 ---贴吧极速版 For UWP
2016年03月09日 11点03分
level 13
检查声明是否有问题
---贴吧极速版 For UWP
2016年03月09日 05点03分 3
大神,你看呢 Public Declare Function ReadProcessMemory Lib "kernel32.dll" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As IntPtr, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
2016年03月09日 11点03分
level 9
这代码太长,明天帮你验证。
---贴吧极速版 For UWP
2016年03月09日 12点03分 5
明天游戏更新可能要到CE吧去换基址[冷]
2016年03月09日 20点03分
level 9
问题解决了没有。
---贴吧极速版 For UWP
2016年03月10日 03点03分 7
解决了,把引用库全换成 .NET4.0就OK了
2016年03月10日 09点03分
level 13
声明是错的。指针必须使用IntPtr类型。
---贴吧极速版 For UWP
2016年03月10日 04点03分 8
level 10
vb6中未声明byval的参数默认是byref传址,而VB.NET中未声明的参数描述是Byval传值。
所以你跟着VB6的API原型,所有 (xxx as xxx)的你声明为 (byref xxx as xxx)
所有(byval xxx as xxx)的你声明为一样的,就可以了
2016年03月10日 09点03分 9
[冷]我能说这个声明是我千辛万苦从VB6转型过来的嘛,第三个参数传值绝对绝对绝对不行。重要的事情说三遍
2016年03月10日 09点03分
level 1
SQB113 楼主
OK了,能读能写了,上面的代码都没错,图中那两行差不多一样的代码分别是读写声明[冷]
2016年03月10日 10点03分 10
level 9
我好像写外挂啊。。不会啊。。。
2016年03月10日 12点03分 11
level 1
这dnf还能够这样改数据?
真是日了狗了
怎么有这么傻的游戏公司啊
2016年03月20日 11点03分 12
1