GG修改器常见参数

GG修改器,要修改游戏。与 lua脚本编写,必知道的一些知识:

内存范围、数据类型、常用函数、偏移量

一、内存范围

所有内存范围,示意如下:

Jh内存['REGION_JAVA_HEAP'] = 2
Ch内存['REGION_C_HEAP'] = 1
Ca内存['REGION_C_ALLOC'] = 4
Cd内存['REGION_C_DATA'] = 8
Cb内存['REGION_C_BSS'] = 16
Ps内存['REGION_PPSSPP'] = 262144
A内存['REGION_ANONYMOUS'] = 32
J内存['REGION_JAVA'] = 65536
S内存['REGION_STACK'] = 64
As内存['REGION_ASHMEM'] = 524288
V内存['REGION_VIDEO'] = 1048576
O内存(慢)['REGION_OTHER'] = -2080896
B内存(危险)['REGION_BAD'] = 131072
Xa内存(危险)['REGION_CODE_APP'] = 16384
Xs内存(危险)['REGION_CODE_SYS'] = 32768

二、数据类型

所有内存范围,示意如下:

A:Auto(慢)['TYPE_AUTO'] = 127
D:Dword['TYPE_DWORD'] = 4
F:Float['TYPE_FLOAT'] = 16
E:Double['TYPE_DOUBLE'] = 64
W:Word['TYPE_WORD'] = 2
B:Byte['TYPE_BYTE'] = 1
Q:Qword['TYPE_QWORD'] = 32
X:Xor['TYPE_XOR'] = 8
其他省略... 

三、常用函数

function函数,功能
gg.alert(常用)弹出提示窗口
gg.toast(常用)屏幕下方弹出提示条(会自动消失)
gg.prompt(常用)弹出带有控件的提示窗口
gg.choice(常用)弹出单选列表窗口
gg.clearResults(常用)清除搜索结果
gg.editAll(常用)修改搜索结果
gg.getFile获取当前脚本所在目录
gg.getResults(常用)获取搜索结果
gg.getResultCount获取搜索结果数量
gg.setRanges设置搜索内存
gg.isVisible判断GG界面是否可见
gg.multiChoice(常用)弹出多选列表窗口
gg.processKill结束当前选定应用
gg.searchNumber(常用)搜索数据(重要)
gg.setVisible(常用)设置GG界面是否可见
getline读取行数
getlocale获取地值
getRanges获取内存区域内的?
getRangeslist获取内存区域列表
getResultCount获取结果计数
getResultso获取结果并加载
getSpeedo获取加速
getTargetInfo获取目标信息
getTargetPackage获取迸程包名GG内存
sleep(x)延迟 x填入数字,单位为毫秒

三、基本lua脚本的编写

这里提供一个,最基本的lua脚本模板。复制到文本文件中,后缀改成lua 即可使用。就不提供上传文件。自己复制即可。

如果想内容更丰富一些,可以借鉴其他人的脚本,然后加上面的常用函数即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175

function Main()

  menu1 \= gg.choice({

  "1.功能一",

  "2.功能二",

  "3.功能三",

  "4.功能四",

  "5.功能五",

  "退出"

  }, nil, "不言谢独家制作")

  if menu1 == 1 then byx1() end

  if menu1 == 2 then byx2() end

  if menu1 == 3 then byx3() end

  if menu1 == 4 then byx4() end

  if menu1 == 5 then byx5() end

  if menu1 == 6 then Exit() end

  XGCK \= -1

end



function byx1()

  gg.clearResults()

  gg.setRanges(32)

  gg.searchNumber("特征码", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.searchNumber("改善", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.getResults(100)

  gg.editAll("修改的数值", gg.TYPE\_DWORD)

  gg.toast("完成后的提示")

  gg.clearResults()

end



function byx2()

  gg.clearResults()

  gg.setRanges(32)

  gg.searchNumber("特征码", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.searchNumber("改善", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.getResults(100)

  gg.editAll("修改的数值", gg.TYPE\_DWORD)

  gg.toast("完成后的提示")

  gg.clearResults()

end



function byx3()

  gg.clearResults()

  gg.setRanges(32)

  gg.searchNumber("特征码", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.searchNumber("改善", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.getResults(100)

  gg.editAll("修改的数值", gg.TYPE\_DWORD)

  gg.toast("完成后的提示")

  gg.clearResults()

end



function byx4()

  gg.clearResults()

  gg.setRanges(32)

  gg.searchNumber("特征码", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.searchNumber("改善", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.getResults(100)

  gg.editAll("修改的数值", gg.TYPE\_DWORD)

  gg.toast("完成后的提示")

  gg.clearResults()

end



function byx5()

  gg.clearResults()

  gg.setRanges(32)

  gg.searchNumber("特征码", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.searchNumber("改善", gg.TYPE\_DWORD, false, gg.SIGN\_EQUAL, 0, -1)

  gg.getResults(100)

  gg.editAll("修改的数值", gg.TYPE\_DWORD)

  gg.toast("完成后的提示")

  gg.clearResults()

end



function Exit()

  print("脚本退出了")

  os.exit()

end

while true do

  if gg.isVisible(true) then

    XGCK \= 1

    gg.setVisible(false)

  end

    gg.clearResults()

    if XGCK == 1 then

    Main()

  end

end

三、偏移的写法

因为,通常我不用偏移方法。这里我就不深入研究了。这里提供一个网友分享的方法。如果有需要的可以看看。

同时推荐,一下视频,方便学习。GG脚本仿xs写法教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143

\--多个地址,但偏移量一致,设置值一样



\--获取需要偏移的搜索结果

t=gg.getResults(12345) \--12345为我随便设置的,你们根据所需设置即可

--循环偏移

for n=1,#t do

\--以偏移0xC为例,获取DWORD值

A=gg.sumAddress(t,n,0xC,4)

\--设置需要修改的值

A【1】.value = 78

\--加载修改值

gg.setValues(A)

end



\--已知一些地址

t={

{address\=0x12C42148},

{address\=0x12D80930},

{address\=0x12D94AD4},

{address\=0x12FCD4CC}

}

\--循环偏移

for n=1,#t do

\--以偏移0xC为例,获取DWORD值

t【n】=gg.sumAddress(t,n,0xC,4)

\--设置需要修改的值

t【1】.value = 78

end

\--加载修改值

gg.setValues(t)\--用法二

--多个地址,但偏移量均不一样,设置值一样



\--获取表,也可以是用已知的地址组成的表

t=gg.getResults(4)

\--设置偏移量表,表长度和获取的表最好一样

o={

0xC,

1388,

0xBA24,

24666

}

for n=1,#o do

\--偏移,获取float类型

o【n】=gg.sumAddress(t,n,o【n】,16)

\--设置值

o【n】.value=1.875

end

\--加载值

gg.setValues(o)



\--用法三

--多个地址,偏移量不一样,修改值也不一样

--已知一些地址

addressItem={

{address\=0x12C42148},

{address\=0x12D80930},

{address\=0x12D94AD4},

{address\=0x12FCD4CC}

}

\--设置偏移量表,表长度和获取的表最好一样

addressOffest={

0xC,

1388,

0xBA24,

24666

}

\--设置修改值

addressValue={

2837,

2884,

1838,

结尾:

文中的部分参考资料,来源与互联网查询,查看,整理,记录,修改,完善。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!