GameGuardian 修改器官方教程 Part9
1.Angry Birds 2 - hack gems - group search, fill - GameGuardian
联合搜索
再加一个Fill,就找到商店价格了。
2.Angry Birds - hack coins, gems - offset calculator - GameGuardian
先Dword 10精确搜索,找到后使用偏移计算器,使用偏移 230直接找到钻石地址。
3.Card Wars Kingdom: Gems, Gold & Wishbones
1000000 Dword 精确搜索,然后使用等差数列。找到地址。
Dword 10 精确搜索找到这个出售价格。修改完直接起飞。
这个钻石值的XOR key = 3
这个值的 XOR key = 4
金币值的 XOR key = 4
接下来的教程里,如果官方视频没什么新知识。比方说以前讲过的加密值搜索,联合搜索,模糊搜索,时间跳跃,使用Fill,异或key值查找,异或转换器,执行Lua脚本,范围搜索等则直接跳过。
4.How to hack the text in UTF-8 and UTF-16 - GameGuardian
UTF8和UTF16字符串的查找。
8.32.0还有字符串搜索按钮。
最新版101.1已经合并到精确搜索里面,可以参考GG的帮助文档。
5.Example of replace pointers - GameGuardian
简单的说,就是先搜值(1234567),在找到这个地址(0x97c680e8),然后在搜存这个地址的指针地址(0x97c680dc)。指针的地址找到后进行地址替换,例如0x97c680换成0x97c680f0。
6.Pointer scan - lua script - GameGuardian
-- Version: 1.0.0
-- https://gameguardian.net/forum/files/file/30-pointer-scan/
gg.require('8.31.2')
local d = {'', '512'}
while true do
d = gg.prompt({'Address of value in hex. E.g. BAADBEEF', 'Maximal possible offset. E.g. "100" or "100h" for hex'}, d, {'number', 'number'})
if d == nil then
break
end
local address = tonumber(d[1], 16)
if address == nil then
gg.alert('Address must be hex number')
goto continue_1
end
local offset, hex = string.gsub(d[2], 'h', '')
if hex == 0 then
offset = tonumber(offset)
else
offset = tonumber(offset, 16)
end
if offset == nil then
gg.alert('Offset must be decimal or hex number')
goto continue_1
end
local search = (address - offset)..'~'..address
gg.searchNumber(search, gg.TYPE_DWORD)
break;
::continue_1::
end
这个脚本考虑了存在偏移不为0的情况。
7.Option "Add to value, do not replace" - GameGuardian
这个选项,一读就懂啊,意思就是在原有的值上做加法,而不是替换。即如果原来是5,那么勾选这个后,值将变为7。
8.How to quickly search for pointers - GameGuardian
本来的搜索流程是先搜值(1234567),再找到这个地址(0x97c730ec),然后在搜存这个地址的指针地址(0x97c730dc)。
现在新的方法是搜到值后,转到地址(常按列表项),然后再直接搜指针(常按列表项),简化了操作流程,加快了指针搜索。
9.Switching the size of the internal keyboard - GameGuardian
改变内置键盘的大小,按下面红色方框的键即可。
10.How to search / filter in the memory editor - GameGuardian
内存编辑界面有过滤器
点击后就能编辑过滤器了
11.How to find the value by its approximate change - GameGuardian
模糊搜索中也能指定范围搜索。
12.Implosion - Never Lose Hope - hack level - hide from the game - GameGuardian
在设置界面,对游戏隐藏GG,有三种方式,不太明白隐藏原理。
13.Implosion - Never Lose Hope - hack credits - restart without protection - GameGuardian
重启游戏(无保护),似乎是应对游戏自关闭的。
14.Implosion - Never Lose Hope - hack credits - disable protection - GameGuardian
禁用所有程序的保护(直到重启)。这个开关比较复杂。说明里说到此选项会给系统打补丁,打完补丁设备还可能会存在问题。慎用!
15.Example of using 'Copy as a group search' - GameGuardian
在内存编辑界面中,可以选中几个项,使用以联合搜索方式复制,然后进行搜索。
勾选完格式后,就有对应的联合搜索内容了。
16.Unrandomizer - GameGuardian
反随机数生成器。在搜索界面的菜单里能找到,主要用于反随机函数的。
17.Speedhack and time jump for Java timers on ART - GameGuardian
ART 安卓运行时
在设置界面能找到变速函数的设置。
18.How to replace only one text - GameGuardian
意思是搜索文本时,搜出来很多个。只替换一个的话,就得在搜索列表把其他的项手动移掉,这样再改善搜一次,就只能搜到一个了。GG版本8.47.0。
19.Replace text for only the first few results - GameGuardian
GG 8.48.0 支持替换文本时指定替换多少个。
最新版的文本替换教程还没看到。
20.Improve search speed - GameGuardian
提高搜索速度的一个设置项。
使用内存缓冲。
21.Ignore unknown characters - GameGuardian
在设置界面可以找到,忽略未知字符。用于提高输入时的容错率。
比方说下面的zzz就会被忽略,GG会搜索123。
22.Edit input history - GameGuardian
对输入历史进行编辑。
首先打开历史记录,然后点击 点击此处进行更改就可以编辑了。
23.Memory range with placeholders - GameGuardian
搜索值时可以指定搜索的内存地址范围。
24.Tutorial: How to make a script for GameGuardian
视频时间到了2018年2月19号。February 19,2018。第一个教写脚本的,脚本效果是实现了人物跳的更高。
由于视频里的脚本下载不到,这里说下涉及的Lua脚本语法和API如下:
gg.toast --显示快速的短消息
print -- 打印函数
条件语句
goto语句
定义标签
gg.isVisible -- 判断GG的UI是否打开
gg.setVisible -- 打开或者关闭GG的UI
gg.clearResults -- 清空搜索结果列表
gg.BUILD -- GG 编译版本号
gg.choise -- 列表选择对话框
gg.getResults -- 加载结果到结果列表
gg.editAll -- 编辑所有的搜索结果,在调用这个函数之前必须调用gg.getResults
gg.searchNumber -- 搜索数字的
25.Tutorial: How to freeze values in script - GameGuardian
如果要在手机上写代码,那么需要一款编辑器。视频使用的时ES File Explorer。最终的脚本效果是遁地。
脚本代码,冻结数值的一个例子。
gg.toast('RulesOf Survival')
print('Rules Of Survival')
--Game guardian detection
if gg.BUILD < 5511 then
print('You need latest version of GameGuardian to run this script. Minimum GG v.8.30.0.')
goto update
end
if gg.isVisible(true) then
gg.setVisible(false)
end
gg.clearResults()
goto START
::START::
menu = gg.choice({'under the ground','EXIT'},nil,'select your cheat')
if menu == 1 then goto UTG end
if menu == nil then print('error') end
goto noselect
::UTG::
gg.searchNumber('1.04719758034;-120.0;-300.0;-11.75', gg.TYPE_FLOAT)
t = gg.getResults(4)
t[4].value = '-30'
t[4].freeze = true
t[4].freezType = gg.FREEZE_NORMAL
print('Replaced: ', gg.addListItems(t))
gg.toast('first time with dragon star')
goto sdone
::sdone::
print('its the first time')
gg.toast('you can put here any kind of text that you want')
os.exit()
::noselect::
print('you not select anything')
::update::
print('update your gameguardian')
gg.toast('GG not support')