BeneficialWeb 发表于 2022-5-31 08:51

GG修改器官方视频教程文字版 Part7

# GameGuardian 修改器官方教程 Part7

# 1. **Asphalt 8: Airborne - hack upgrades - GameGuardian**



意义不大,每辆车都有自己联合搜索的特征码。作者没告诉这些**codes**怎么来的。

# 2.**Asphalt 8: Airborne - hack tokens cars - GameGuardian**



有序联合搜索,这串代码不知道怎么来的。最后实现了解锁新车。



# 3.**Asphalt 8: Airborne - 32 racers - GameGuardian**

(https://gameguardian.net/forum/topic/14174-asphalt-8-airborne-database/)

上面是这个游戏的相关数据库。



赛车手数量。



这些都是数据库里找的。




# 4.**Asphalt 8: Airborne - hack Championship - use fill - GameGuardian**

竞标赛的作弊?



打破比赛时间。



等差数列法



# 5.**Asphalt 8: Airborne - use speedhack - GameGuardian**

使用speedhack,让游戏以0.4的速度运行。



这个视频是最模糊的。

# 6.**Asphalt 8: Airborne - hack R&D Porsche 911 GT3 RS - GameGuardian**



搜到后,转到地址,一顿修改。



# 7.**Search in the background - GameGuardian**

后台搜索,还没搜完的时候,点击隐藏即可。这是一个有三国语言的视频,中文出现在了视频里。



# 8.**GameGuardian 8.27.0 Update | New "Hide" Feature!**



还是说的隐藏功能,在搜索时间需要很长的情况下,可以进行隐藏后台搜索。

8.27.0的新功能!



相应的图标会有进度百分比显示。

# 9.**How to use GameGuardian**

介绍GG的基操:

1. 选择游戏进程
2. 搜香蕉值 Dword 0



1. 通过玩游戏,获得香蕉,进一步改善。



1. Auto类型的使用



1. 他在这里搜到后进行了修改操作,但是没生效。
2. 于是开始搞商店价格,改成负数,也能实现金币作弊



1. 介绍了模糊搜索,值如何变化,就如何改善
2. 变速工具的使用
3. 时间跳跃工具的使用
4. 基本的删除,保存,清除等操作



视频演示的是8.5.4版本的GG。

# 10.**Asphalt 8: Airborne - hack Enduro Double Down (EDD) - lua script - GameGuardian**

在GG的关于里,能看到开发者和贡献者名单信息。



这个视频首次演示了执行脚本。



2017年7月21号

```lua
-- Version: 2.0.0
-- https://gameguardian.net/forum/files/file/6-asphalt-8-airborne-hack-enduro-double-down-edd/

if gg.VERSION_INT < 82900 then
        gg.alert('You need more new version of GG for run this script. At least version 8.29.0.')
        os.exit()
end

local count = 10000

local choice = gg.choice({'v1.0.0', 'v1.1.0', 'v2.0.0'}, 3)

if choice == nil then
        os.exit()
end

-- v2.0.0
if choice == 3 then

        gg.clearResults()
        gg.searchNumber ('5;7;1;10;30;20;0;8::29', gg.TYPE_DWORD)
        gg.searchNumber ('8', gg.TYPE_DWORD)
        gg.getResults(count)
        print('In infection reduced the number of riders:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- в заражении уменьшили кол-во гонщиков
       
        gg.clearResults()
        gg.searchNumber ('5;1;10;30;20::21', gg.TYPE_DWORD)
        gg.getResults(count)
        print('Replaced the infection with classics, 0 laps and 1 racer:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- заменили заражение на классику, 0 кругов и 1 гонщик
       
        gg.clearResults()
        gg.searchNumber ('4;7;60~180;5000~20000;5000~20000;5000~20000;100;1::29', gg.TYPE_DWORD)
        gg.searchNumber ('60~20000', gg.TYPE_DWORD)
        gg.getResults(count)
        print(':', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        --
       
        gg.clearResults()
        gg.searchNumber ('4;7;0;0;0;0;0;1::29', gg.TYPE_DWORD)
        gg.searchNumber ('4', gg.TYPE_DWORD)
        gg.getResults(count)
        print('Drift turn into a classic, 0 laps and 1 racer:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- дрифт превращаем в классику, 0 кругов и 1 гонщик
       
        gg.clearResults()
        gg.searchNumber ('2;7;10~25;60~180;0;0;0;2::29', gg.TYPE_DWORD)
        gg.searchNumber ('0;2::5', gg.TYPE_DWORD)
        gg.searchNumber ('2', gg.TYPE_DWORD)
        gg.getResults(count)
        print('Number of riders in the knockdown:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков в нокдауне
       
        gg.clearResults()
        gg.searchNumber ('2;7;10~25;60~180;0;0;0;1::29', gg.TYPE_DWORD)
        gg.searchNumber ('2;10~25;60~180::13', gg.TYPE_DWORD)
        gg.getResults(count)
        print('The knockdown mode turns into a classic, 0 laps and 1 racer:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- режим нокдаун превращается в классику, 0 кругов и 1 гонщик
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;6~8::29', gg.TYPE_DWORD)
        gg.searchNumber ('0;6~8::5', gg.TYPE_DWORD)
        gg.searchNumber ('6~8', gg.TYPE_DWORD)
        gg.getResults(count)
        print('Number of knockout drivers:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков выбывания
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;1::29', gg.TYPE_DWORD)
        gg.searchNumber ('1;15;13::13', gg.TYPE_DWORD)
        gg.getResults(count)
        print('Mode knock-out turn into a classic, 0 laps and 1 racer:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- режим выбывание превращаем в классику, 0 кругов и 1 гонщик
       
        gg.clearResults()
        gg.searchNumber ('7;1;0;0;0;0;8::25', gg.TYPE_DWORD)
        gg.searchNumber ('8', gg.TYPE_DWORD)
        gg.getResults(count)
        print('In the classics reduced the number of riders:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- в классике уменьшили кол-во гонщиков
       
        gg.clearResults()
        gg.searchNumber ('7;1;0;0;0;0;1::25', gg.TYPE_DWORD)
        gg.searchNumber ('7;1::5', gg.TYPE_DWORD)
        gg.searchNumber ('1', gg.TYPE_DWORD)
        gg.getResults(count)
        print('Number of circles in the classics and the battle with AI change to 0:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- кол-во кругов в классике и битве с ИИ меняем на 0
       
        print('.')
        print('Then you can proceed to the passage of Endura. Do not choose in any case a race with the task of type - to make 2 barrels, 3 reversals, 5 knockdowns, 4 ideal nitro, 100 meters of drift - will be counted failure, you have to race with the task - finish, take 3,2,1 place, beat Race time xx: xx: xxx, no crashes, race mode any - classic, flawless, down with nitro, battle with the ghost.')
        -- Далее можно приступать к прохождению Эндуры. Не выбирать ни в коем случае гонки с заданием типа - сделать 2 бочки, 3 разворота, 5 нокдаунов, 4 идеальных нитро, 100 метров дрифта - будет засчитан провал, следует проходить гонки с заданием - финишируйте, займите 3,2,1 место, побейте время гонки хх:хх:ххх, без аварий, режим гонки любой - классика, безупречный, долой нитро, битва с призраком.
       
end
-- v2.0.0

-- v1.1.0
if choice == 2 then

        gg.clearResults()
        gg.searchNumber ('7;1;0;0;0;0;8::25', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the classics reduced the number of riders:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- в классике уменьшили кол-во гонщиков
       
        gg.clearResults()
        gg.searchNumber ('5;7;1;10;30;20;0;8::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In infection reduced the number of riders:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- в заражении уменьшили кол-во гонщиков
       
        gg.clearResults()
        gg.searchNumber ('1;10;30;20::13', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Removed the parameters of infection interfering with the rapid passage:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- убрали мешающие быстрому прохождению параметры заражения
       
        gg.clearResults()
        gg.searchNumber ('4;7;100;1::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('100', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Drift of one gate - 300 points:', gg.getResultCount(), gg.editAll('300', gg.TYPE_DWORD))
        -- дрифт одних ворот - 300 очков
       
        gg.clearResults()
        gg.searchNumber ('2;7;15;0;0;0;2::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('0;2::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('2', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Number of riders in the knockdown:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков в нокдауне
       
        gg.clearResults()
        gg.searchNumber ('2;7;15;0;0;0;1::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('2;15::9', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Knockdown mode turns into a classic:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- режим нокдаун превращается в классику
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;6::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('6', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Number of knockout drivers:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков выбывания
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;8::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Number of knockout drivers:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков выбывания
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;1::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('1;15;13::13', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('The regime of drop-out is turned into a classic:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- режим выбывание превращаем в классику
       
        gg.clearResults()
        gg.searchNumber ('7;1;0;0;0;1::25', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('7;1::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('1', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('The number of circles in all modes is changed to 0:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- кол-во кругов во всех режимах меняем на 0
       
        -- added in v1.1.0
       
        gg.clearResults()
        gg.searchNumber ('6;500::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('500', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the task "drift 500 m" the number of meters was turned to zero:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- в задании "дрифт 500 м" число метров превратили в ноль
       
        gg.clearResults()
        gg.searchNumber ('6;600::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('600', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the task "drift 600 m" the number of meters was turned to zero:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- в задании "дрифт 600 м" число метров превратили в ноль
       
        gg.clearResults()
        gg.searchNumber ('6;800::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('800', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the task "drift 800 m" the number of meters was turned to zero:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- в задании "дрифт 800 м" число метров превратили в ноль
       
        gg.clearResults()
        gg.searchNumber ('4;8000::40', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8000', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the task "dial 8000 points", i.e. Slalom, the number of points was turned to zero:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- в задании "наберите 8000 очков", т.е. слалом, число очков превратили в ноль
       
        gg.clearResults()
        gg.searchNumber ('4;9000::40', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('9000', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the task "dial 9000 points", i.e. Slalom, the number of points was turned to zero:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- в задании "наберите 9000 очков", т.е. слалом, число очков превратили в ноль
       
        gg.clearResults()
        gg.searchNumber ('4;12000::40', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('12000', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the task "dial 12000 points", i.e. Slalom, the number of points was turned to zero:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- в задании "наберите 12000 очков", т.е. слалом, число очков превратили в ноль
       
        print('.')
        print('Then you can proceed to the passage of Endura. Do not choose in any way a race with the task of type - to make 2 barrels, 3 reversals, 15 knockdowns, 4 ideal nitro, 100 meters of drift - will be counted failure, you must pass the race with the task - finish, take 3,2,1 place, beat Race time xx: xx: xxx, without accidents, race mode any - classic, infection, flawless, down with nitro, battle with the ghost. I avoided the slalom mode successfully. Spent 25 blue, when simultaneously fell two failed tasks, a classic with 2 turns and a classic with 3 barrels.')
        -- Далее можно приступать к прохождению Эндуры. Не выбирать ни в коем случае гонки с заданием типа - сделать 2 бочки, 3 разворота, 15 нокдаунов, 4 идеальных нитро, 100 метров дрифта - будет засчитан провал, следует проходить гонки с заданием - финишируйте, займите 3,2,1 место, побейте время гонки хх:хх:ххх, без аварий, режим гонки любой - классика, заражение, безупречный, долой нитро, битва с призраком. Режим слалома я избежал удачно. Потрачено 25 синих, когда одновременно попались два провальных задания, классика с 2 разворотами и классика с 3 бочками.
       
end
-- v1.1.0

-- v1.0.0
if choice == 1 then

        gg.clearResults()
        gg.searchNumber ('7;1;0;0;0;0;8::25', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In the classics reduced the number of riders:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- в классике уменьшили кол-во гонщиков
       
        gg.clearResults()
        gg.searchNumber ('5;7;1;10;30;20;0;8::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('In infection reduced the number of riders:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- в заражении уменьшили кол-во гонщиков
       
        gg.clearResults()
        gg.searchNumber ('1;10;30;20::13', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Removed the parameters of infection interfering with the rapid passage:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- убрали мешающие быстрому прохождению параметры заражения
       
        gg.clearResults()
        gg.searchNumber ('4;7;100;1::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('100', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Drift of one gate - 300 points:', gg.getResultCount(), gg.editAll('300', gg.TYPE_DWORD))
        -- дрифт одних ворот - 300 очков
       
        gg.clearResults()
        gg.searchNumber ('2;7;15;0;0;0;2::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('0;2::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('2', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Number of riders in the knockdown:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков в нокдауне
       
        gg.clearResults()
        gg.searchNumber ('2;7;15;0;0;0;1::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('2;15::9', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Knockdown mode turns into a classic:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- режим нокдаун превращается в классику
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;6::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('6', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Number of knockout drivers:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков выбывания
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;8::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('8', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('Number of knockout drivers:', gg.getResultCount(), gg.editAll('1', gg.TYPE_DWORD))
        -- кол-во гонщиков выбывания
       
        gg.clearResults()
        gg.searchNumber ('1;7;15;13;0;0;0;1::29', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('1;15;13::13', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('The regime of drop-out is turned into a classic:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- режим выбывание превращаем в классику
       
        gg.clearResults()
        gg.searchNumber ('7;1;0;0;0;1::25', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('7;1::5', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.searchNumber ('1', gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1)
        gg.getResults(count)
        print('The number of circles in all modes is changed to 0:', gg.getResultCount(), gg.editAll('0', gg.TYPE_DWORD))
        -- кол-во кругов во всех режимах меняем на 0
       
        print('.')
        print('Then you can proceed to the passage of Endura. Do not choose in any way a race with the task of type - to make 2 barrels, 3 reversals, 15 knockdowns, 4 ideal nitro, 100 meters of drift - will be counted failure, you must pass the race with the task - finish, take 3,2,1 place, beat Race time xx: xx: xxx, without accidents, race mode any - classic, infection, flawless, down with nitro, battle with the ghost. I avoided the slalom mode successfully. Spent 25 blue, when simultaneously fell two failed tasks, a classic with 2 turns and a classic with 3 barrels.')
        -- Далее можно приступать к прохождению Эндуры. Не выбирать ни в коем случае гонки с заданием типа - сделать 2 бочки, 3 разворота, 15 нокдаунов, 4 идеальных нитро, 100 метров дрифта - будет засчитан провал, следует проходить гонки с заданием - финишируйте, займите 3,2,1 место, побейте время гонки хх:хх:ххх, без аварий, режим гонки любой - классика, заражение, безупречный, долой нитро, битва с призраком. Режим слалома я избежал удачно. Потрачено 25 синих, когда одновременно попались два провальных задания, классика с 2 разворотами и классика с 3 бочками.

end
-- v1.0.0
```

# 11.**Asphalt 8: Airborne - hack nitro - lua script - GameGuardian**

执行脚本-- version 1.0.0
gg.clearResults()
gg.searchNumber('2;8;10;12;15;20;25;30:61', gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(100)
print('Replaced: ', gg.editAll('1000', gg.TYPE_FLOAT))
print('Nitro hacked!')



选择脚本文件



脚本代码

```lua
-- version 1.0.0
gg.clearResults()
gg.searchNumber('2;8;10;12;15;20;25;30:61', gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1)
gg.getResults(100)
print('Replaced: ', gg.editAll('1000', gg.TYPE_FLOAT))
print('Nitro hacked!')
```

可以看到print的作用



# 12.**XOR search guide - GameGuardian**

异或搜索,前提是先找到XOR key。然后才能用这种搜索方式。



这个例子中Key=4。

在编辑7个地址的值时,通过分号分别指定值,同时这种场景下也可以使用XOR运算



编辑单个地址的情况



# 13.**Text (string) search/replace - lua script - GameGuardian**

很复杂的一个脚本,



```lua
-- Version: 3.3.2
-- https://gameguardian.net/forum/files/file/10-string-searchreplace/

gg.require('8.57.0')

local mode = gg.choice({'__mode_string__: some text', '__hex_input__: 01 AB DE F5', '__mode_mixed__: AB "some text" E6 00'}, nil, '__select_mode__:')

if mode == nil then
        os.exit()
end       

function tbl2hex(bytes)
        local ret = ''
        for i, b in ipairs(bytes) do
                ret = ret .. string.format('%02X ', b)
        end
        return ret
end

function tbl2str(bytes)
        local ret = ''
        for i, b in ipairs(bytes) do
                ret = ret .. string.char(b)
        end
        return ret
end

function tbl2string(bytes, mode)
        if mode == 1 then
                return tbl2str(bytes)
        else
                return tbl2hex(bytes)
        end
end

function hex2bin(s)
        return string.char(tonumber(s, 16))
end

function parse(input, mode, utf16)
        local encoding = 'UTF-8'
        if utf16 then
                encoding = 'UTF-16LE'
        end
        if mode == 1 then
                input = tbl2hex(gg.bytes(input, encoding))
        else
                function str2hex(s)
                        return tbl2hex(gg.bytes(s, encoding))
                end
               
                input = input:gsub('"(.-)"', str2hex)
        end
        --print('hex', input)
        input = input:gsub(' ', ''):gsub('()', hex2bin)
        --print('bin', input)
       
        local ret = {input:byte(1, #input)}
        --print('ret', ret)
        return ret
end

local examples = {'some text', '8A 73 81 EF 00', '8A "some text" EF 00'}
local modes = {'text', 'number', 'text'}

local s = ''
local i
local utf16 = false
local new_search = false

local cfg_file = gg.getFile()..'.cfg'
local chunk = loadfile(cfg_file)
if chunk ~= nil then
        local cfg = chunk()
        s, utf16 = cfg, cfg
end

local lim = 4096

while true do
        local p = {string.format('__string_search_prompt__: __s__', 4096, examples), 'UTF-16'}
        if mode == 2 then
                p = nil
        end
        local fields = {s, utf16}
        local types = {modes, 'checkbox'}
        if gg.getResultCount() > 0 then
                p = '__new_search__'
                fields = new_search
                types = 'checkbox'
        end
        local d = gg.prompt(p, fields, types)
        if d == nil then
                break
        end
        s = d
        utf16 = d
        new_search = gg.getResultCount() > 0 and d
        local bytes = parse(s, mode, utf16)
        local len = #bytes
        if len == 0 then
                gg.alert('__string_empty__')
                goto continue_1
        end
       
        if new_search then gg.clearResults() end
        local used = len
        if used > lim then used = lim end
       
        if gg.BUILD >= 15063 then
                local search = tbl2hex(bytes)
                if used < len then search = search:sub(1, used*3) end
                gg.searchNumber('h '..search)
        else
                local search = tbl2str(bytes)
                if used < len then search = search:sub(1, used) end
                gg.internal1(search)
        end
       
        local found = gg.getResultCount();
        if found == 0 then
                print(string.format('__string_not_found__', s))
                break
        end
        local results = {}
        local count = 0
       
        local checked = 0
        while true do
                if checked >= found then
                        break
                end
                local all = gg.getResults(100000)
                local total = #all
                local start = checked
                if checked + used > total then
                        break
                end
               
                while start < total do               
                        local good = true
                        local offset = all.address - 1
                        if used < len then                       
                                local get = {}
                                for i = lim + 1, len do
                                        get = {address = offset + i, flags = gg.TYPE_BYTE, value = 0}
                                end
                                get = gg.getValues(get)
                               
                                for i = lim + 1, len do
                                        if get.value + 0 ~= bytes then
                                                good = false
                                                break
                                        end
                                end
                        end
                        if good then
                                count = count + 1
                                results = offset
                                checked = checked + used
                        else
                                local del = {}
                                for i = 1, used do
                                        del = all
                                end
                                gg.removeResults(del)
                        end
                        start = start + used
                end
        end
       
        if count == 0 then
                print(string.format('__string_not_found__', s))
                break
        end
       
        if 1 ~= gg.alert(string.format('__string_found____string_replace__', count, s), '__yes__', '__no__') then
                print(string.format('__string_found__', count, s))
                break
        end
        while true do
                local p = {string.format('__string_replace_prompt__', s, 1000), 'UTF-16', '__count_replace__'}
                if mode == 2 then
                        p = nil
                end
                local d = gg.prompt(p, {s, utf16, 100}, {modes, 'checkbox', 'number'})
                if d == nil then
                        break
                end               
                local replace = d
                utf16 = d
                d = tonumber(d)
                if d > 0 and count > d then
                        count = d
                end
                local bytes = parse(replace, mode, utf16)
                local rlen = #bytes
               
                local set = {}
                for i = 1, rlen do
                        set = {address = 0, flags = gg.TYPE_BYTE, value = bytes}
                end
               
                for j = 1, count do
                        for i = 1, rlen do
                                set.address = results + i
                        end
                        gg.setValues(set)
                end
               
                print(string.format('__string_replaced__', s, replace, count))
               
                break       
               
                ::continue_2::
        end
        break
       
        ::continue_1::
end

gg.saveVariable({s, utf16}, cfg_file)
```

这个脚本时交互式的







这个时候,视频右边评论里出现了GG修改器的官方脚本帮助文档

(https://gameguardian.net/help/simple_script.html)

# 14.**GameGuardian - Crashlands Speed**



移速更改,150,Double 似乎是默认值,装上装备后,移速增加了。

所以说这是一个精确搜索(150)和模糊搜索(增加了)结合的一个例子。

# 15.**Asphalt 8: Airborne - new maps in solo/quick race - lua script - GameGuardian**



内存区域选的Xa,脚本还是字符串搜索替换脚本。



# 16.**Asphalt 8: Airborne - new maps in quick solo race - lua script - GameGuardian**

```lua
-- version: 1.5.0
-- https://gameguardian.net/forum/files/file/14-asphalt-8-airborne-new-maps-in-quick-solo-race/

gg.require('8.52.0')

function search(s)
        local max_len = 8
       
        local bytes = {s:byte(1, max_len)}
        local search = bytes
        local len = #bytes
        for i = 2, len do
                search = search .. ';' .. bytes
        end
        search = search .. '::' .. #bytes
       
        gg.searchNumber(search, gg.TYPE_BYTE)
       
        return gg.getResultCount() / len
end

function replace(s, replace)
        local max_len = 8
        local fill = 32
       
        local found = gg.getResultCount();
       
        local len = #s
        local count = found / len
       
        local bytes = {replace:byte(1, len)}
        local rlen = #bytes
        if rlen < len then       
                for i = #replace + 1, len do
                        bytes = fill
                        replace = replace .. string.char(fill)
                end
        end
       
        local res = gg.getResults(100000)
        local j = 1
        for i = 1, #res do               
                res.value = bytes
                if j < len then
                        j = j + 1
                else
                        j = 1
                end       
        end
        gg.setValues(res)
       
        return #res / len               
end

local ranges = gg.getRanges()

local options = gg.prompt({'Laps count (empty = not change) ', 'Players count (empty = not change) '}, nil, {'number', 'number'})
if options ~= nil then
        gg.setRanges(bit32.bxor(gg.REGION_C_HEAP, gg.REGION_C_ALLOC, gg.REGION_ANONYMOUS))       
        if options ~= '' then               
                gg.clearResults()
                gg.searchNumber('1000~1999;0~5;7;1~6::21', gg.TYPE_DWORD)
                if gg.getResultCount() > 0 then gg.searchNumber('7;1~6::5', gg.TYPE_DWORD) end
                if gg.getResultCount() > 0 then gg.searchNumber('1~6', gg.TYPE_DWORD) end
                gg.getResults(100000)
                print('Laps count to '..options..':', gg.getResultCount(), gg.editAll(options, gg.TYPE_DWORD))
        end
        if options ~= '' then               
                gg.clearResults()
                gg.searchNumber('1000~1999;0~5;7;1~6;0~30;0~20;0;1~32::41', gg.TYPE_DWORD)
                if gg.getResultCount() > 0 then gg.searchNumber('7;1~6;0~30;0~20;0;1~32::25', gg.TYPE_DWORD) end
                if gg.getResultCount() > 0 then gg.searchNumber('0;1~32::5', gg.TYPE_DWORD) end
                if gg.getResultCount() > 0 then gg.searchNumber('1~32', gg.TYPE_DWORD) end
                gg.getResults(100000)
                print('Players count to '..options..':', gg.getResultCount(), gg.editAll(options, gg.TYPE_DWORD))
        end
end

local names = {'Dubai', 'Orbital Loop'}
local choice = gg.choice(names)
if choice ~= nil then
        gg.setRanges(gg.REGION_CODE_APP)

        gg.clearResults()
       
        local from = {'Def_Dub_', 'Def_Spc_'}
        for i = 1, #from do
                if i ~= choice then
                        if search(from) ~= 0 then
                                break
                        end
                end
        end
       
        if gg.getResultCount() == 0 then
                if search(from) ~= 0 then
                        print('Dubai tracks already replaced to '..names..' tracks.')
                else
                        print('Nothing found. Something going wrong.')
                end       
        else
                if replace(from, from) ~= 0 then
                        print('All ok. In quick solo race Dubai tracks replaced to '..names..' tracks.')
                else
                        print('Nothing replaced. Something going wrong.')
                end
        end
end

gg.setRanges(ranges)
gg.clearResults()
gg.getResults(0)
```

这个脚本完成了换地图的操作。



# 17.**How to search and replace HEX array (AoB scan) - GameGuardian**



针对这种十六进制数组,他使用的是有序联合搜索



# 18.**Asphalt 8: Airborne - hack events (Career, Tags, F1, Mastery, R&D, EDD, Championship) - lua script - GameGuardian**

脚本下载链接

(https://gameguardian.net/forum/files/file/16-asphalt-8-airborne-hack-events-career-tags-f1-mastery-rd-edd-championship-world-tour/)

一顿脚本直接Hack完了很多功能。



看来2017年8月份,GG已经进化到了脚本的世界。

# 19.**Bitcoin mining - hack money - GameGuardian**





Dword 2 精确值搜索,他把这个出售比特币的界面的值给搞了,然后实现了金钱作弊。

# 20.**Traffic Rider - hack cash, money - group search, fill - GameGuardian**




有序联合搜索+等差数列的一个例子



# 21.**Traffic Rider - open last bike - group search - GameGuardian**



联合搜索解锁这辆摩托需要的等级和金币


# 22.**Bitcoin mining - hack money - GameGuardian**





这回改的这里。

# 23.**How to run in PhoenixOS - GameGuardian**

“凤凰系统”(Phoenix OS),简单说就是x86桌面版的安卓。



怎么让**GG**跑在这个系统下,简单的讲就是让GG有自动运行权限。


# 24.**How to fix the area of dragging a floating icon in PhoenixOS - GameGuardian**

说的是GG在PhoenixOS中,图标拖动区域有问题。解决方案是启动GG后,先全屏一次,然后就可以了。



# 25.**Traffic Rider - hack mission params - group search - GameGuardian**


联合搜索这些数字。



然后任务参数就可以找到了。

芽衣 发表于 2022-5-31 09:54

老牌修改器了,很好用{:17_1068:}

BeneficialWeb 发表于 2022-5-31 18:41

芽衣 发表于 2022-5-31 09:54
老牌修改器了,很好用

破解大佬,感谢占楼{:1_927:}

awJYNL 发表于 2022-5-31 20:06

感谢大佬
页: [1]
查看完整版本: GG修改器官方视频教程文字版 Part7