吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3745|回复: 3
收起左侧

[Android 原创] GG修改器官方视频教程文字版 Part7

[复制链接]
BeneficialWeb 发表于 2022-5-31 08:51

GameGuardian 修改器官方教程 Part7

1. Asphalt 8: Airborne - hack upgrades - GameGuardian

Untitled.png

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

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

Untitled 1.png

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

Untitled 2.png

3.Asphalt 8: Airborne - 32 racers - GameGuardian

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

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

Untitled 3.png

赛车手数量。

Untitled 4.png

这些都是数据库里找的。

Untitled 5.png

Untitled 6.png

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

竞标赛的作弊?

Untitled 7.png

打破比赛时间。

Untitled 8.png

等差数列法

Untitled 9.png

5.Asphalt 8: Airborne - use speedhack - GameGuardian

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

Untitled 10.png

这个视频是最模糊的。

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

Untitled 11.png

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

Untitled 12.png

7.Search in the background - GameGuardian

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

Untitled 13.png

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

Untitled 14.png

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

8.27.0的新功能!

Untitled 15.png

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

9.How to use GameGuardian

介绍GG的基操:

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

Untitled 16.png

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

Untitled 17.png

  1. Auto类型的使用

Untitled 18.png

  1. 他在这里搜到后进行了修改操作,但是没生效。

  2. 于是开始搞商店价格,改成负数,也能实现金币作弊

  3. 介绍了模糊搜索,值如何变化,就如何改善

  4. 变速工具的使用

  5. 时间跳跃工具的使用

  6. 基本的删除,保存,清除等操作

Untitled 20.png

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

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

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

Untitled 21.png

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

Untitled 22.png

2017年7月21号

-- 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!')

Untitled 23.png

选择脚本文件

Untitled 24.png

脚本代码

-- 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的作用

Untitled 25.png

12.XOR search guide - GameGuardian

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

Untitled 26.png

这个例子中Key=4。

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

Untitled 27.png

编辑单个地址的情况

Untitled 28.png

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

很复杂的一个脚本,

Untitled 29.png

-- 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('([A-F0-9a-f][A-F0-9a-f])', 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[1], cfg[2]
end

local lim = 4096

while true do
    local p = {string.format('__string_search_prompt__: __s__', 4096, examples[mode]), 'UTF-16'}
    if mode == 2 then
        p[2] = nil
    end
    local fields = {s, utf16}
    local types = {modes[mode], 'checkbox'}
    if gg.getResultCount() > 0 then
        p[3] = '__new_search__'
        fields[3] = new_search
        types[3] = 'checkbox'
    end
    local d = gg.prompt(p, fields, types)
    if d == nil then
        break
    end
    s = d[1]
    utf16 = d[2]
    new_search = gg.getResultCount() > 0 and d[3]
    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[1 + start].address - 1
            if used < len then           
                local get = {}
                for i = lim + 1, len do
                    get[i - lim] = {address = offset + i, flags = gg.TYPE_BYTE, value = 0}
                end
                get = gg.getValues(get)

                for i = lim + 1, len do
                    if get[i - lim].value + 0 ~= bytes[i] then
                        good = false
                        break
                    end
                end
            end
            if good then
                count = count + 1
                results[count] = offset
                checked = checked + used
            else
                local del = {}
                for i = 1, used do
                    del[i] = all[i + start]
                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[2] = nil
        end
        local d = gg.prompt(p, {s, utf16, 100}, {modes[mode], 'checkbox', 'number'})
        if d == nil then
            break
        end     
        local replace = d[1]
        utf16 = d[2]
        d[3] = tonumber(d[3])
        if d[3] > 0 and count > d[3] then
            count = d[3]
        end
        local bytes = parse(replace, mode, utf16)
        local rlen = #bytes

        local set = {}
        for i = 1, rlen do
            set[i] = {address = 0, flags = gg.TYPE_BYTE, value = bytes[i]}
        end

        for j = 1, count do
            for i = 1, rlen do
                set[i].address = results[j] + 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)

这个脚本时交互式的

Untitled 30.png

Untitled 31.png

Untitled 32.png

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

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

14.GameGuardian - Crashlands Speed

Untitled 33.png

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

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

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

Untitled 34.png

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

Untitled 35.png

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

-- 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[1]
    local len = #bytes
    for i = 2, len do
        search = search .. ';' .. bytes[i]
    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[i] = fill
            replace = replace .. string.char(fill)
        end
    end

    local res = gg.getResults(100000)
    local j = 1
    for i = 1, #res do      
        res[i].value = bytes[j]
        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) [1;6]', 'Players count (empty = not change) [1;32]'}, nil, {'number', 'number'})
if options ~= nil then
    gg.setRanges(bit32.bxor(gg.REGION_C_HEAP, gg.REGION_C_ALLOC, gg.REGION_ANONYMOUS))  
    if options[1] ~= '' 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[1]..':', gg.getResultCount(), gg.editAll(options[1], gg.TYPE_DWORD))
    end
    if options[2] ~= '' 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[2]..':', gg.getResultCount(), gg.editAll(options[2], 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[i]) ~= 0 then
                break
            end
        end
    end

    if gg.getResultCount() == 0 then
        if search(from[choice]) ~= 0 then
            print('Dubai tracks already replaced to '..names[choice]..' tracks.')
        else 
            print('Nothing found. Something going wrong.')
        end 
    else 
        if replace(from[1], from[choice]) ~= 0 then
            print('All ok. In quick solo race Dubai tracks replaced to '..names[choice]..' tracks.')
        else
            print('Nothing replaced. Something going wrong.')
        end
    end
end

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

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

Untitled 36.png

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

Untitled 37.png

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

Untitled 38.png

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完了很多功能。

Untitled 39.png

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

19.Bitcoin mining - hack money - GameGuardian

Untitled 40.png

Untitled 41.png

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

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

Untitled 42.png
Untitled 43.png

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

Untitled 44.png

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

Untitled 45.png

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

Untitled 46.png

22.Bitcoin mining - hack money - GameGuardian

Untitled 47.png

Untitled 48.png

这回改的这里。

23.How to run in PhoenixOS - GameGuardian

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

Untitled 49.png

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

Untitled 50.png

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

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

Untitled 51.png

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

Untitled 52.png
联合搜索这些数字。

Untitled 53.png

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

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

芽衣 发表于 2022-5-31 09:54
老牌修改器了,很好用
 楼主| BeneficialWeb 发表于 2022-5-31 18:41
awJYNL 发表于 2022-5-31 20:06
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-16 22:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表