我想写一个vb程序,可以更改其他程序内存的数值类似单机外挂,谁能帮帮我?[

孤紫痕 2010-03-14 06:08:00
大家好,我学VB时间不长,所以懂得东西不是很多,我个人喜欢一些小的单机游戏,突然有一种想法,能不能把用金山游侠等软件获取到的游戏或者其他程序的内存地址找到,然后自己写程序去改变游戏或者其他程序里那个地址的数值?我找了一些书或者资料,要不就是代码,要不就是找不到想要的效果,所以想找个大侠帮帮忙,我主要是不理解如何通过自己写的程序去访问别的程序,我看了一些什么句柄啊,或者API啊,我很迷茫!大家帮帮我啊!
...全文
186 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 元老 2010-03-14
  • 打赏
  • 举报
回复
对了,修改的时候发现界面上数据没变的。可是球没了还可以玩。
各位看官别看界面数据没变就骂我啊。
另外,拿这段代码去写修改器时,千万别写提到我,千恩万谢!!!要是提到了,我就要谢您祖上了!!!
清晨曦月 元老 2010-03-14
  • 打赏
  • 举报
回复
可以参考我CSDN博客上的。
不是广告啦,问这类问题的太多了。难道百度谷歌啥的都找不到。。。。。。。。。
http://blog.csdn.net/zcsor
上面有一些公开代码的,好像都是VB6了,VB.NET的不多,那次都给删了。


在硬盘上给你找了一个,幻幻球(也是POPCAP出品的小游戏,不错)无限球修改器,没发布过,自己玩的。

寥寥几行代码。自己看看吧,那俩API我给修改了一下,不影响使用的。

Public Class Form1
'修改方法:将加-1(&HFFFFFFFF)修改为减-1
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Byte, Optional ByVal nSize As Integer = 1, Optional ByRef lpNumberOfBytesWritten As Integer = 0) As Integer
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Int32, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Byte, Optional ByVal nSize As Integer = 1, Optional ByRef lpNumberOfBytesWritten As Integer = 0) As Integer

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
Dim pros = Process.GetProcessesByName("Peggle")
Dim code As Byte
If pros.Length > 0 Then
ReadProcessMemory(pros(0).Handle, &H4536FD, code)
If code = &H3 OrElse code = &H2B Then
If CheckBox1.Checked Then
WriteProcessMemory(pros(0).Handle, &H4536FD, &H2B)
Else
WriteProcessMemory(pros(0).Handle, &H4536FD, &H3)
End If
Else
MsgBox("发现Peggle.exe版本不符!(适用版本1.00)")
End If
Else
MsgBox("未发现Peggle.exe")
End If
End Sub
End Class



16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧