让游戏不再愁“钱”花--->解决“钱不够花”问题---自编游戏修改器

原创 2012年03月22日 10:15:21

让游戏不再愁“钱”花--->解决“钱不够花”问题---自编游戏修改器

刚才在整理以往的代码时候,整理到VB,还发现一个小玩具,我都快忘了,初中的时候玩红色警戒尤里的复仇,刚开始玩打最多的国家比较难,特别是机器配置越高,计算机越牛,不得不开加速齿轮来调节,感觉如果有更多的钱,就不需要加速齿轮了,于是萌生了能否搞个自己的修改器的想法。

首先,那个时候我已经知道那些money和数据都在内存中,为什么呢,因为我们使用金山游侠(免费破解版),那个时候有一个教程来讲怎么来定位钱数的内存地址,根据我的观察,钱的地址是动态的,但是,我就是想用自己编写的程序锁定钱数,那也很爽啊,因为那是自己的修改器,而且当时想一定有办法确定某个地址是钱的,例如说,让程序读某个固定的钱数(该钱数非常特别,然后自行按键激发,找到该地址,最后锁定该地址)。

界面比较丑陋(界面不重要么?!~不过对于自己用,够了,简洁明了):


因为玩红警的朋友,特别是我自己,感觉“钱不够花”,所以,一旦开始写,那么就会反复写内存,钱就产生一种花不完的状态,一花又恢复了,你不知道,那感觉多好,哈哈~~

估计很多程序员,也很希望现实中的银行卡上的钱也是这样。。。那岂不是很爽,即使在游戏中体验这种感觉也很不错呀。

这个程序的关键是:

1、定位住尤里复仇的钱的内存地址

2、实现读取和修改内存地址的值

3、使用代码按照秒数锁定内存地址的值

使用效果证明:

刚开始:钱数为4760


开始写:(再次实验使用该工具,同学的机器,我的机器上现在没有该游戏)

很久之前做的软件,那个显示钱数当时没有做好:


进入游戏:钱数已变为100


开始制造电场:可以看到钱数为98,瞬间截屏为98元,实际上只是下调了2


制造完毕,钱数仍未100


核心代码:

模块声明:

Option Explicit
Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
全局声明:
Dim LngHand As Long
Dim StrName As String * 255
Dim str As String * 2
Dim lngProcID As Long
Dim phandle As Long
Const PROCESS_ALL_ACCESS = &H10000000
LngHand = FindWindow(vbNullString, "Yuri's Revenge")
GetClassName LngHand, StrName, Len(StrName)
GetWindowThreadProcessId LngHand, lngProcID
phandle = OpenProcess(PROCESS_ALL_ACCESS, False, lngProcID)
读取内存钱数(转换有问题)
ReadProcessMemory phandle, &H568D1B8, str, 2, 0&
Label1.Caption = str
锁定钱数:-----加一个时钟组件
WriteProcessMemory phandle, &H568D1B8, Chr$(100), 2, 10&
最终的关闭:
 CloseHandle ProcessHandle


对于钱数显示,是转化有问题,这里只是回顾我当时做的东西,这东西改进也没有太大意义,只是说明如此做是可以做成修改器的,另外,对于动态地址的游戏,我们可以采用内存基址+内存偏移量 来定位钱地址,可以实现永久的使用锁定效果。


自用记账工具---钱不够花的试试

  • 2012年05月10日 16:48
  • 139KB
  • 下载

游戏修改器制作教程四:用API读写内存

上一章讲了用CE读写内存,本章讲如何自己编程实现 本文以制作东方辉针城修改器的实战讲解读写内存...

游戏修改器制作教程五:OllyDBG和其他调试工具

CE也不是专门用来调试的,本章将介绍几款调试工具,并且完善上一章的东方辉针城修改器...

游戏修改器制作教程六:hook的各种姿势

在第二章介绍了hook机制,本章要自己实现hook,实现调用某个函数时我们能截获、修改、取消这次调用...

手把手教你写游戏修改器(终极版)

关于怎样写植物大战僵尸游戏修改器的详细过程,在手把手教你写游戏修改器里面已经详细介绍了,这里就不再说了。前面那个修改器是基于控制台程序下面的,紧紧对于植物大战僵尸有用,采用上面那个教程已经将游戏修改器...

游戏修改器

简易的游戏修改器,可以修改CS钱数。#include #include #include #include #include #define KONEK 1024 #define KPAG...
  • AMDS123
  • AMDS123
  • 2014年02月08日 20:47
  • 6502

游戏修改器制作教程三:内存与Cheat Engine

计算机程序所有的变量、代码都是储存在内存里的,包括游戏里那些HP、MP、金钱等,那么只要能修改内存就能自由改变玩家的HP、金钱了(当然对于网游是没用的,这些数据都储存在服务器,客户端里的只是一个副本)...

游戏修改器制作教程七:注入DLL的各种姿势

注入的代码就是目标进程的一部分了,可以直接用指针读写目标进程内存,还可以hook目标进程的函数...

关于烧饼游戏修改器的分析

一、前言   烧饼游戏修改器是一款元老级的游戏修改器,提供了精确搜索、模糊搜索、联合搜索、数据过滤、存储搜索与读取搜索等功能。主要实现搜索手机进程的内存数据并做相应修改。   本文中分析的版本为2...
  • justFWD
  • justFWD
  • 2017年01月09日 16:46
  • 2393

游戏修改器制作教程一:键盘鼠标模拟

先从最简单的模拟操作讲起 模拟键盘鼠标有很多方法,我大体分为消息模拟、API模拟、驱动模拟 对于网页的话还可以用JavaScript模拟,虽然这不在本教程范围...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让游戏不再愁“钱”花--->解决“钱不够花”问题---自编游戏修改器
举报原因:
原因补充:

(最多只允许输入30个字)