用VB编写游戏修改器图文教程_第1页
用VB编写游戏修改器图文教程_第2页
用VB编写游戏修改器图文教程_第3页
用VB编写游戏修改器图文教程_第4页
用VB编写游戏修改器图文教程_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用 vb 编写游戏修改器图文教程size=+3 前言这篇教程是针对不会编程的人写的,语言及技术上力求尽量简单,so 在大虾的眼里一定超简单 :)。目前我们用的动态修改器都有提供保存修改地址的功能,更甚者金山游侠2002 还有生成可执行文件修改器的功能。不过用这些修改器修改不太灵活,比如:如果你要修改的地方有几千处,难道你还一一的改?但如果自己编写的话就可以让电脑代劳0( 下面会讲到 )。另一方面把自己的修改成果以修改器的形式和别人分享,会使自己 (修改 )所付出的劳动更有意义。我写这篇文章不是要教读这篇文章的人成为vb 高手 (我也没这个能力),所以有些问题我不会讲的很清楚,对于读者来说也不必

2、过分注意一些技术细节,很多东西你照着做就行了。另外此教程只是针对游戏中地址固定的游戏,如果游戏中地址不固定(动态分配 ),那就需要用到汇编知识了,修改动态地址的游戏不在教程的讨论范围内size=+3 基础篇在讲如何编写前有必要讲一下基础的vb 语法,以使你能看懂后面写的代码:3 下面是本教程将会用到的语句:= dim 名称as 类型说明: 上面的语句是一个声明变量的语句,所谓变量简单的说就是一个 容器 ,用来存放 数值 ,而声明变量就是告诉系统建立一个 容器 。 类型 是用来告诉系统这个 容器 有多大。例如: dim eyesonline as long 建立一个名为eyesonline的容器

3、 (变量 ),并且这个变量在内存中占用4 个字节。= if 条件then 程序语句1 end if 或if 条件then 程序语句1 else 程序语句2 end if 说明:上面的语句的意思是,如果(所给的 ) 条件 成立,就执行 程序语句1(注:程序语句1可以是多个语句的组合,程序语句 2 也一样 ), 如果 条件 不成立,(else) 将执行 程序语句2 。例如if eyesonline = 253 then 注意这行的 =是比较是否相等的意思,在 条件 语句中=就是这个意思,如果相等则 条件 成立,如果不相等则 条件 不成立eyesonline = 874 而这一行及下面一行的=是将

4、874 或 233 这个数存入eyesonline这个变量中else eyesonline = 233 end if = for i=1 to x 程序语句3 next i 说明:这个语句是个循环语句,它的作用是让电脑连续x 次执行程序语句3。= eyesonline(参数 1,参数 2,参数 3,. 参数 n) 说明: 这是一个名为eyesonline的函数, 在使用时要填入相应的参数。参数间要用 , 隔开。在 vb 中有时函数不一定要带有() (准确的说是不能带),下面你会看到, 这里说一下以防你看到会奇怪,我也是才知道,呵呵= size=+3 分析篇程序:我们要用自己做的程序来修改另外一

5、个程序(进程 ),但是我们的程序怎样知道哪个程序(vgs)是我们要修改的呢。这里要用到一个工具软件:spy+ 。先起动 vgs 然后再起动spy+ 见图一:我们可以从列表中找到vgs 的进程 (上图中选中的那项) 然后在 vgs 的进程选项上单击右键,在弹出的菜单中选properties.这项见图二、三在图三中红框中的信息就是我们所需要的(复制下来 ),只要将这个信息告诉我们的程序,它就知道要修改的程序(vgs) 在哪里。游戏:本教程中要改的游戏是前线任务-决择在这个游戏中武器装备分四类,先找出一个武器的数量的地址,通过观察游戏运行的内存可以看出,游戏中四类装备分别存放在四个区域,每类装备的数

6、据基本上连续放在一块的,每个武器有两个值是我们要改的: 数量 , 可用 /不可用 (简称 y/n) , 数量 要改为 9,y/n 要改为 1 比如: 手持武器的第一个武器的 数量 起始地址是404d7ba ,y/n 的地址是 404d7bc ,第一个武器的 数量 与第二个武器的 数量 地址相差c,第一个武器的y/n 与第二个武器的y/n 也相差 c。手持武器有27 个,知道差值及武器的数量,我们就可以用一个循环让程序自动修改了:for i=1 to 27 writeprocessmemory hok, byval a1, temp1, 1, 0 a1 = a1 + &hc writep

7、rocessmemory hok, byval a2, temp2, 1, 0 a2 = a2 + &hc next i writeprocessmemory是一个往目标进程的内存地址中写入数值的函数,第一个参数是要修改的进程的句柄(也就是门牌号),第二个参数是保存有地址的变量,第三个参数保存有要填入数值的变量,第四个参数是要写入的字节数,第五个参数我也不太清楚:d 设为 0 就行了size=+3 行动首先我们要打开vb 新建一个标准工程。见图四、五点击菜单栏中的 工程 -添加模块 新建一个模块将以下代码复制到里面public declare function findwindow l

8、ib user32 alias findwindowa (byval lpclassname as string, byval lpwindowname as string) as long public declare function getwindowthreadprocessid lib user32 (byval hwndas long, lpdwprocessid as long) as long public declare function openprocess lib kernel32 (byval dwdesiredaccess as long, byval binher

9、ithandle as long, byval dwprocessid as long) as long public declare function writeprocessmemory lib kernel32 (byval hprocess as long, lpbaseaddress as any, lpbuffer as any, byval nsize as long, lpnumberofbyteswritten as long) as long public declare function closehandle lib kernel32 (byval hobject as

10、 long) as long 或者你可以用apiload这个程序生成以上代码见图六然后双击图五中的我所标出的4 将界面切换回到窗体设计界面上。我们要用到三个控件:图五中的1、2、3,分别将其拖到窗体上(图五 5)然后适当改变他们的大小以适应你的要求。我们将要用到三个控件分别是:label控件图五1、commandbutton控件图五2、 checkbox 控件图五3 label控件要用的属性有:caption commandbutton控件要用的属性有:caption checkbox控件要用的属性有:value 、caption 先选中要设置的控件,然后在图五6 的区域设置。找到相关的属性选

11、一个或填入值即可。label控件可以用来显示一些文字,如你的名字。设置caption属性commandbutton控件是个按钮,用户按下后会执行一些代码,设置caption属性可以在控件上显示一些文字,用来说明这个按钮有什么用。checkbox控件是用来作开关用的。设置caption属性,写入说明文字让使用者知道这个开关有什么作用。设置value 属性为 checked ,让程序起动时它就是开的。下图是设计好的图片图七、八:设计好界面后就可以双击(窗体上的 )commandbutton控件产生一个click 事件private sub command1_click() 自定义代码区end su

12、b 见图九:在 click事件的自定代码区写入我们的代码,当程序运行时, 用户按下按钮就会执行自定义代码区的代码。以下是我写的代码:private sub command1_click() dim temp1 as long dim temp2 as long dim hwnd as long dim hok as long dim id as long 声明变量hwnd = findwindow(cvgs double-secret-probation mutex, vbnullstring) 获得 vgs 的窗口句柄,并将句柄保存在hwnd变量中if hwnd = false then 测

13、试 hwnd变量,如果vgs 没有起动msgbox (vgs没有打开 ) 则提示用户打开程序msgbox() 这个函数的作用是弹出一个小窗口显示 中的字符exit sub 退出 click事件else getwindowthreadprocessid hwnd, id 获得 vgs 进程的 id ,并保存在id 变量中hok = openprocess(process_all_access, 0, id) 以获得编辑vgs 进程的全部权限,反openprocess函数将反回一个值并保存在hok 变量中if hok = 0 then 测试有没有获得修改权限msgbox (没有找开修改权限) ex

14、it sub else 如果获得修改权限将执行以下代码开关 1 if check1.value = checked then 如果 check1被打开,则执行下面的语句dim a1 as long, a2 as long, b1 as long, b2 as long 声明变量dim c1 as long, c2 as long, d1 as long, d2 as long 声明变量a1 = &h404d7ba 将地址 404d7ba存入变量a1,加 &h 表示 404d7ba是个十六的数值a2 = &h404d7bc b1 = &h404d9b2 b2 =

15、&h404d9b4 c1 = &h404daba c2 = &h404dabc d1 = &h404d90a d2 = &h404d90c temp1 = &h9 temp2 = &h1 dim i as integer for i = 1 to 27 writeprocessmemory hok, byval a1, temp1, 1, 0 a1 = a1 + &hc writeprocessmemory hok, byval a2, temp2, 1, 0 a2 = a2 + &hc next i for i = 1

16、to 20 writeprocessmemory hok, byval b1, temp1, 1, 0 b1 = b1 + &hc writeprocessmemory hok, byval b2, temp2, 1, 0 b2 = b2 + &hc next i for i = 1 to 25 writeprocessmemory hok, byval c1, temp1, 1, 0 c1 = c1 + &hc writeprocessmemory hok, byval c2, temp2, 1, 0 c2 = c2 + &hc next i for i =

17、1 to 12 writeprocessmemory hok, byval d1, temp1, 1, 0 d1 = d1 + &hc writeprocessmemory hok, byval d2, temp2, 1, 0 d2 = d2 + &hc next i end if 开关 2 if check2.value = checked then dim a001 as long, a002 as long, a003 as long dim b001 as long, b002 as long, b003 as long dim c001 as long, c002 a

18、s long, c003 as long a001 = &h406a514 a002 = &h406a548 a003 = &h406a57c b001 = &h406a5ac b002 = &h406a5e4 b003 = &h406a618 c001 = &h406a64c c002 = &h406a680 c003 = &h406a6b4 temp1 = &ha temp2 = &hb writeprocessmemory hok, byval a001, temp2, 1, 0 writeprocessmemory hok, byval a002, temp1, 1, 0 writeprocessmemory hok, byval a003, temp1, 1, 0 writeprocessmemory hok, byval b001, temp2, 1, 0 writeprocessmemory hok, byval b002, temp1, 1, 0 writeprocessmemory hok, byval b003, temp1, 1, 0 writeprocessmemory hok, byval c001, temp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论