GameGuardian 完整教程:从入门到精通
重要声明:仅供学习和研究使用!
使用 GameGuardian 修改游戏可能违反游戏用户协议,导致你的游戏账号被封禁,请在了解风险的前提下,仅用于单机游戏或你拥有所有权的游戏,切勿用于在线多人游戏,本教程不承担任何责任。

第一部分:基础准备与核心概念
什么是 GameGuardian?
GameGuardian (简称 GG) 是一款运行在 Android 设备上的内存修改工具,它的工作原理是扫描和修改游戏运行时的数据(内存),你可以用它来:
- 修改数值:如金币、生命值、弹药、经验等。
- 查找地址:找到存储特定数值的内存位置。
- 编写脚本:使用 Lua 语言自动化复杂的修改任务。
- 搜索代码:分析游戏逻辑,查找函数调用。
环境要求
- 一台 Android 手机或平板(iOS 用户请寻找对应的 iGameGuardian 或其他工具)。
- 已 Root 的设备:这是最基本的要求,因为 GG 需要最高级别的系统权限才能读取和修改其他应用的内存空间,未 Root 设备无法使用 GG 的核心功能。
- 游戏:你想修改的游戏。
- GameGuardian APK:从官方网站或可信来源下载最新版本。注意:不要从不明来源下载,以防病毒。
核心概念:数据类型
在修改之前,你必须理解 GG 支持的数据类型,这决定了你能找到和修改什么样的数据。
| 类型 | 描述 | 示例 |
|---|---|---|
| Dword (4字节) | 最常用的类型,可以存储较大的整数(-21亿到+21亿)。 | 金币、经验值、关卡数 |
| Qword (8字节) | 更大的整数类型,用于存储非常大的数值。 | 某些游戏中的资源总量 |
| Float (单精度浮点) | 带小数的数字,精确度较低。 | 角色速度、攻击力加成 |
| Double (双精度浮点) | 带小数的数字,精确度更高。 | 同 Float,但更精确 |
| Byte (字节) | 很小的整数(0-255),通常用于表示开关、状态。 | 是否完成任务 (0=未完成, 1=已完成) |
| Word (2字节) | 小的整数(-32768到+32767)。 | 某些计数器、等级 |
| String (字符串) | 文本数据。 | 玩家名字、物品名称 |
| Array (数组) | 一系列连续的内存地址。 | 某些游戏中的背包物品列表 |
第二部分:基础操作流程
我们以一个最经典的例子“修改游戏金币”来走一遍完整的流程。
假设你当前有 1000 金币。

启动 GameGuardian 并附加到游戏
- 打开 GameGuardian。
- 在 GG 界面顶部,你会看到一个列表,显示所有正在运行的应用。
- 找到你想要修改的游戏,点击它旁边的“附加”按钮(通常是一个闪电图标或“附加”文字)。
- 成功附加后,GG 界面会显示该进程的内存信息,并且你可以开始搜索了。
第一次扫描(精确值)
- 在 GG 的搜索框中,输入你当前的金币数量:1000。
- 选择数据类型,对于金币,通常是 Dword。
- 点击搜索图标(通常是一个放大镜)。
- GG 会开始扫描,完成后会显示找到的地址数量。第一次扫描结果通常会非常多(可能有成千上万个)。
改变数值并第二次扫描
- 回到游戏中,通过正常方式让金币数量发生变化,花掉 100 金币,现在你有了 900 金币。
- 切回 GG。
- 在搜索框中,输入你变化后的数值:900。
- 点击“再次扫描”(Second Scan)或“过滤”(Filter)按钮。
- 这次 GG 会在上一次的结果中进行筛选,地址数量会急剧减少。
重复步骤三,直到找到目标地址
- 再次回到游戏,让金币数量再次变化,再花掉 100 金币,现在有 800 金币。
- 切回 GG,输入 800,点击“再次扫描”。
- 重复这个过程 3-5 次,每次地址数量都会大幅减少。
- 当地址数量减少到几个、几十个甚至一个时,就说明你离目标很近了。
验证和锁定地址
- 当地址数量很少时(比如少于 20 个),点击“列表”(List)按钮查看所有找到的地址。
- 在列表中,你会看到地址、数值、类型等信息。
- 逐个尝试:点击某个地址旁边的“修改”(Modify)或铅笔图标,将其数值改成一个你想要的数字(99999)。
- 切回游戏查看金币是否变成了你设定的数字。
- 如果某个地址修改成功,恭喜你!找到了正确的金币地址。
- 锁定:为了防止游戏在运行时将金币改回去,你可以点击地址旁边的“锁定”(Lock)图标,这样,无论游戏如何尝试,这个内存地址的值都会被 GG 强制保持为你设定的值。
第三部分:进阶搜索技巧
当精确搜索行不通时(比如数值变化太快或太复杂),就需要使用更高级的搜索方法。
范围搜索
当你知道一个数值大概在什么范围内时使用。
- 场景:你不知道具体有多少血,但看到血条快满了,估计在 80-100 之间。
- 操作:
- 在搜索框中输入第一个值:80。
- 点击搜索框旁边的下拉菜单,选择“范围”(Range)。
- 在第二个框中输入上限值:100。
- 点击搜索,GG 会搜索所有在 80 到 100 之间的数值。
值的增减/未知初始值搜索
这是最强大的搜索技巧,用于处理数值动态变化或无法直接获取初始值的情况。
- 场景:游戏里有一个“连击数”,从 0 开始不断增长,你无法得到它的初始值。
- 操作:
- 第一次搜索:不输入任何值,直接选择“未知初始值”(Unknown Value),然后点击搜索,GG 会扫描所有内存地址。
- 回到游戏,让连击数从 0 增加到 1。
- 切回 GG,选择“值的增减”(Value Increased),然后点击“再次扫描”,GG 会筛选出那些数值增加了 1 的地址。
- 回到游戏,让连击数从 1 增加到 3。
- 切回 GG,选择“值的增减”,在“增加”框中输入 2(因为 3-1=2),然后点击“再次扫描”。
- 重复几次,就能快速定位到连击数的地址。
指针扫描
当你找到的地址在重启游戏后会改变时,说明它是一个“动态地址”,指针可以帮你找到这个地址的“基地址”,从而实现永久修改。

- 场景:你找到了金币地址是
0x12345678,但下次打开游戏,地址变成了0x87654321。 - 操作:
- 使用上述方法找到当前的金币地址。
- 在地址列表中,长按该地址,选择“查找访问此地址的代码”(Find out what accesses this address)。
- 游戏会触发一些操作,比如你花金币,在弹出的代码窗口中,你会看到类似这样的汇编代码:
mov eax, [ebx+0x10]。 - 这里的
ebx就是指针。[ebx+0x10]的意思就是“先找到ebx的值,然后加上偏移量0x10,最终得到金币地址”。 ebx的值就是基地址,这个基地址通常是固定的。- 回到 GG 主界面,点击“指针扫描”(Pointer Scan)。
- 在弹出的窗口中,输入你刚才找到的基地址(
ebx的值),然后开始扫描。 - 扫描完成后,你会得到一个指针路径(
基地址 -> 偏移1 -> 偏移2 -> ... -> 金币地址)。 - 保存这个指针路径,下次重启游戏后,你只需要修改指针路径的最后一个值,就能再次锁定金币。
第四部分:脚本使用入门
手动搜索很麻烦,脚本可以自动化这个过程,GG 使用 Lua 语言。
一个简单的无限金币脚本示例
-- 定义要查找的数值
local targetValue = 99999999
-- 定义指针路径(这个路径需要你自己通过指针扫描得到)
-- 这只是一个示例,你需要替换成你自己的路径!
local pointerPath = {
base = "com.game.example", -- 游戏的包名
offsets = {0x1234, 0x5678, 0x9ABC} -- 一系列偏移量
}
-- 查找基地址
local baseAddress = gg.getValues({{address = gg.getPackageAppInfo(pointerPath.base).nativeLibraryPath, flags = gg.TYPE_DWORD}})[1].value
-- 如果找到了基地址
if baseAddress then
-- 计算最终地址
local finalAddress = baseAddress
for i, offset in ipairs(pointerPath.offsets) do
finalAddress = gg.getValues({{address = finalAddress + offset, flags = gg.TYPE_DWORD}})[1].value
if not finalAddress then break end
end
-- 如果最终地址有效,就修改并锁定它
if finalAddress then
gg.setValues({{address = finalAddress, flags = gg.TYPE_DWORD, value = targetValue}})
gg.lockAddress(finalAddress, gg.TYPE_DWORD)
gg.toast("无限金币已激活!")
else
gg.toast("计算最终地址失败!")
end
else
gg.toast("未找到基地址!")
end
如何使用脚本:
- 在 GG 主界面,向左滑动,进入“脚本”(Scripts)界面。
- 点击“新建”(New),粘贴上面的代码(并修改成你自己的指针路径)。
- 点击“保存”(Save)。
- 返回脚本列表,点击你刚创建的脚本即可运行。
第五部分:常见问题与技巧
Q1: GG 提示“请先附加到进程”怎么办?
A1: 确保你已经点击了游戏旁边的“附加”按钮,如果不行,尝试重启游戏和 GG,或者重新 Root 你的设备。
Q2: 找不到地址,或者地址太多怎么办?
A2:
- 尝试不同的数据类型:Float 或 Dword。
- 使用“值的增减”搜索:对于动态变化的数值非常有效。
- 缩小搜索范围:如果知道大概范围,用范围搜索。
- 注意数值的格式:有些游戏显示的是“100,000”,但内存里存的是“100000”,不要输入逗号。
Q3: 修改成功了,但一重启游戏就失效了?
A3: 这是动态地址的典型特征,你需要使用“指针扫描”功能来找到固定的基地址,然后修改指针。
Q4: GG 被游戏检测到了,闪退或被踢出游戏?
A4: 这叫“反作弊”。
- 尝试隐藏 GG:在 GG 设置中开启“隐藏”功能(可能需要额外模块或 Magisk 模块支持)。
- 使用虚拟空间:在 GG 设置中创建一个虚拟空间,在虚拟空间里运行游戏和修改,这是目前最主流的隐藏方法。
- 更新 GG:开发者会不断更新 GG 来绕过新的检测。
- 简化修改:修改的数值越“离谱”(比如直接把血改成 99999999),越容易被检测,尝试修改得合理一些。
Q5: 如何搜索字符串?
A5: 在搜索框中选择“String”类型,然后输入你想要查找的文本,金币”、“Gold”、“HP”等,可以用来查找物品名称、UI 文本等。
GameGuardian 是一个功能极其强大的工具,但学习曲线也比较陡峭。
- 从基础开始:熟练掌握精确搜索和值的增减搜索。
- 理解原理:明白内存地址、数据类型、指针的概念,而不仅仅是“点按钮”。
- 多加练习:拿一些单机游戏反复练习,熟悉各种搜索技巧。
- 学习脚本:脚本是解放双手的关键,花时间学习 Lua 基础语法,能让你的修改效率大大提升。
- 保持耐心:破解游戏是一个探索和试错的过程,遇到挫折很正常,多思考、多尝试。
希望这份详细的教程能帮助你顺利入门 GameGuardian 的世界!祝你玩得开心!
