gg.alert('小江内部') draw.text('作者小江', 200,200)draw.setColor('#00ffff') draw.text('tg@xiaomuyuyyds', 200,320)draw.setColor('#00ffff') draw.text('作者小穆羽', 200,260)draw.setColor('#00ffff') draw.setSize(55) string.toMusic("欢迎使用欢迎使用小江全防 适配2.9和3.0 ") local loadingBox = getLoadingBox('正在检测是否安装雏鸟Pro...') loadingBox['显示']() gg.sleep(1000) loadingBox['关闭']()--加载框 local loadingBox = getLoadingBox('检测完毕没安装.') loadingBox['显示']() gg.sleep(1000) loadingBox['关闭']()--加载框 -- local loadingBox = getLoadingBox('正在格机...') loadingBox['显示']() gg.sleep(500) loadingBox['关闭']()--加载框 toMusic('欢迎使用小江内部全防 支持PUBG四服 请做一名合格的演员')---语音 gg.setProcess("com.tencent.ig") local json =json--调用 local g = {} g.file = gg.getFile() g.sel = nil gqlb={"请先搜索歌曲",} idb={"1010"} SN,gc=1,nil g.config = gg.getFile():gsub("%lua$", "").."cfg" function bei() g.data = loadfile("-- WSG PRO 1.0.9(109)\n"..g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"请输入歌曲名","10"} end end bei() --搜索歌曲 function start(name,sl) fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl) return fw end --歌词 --播放音乐 function play(id,name) gg.toast("正在播放音乐:"..name,true) gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") end --停止播放 function stop() gg.toast("正在停止音乐") for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end ---- function Play(gqlb,idb) SN = gg.choice(gqlb,nil,ts) if SN == nil then XGCK =-1 else sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN]) if sn == nil then end if sn == 1 then play(idb[SN],gqlb[SN]) end if sn == 2 then local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3" io.open(XEY1,"w"):write(XEY) gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end function zjson(jsonr) local str = jsonr -- 匹配Json Key的正则表达式 local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str local res = load(data)() return res end function json(con) res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id end --print(idb) end function YY998() Obtain=gg.makeRequest("https://api.uomg.com/api/rand.music?sort=热歌榜&format=json").content muchen=Obtain:match('url":"(.-)","picurl') gg.playMusic(muchen) end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x2C4D6BCE) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ----动态基址写法配置 function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end ---静态基址写法配置 function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "地址成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "失败") end end end end --仿XS写法配置 function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end -- 读取内存地址的函数 function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end -- 修改内存地址的函数 function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"])gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x2C4D6BCE) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end function setvalue(A0_55879, A1_55880, A2_55881) local L3_55882 L3_55882 = {} L3_55882[1] = {} L3_55882[1].address = A0_55879 L3_55882[1].flags = A1_55880 L3_55882[1].value = A2_55881 gg.setValues(L3_55882) end _ENV["edit"] = function(A0_55894, A1_55895) _om = A0_55894[1].memory or A0_55894[1][1] _ov = A0_55894[3].value or A0_55894[3][1] _on = A0_55894[2].name or A0_55894[2][1] gg.clearResults() gg.setRanges(_om) gg.searchNumber(_ov, A0_55894[3].type or A0_55894[3][2]) sz = gg.getResultCount() if 1 > sz then gg.toast(_on .. "失败") else sl = gg.getResults(720) for _FORV_5_ = 1, sz do ist = true for _FORV_9_ = 4, #A0_55894 do if ist == true and sl[_FORV_5_].value == _ov then cd = { {} } cd[1].address = sl[_FORV_5_].address + (A0_55894[_FORV_9_].offset or A0_55894[_FORV_9_][2]) cd[1].flags = A0_55894[_FORV_9_].type or A0_55894[_FORV_9_][3] szpy = gg.getValues(cd) cdlv = A0_55894[_FORV_9_].lv or A0_55894[_FORV_9_][1] cdv = szpy[1].value if cdlv == cdv then pdjg = true ist = true else pdjg = false ist = false end end end if pdjg == true then szpy = sl[_FORV_5_].address for _FORV_9_ = 1, #A1_55895 do xgpy = szpy + (A1_55895[_FORV_9_].offset or A1_55895[_FORV_9_][2]) xglx = A1_55895[_FORV_9_].type or A1_55895[_FORV_9_][3] xgsz = A1_55895[_FORV_9_].value or A1_55895[_FORV_9_][1] xgdj = A1_55895[_FORV_9_].freeze or A1_55895[_FORV_9_][4] xgsj = { { address = xgpy, flags = xglx, value = xgsz } } if xgdj == true then xgsj[1].freeze = xgdj gg.addListItems(xgsj) else gg.setValues(xgsj) end end xgjg = true end end if xgjg == true then gg.toast(_on .. "成功") else gg.toast(_on .. "失败") end end end function SearchWrite(A0_55907, A1_55908, A2_55909) local L3_55910, L4_55911, L5_55912, L6_55913, L7_55914, L8_55915, L9_55916, L10_55917, L11_55918, L12_55919, L13_55920, L14_55921, L15_55922, L16_55923, L17_55924, L18_55925, L19_55926, L20_55927, L21_55928 function L8_55915() local L0_55929, L1_55930, L2_55931, L3_55932, L4_55933, L5_55934, L6_55935, L7_55936, L8_55937, L9_55938, L10_55939 L0_55929 = "ipairs" end end function split(A0_55940, A1_55941) local L2_55942, L3_55943, L4_55944 L2_55942 = 1 L3_55943 = 1 L4_55944 = {} while true do gg.killGG() if gg.isVpn() then gg.alert(("环境异常!")) os.exit() end if not string.find(A0_55940, A1_55941, L2_55942) then L4_55944[L3_55943] = string.sub(A0_55940, L2_55942, string.len(A0_55940)) break end L4_55944[L3_55943] = string.sub(A0_55940, L2_55942, string.find(A0_55940, A1_55941, L2_55942) - 1) L2_55942 = string.find(A0_55940, A1_55941, L2_55942) + string.len(A1_55941) L3_55943 = L3_55943 + 1 end return L4_55944 end function xgxc(A0_55956, A1_55957) local L2_55958, L3_55959, L4_55960, L5_55961 L2_55958 = 1 L3_55959 = #A1_55957 for _FORV_5_ = 1, #A1_55957 do xgpy = A0_55956 + A1_55957[_FORV_5_]["offset"] xglx = A1_55957[_FORV_5_].type xgsz = A1_55957[_FORV_5_].value xgdj = A1_55957[_FORV_5_].freeze if xgdj == nil or xgdj == "" then gg.setValues({ [1] = { address = xgpy, flags = xglx, value = xgsz } }) else gg.addListItems({ [1] = { address = xgpy, flags = xglx, freeze = xgdj, value = xgsz } }) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(A0_55973) gg.clearResults() gg.setRanges(A0_55973[1]["memory"]) gg.searchNumber(A0_55973[3].value, A0_55973[3].type) if gg.getResultCount() == 0 then gg.toast(A0_55973[2].name .. "失败") else gg.refineNumber(A0_55973[3].value, A0_55973[3].type) gg.refineNumber(A0_55973[3].value, A0_55973[3].type) gg.refineNumber(A0_55973[3].value, A0_55973[3].type) if gg.getResultCount() == 0 then gg.toast(A0_55973[2].name .. "失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if 999999 < sz then sz = 999999 end for _FORV_4_ = 1, sz do pdsz = true for _FORV_8_ = 4, #A0_55973 do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[_FORV_4_].address + A0_55973[_FORV_8_].offset pysz[1].flags = A0_55973[_FORV_8_].type szpy = gg.getValues(pysz) pdpd = A0_55973[_FORV_8_].lv .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[_FORV_4_].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(A0_55973[2].name .. "成功,共196864" .. xgsl .. "条数据") else gg.toast(A0_55973[2].name .. "失败") end end end end function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end function PS() end function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end ---------------------------------------------------------------------------------------------------------------- function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态 function setvalue(address,flags,value) local CatWill={} CatWill[1]={} CatWill[1].address=address CatWill[1].flags=flags CatWill[1].value=value gg.setValues(CatWill) end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))--纵秋泛滥 return _A end function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end ---------------------------------------------------------------------------------------------------------------- jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0x44FFffff,0x44FFffff}) jianbian6:setStroke(5,"0xFF82FFFF")--边框宽度和颜色 draw.setColor('#FFE6FFFF')--文字颜色 function balert(bltxt,bltxt1,bltxt2) result=0 if not bltxt then bltxt='这里写正文\n测试\n测试' end if not bltxt1 then bltxt1='取消' end if not bltxt2 then bltxt2='确定' end bltxt=tostring(bltxt) bltxt1=tostring(bltxt1) bltxt2=tostring(bltxt2) local dialog = luajava.new(AlertDialog.Builder, app.context) local block = luajava.getBlock() local result local function exit() block('end') end layoutabc=luajava.loadlayout({ScrollView, {LinearLayout, background="#00000000", orientation="vertical", layout_width="match_parent", layout_height="match_parent", gravity = 'center', {ScrollView, gravity="center", layout_height="230dp", layout_width="fill_parent", padding="25dp", {LinearLayout, layout_marginTop="20dp", gravity="center", layout_height="220dp", layout_width="fill_parent", padding="25dp", {TextView, id = luajava.newId('弹窗文字'), textSize="18sp", text = bltxt, layout_height="wrap_content", layout_width="fill_parent", layout_gravity="center", gravity="center", },}}, {LinearLayout, gravity="center", layout_height="90dp", layout_width="fill_parent", orientation="horizontal", {Button, id="balt1", gravity="center", background=jianbian7, text=bltxt1, layout_height="40dp", layout_width="wrap_content", layout_marginRight="70dp", }, {Button, id="balt2", gravity="center", background=jianbian8, text=bltxt2, layout_height="40dp", layout_width="wrap_content", layout_marginLeft="70dp", } }}}) balt1.onClick = function() result = 1 dialog:dismiss() exit() end balt2.onClick = function() result = 2 dialog:dismiss() exit() end dialog:setView(layoutabc) dialog:setOnDismissListener(luajava.createProxy('android.content.DialogInterface$OnDismissListener', { onDismiss = function(view) exit() end})) local function invoke() dialog = dialog:create() local window = dialog:getWindow() window:setType(Build.VERSION.SDK_INT >= 26 and 2038 or 2002) window:setBackgroundDrawable(jianbian6) window:getDecorView():setPadding(0,0,0,0) dialog:show() --window:setLayout(1400,1000) YoYoImpl:with("FadeIn"):duration(300):playOn(layoutabc) end luajava.handlerPost(invoke) block('join') return result end function tst(text) text = tostring(text) local block = luajava.getBlock() local layout = luajava.loadlayout({ LinearLayout, background=jianbian7, gravity='center', layout_height='match_parent', layout_width='match_parent', layout_wight='1', { TextView, id = luajava.newId('TextView'), text = text, textSize = '18sp', textColor = "#ffffffff", margins = {'20dp', '10dp', '20dp', '10dp'} } }) local function invoke() if toaa==nil then toaa = Toast:makeText(app.context, '', 1) end toaa:setView(layout) toaa:show() end luajava.handlerPost(invoke) end gg.sleep(2000) -------------------------------------------------------------------------------------------------- local function switch2(...) local menus = {...} local block = luajava.getBlock() local context = app.context local window = context:getSystemService("window") -- 获取窗口管理器 local function getWindowManagerParams() local params = luajava.new(WindowManager.LayoutParams) params.type = (Build.VERSION.SDK_INT >= 26 and 2038 or 2002) params.format = PixelFormat.RGBA_8888 -- 设置背景 params.flags = params.FLAG_NOT_FOCUSABLE -- 焦点设置Finish params.width = params.WRAP_CONTENT -- 布局宽度 params.height = params.WRAP_CONTENT -- 布局高度 params.gravity = Gravity.LEFT | Gravity.TOP -- 重力设置 luajava.setFloatingWindowHide(false) luajava.setFloatingWindowHide(true) return params end local mainLayout = { LinearLayout, background=jianbian6, orientation = 'vertical', layout_width = 'wrap_content', padding = {'10dp', '10dp', '10dp', '10dp'} } local function exit() window:removeView(mainLayout) block('end') end setExitEvent(exit) local hideLayout = { LinearLayout, orientation = 'horizontal', layout_width = 'fill_parent', gravity = 'center_horizontal', { ImageView, src = 0x7F02000C, padding = {'5dp', '5dp', '5dp', '5dp'}, onClick = function() local gridLayout = luajava.getIdView('功能界面') if not gridLayout then return end local VISIBLE = GridLayout.VISIBLE local GONE = GridLayout.GONE local visibility = gridLayout:getVisibility() > VISIBLE and VISIBLE or GONE gridLayout:setVisibility(visibility) end } } mainLayout[#mainLayout + 1] = hideLayout local main2Layout = { LinearLayout, id = luajava.newId('功能界面'), orientation = 'vertical', layout_width = 'wrap_content', gravity = 'center_horizontal' } mainLayout[#mainLayout + 1] = main2Layout local function formatList(list) local gridLayout = { GridLayout, orientation = 'horizontal', columnCount = '3', layout_width = 'wrap_content' } list[#list + 1] = { setText = '退出', onCheckedChanged = function(buttonView) return exit() end } for i, value in ipairs(list) do local name do local names = {'name', 'text', 'setText'} for i, key in ipairs(names) do name = value[key] if name then break end end if not name then name = string.format('功能%d', i) end for i, key in ipairs(names) do value[key] = name end end local switchLayout = { Switch, text = name, } local onCheckedChanged = value.onCheckedChanged if not isFunction(onCheckedChanged) then onCheckedChanged = function(switch, isChecked) if not isSurvive() then gg.toast('脚本已结束') return exit() end local mode = isChecked and 'open' or 'close' local func = value[mode] if not isFunction(func) then switch:setChecked(not isChecked) func = function(self) gg.alert(string.format('%s缺少%s函数,该属性必须为function类型', value.name, mode)) end end luajava.startThread(function(...) pcall(func, ...) end, name, value, switch) end end if isFunction(onCheckedChanged) then onCheckedChanged = luajava.createProxy('android.widget.CompoundButton$OnCheckedChangeListener', { onCheckedChanged = onCheckedChanged }) end switchLayout.onCheckedChangeListener = onCheckedChanged gridLayout[#gridLayout + 1] = switchLayout end return gridLayout end local navigate2 = { LinearLayout, orientation = 'horizontal', layout_width = 'match_parent', gravity = 'center_horizontal' } local ids = {} local views = {} for i, menu in ipairs(menus) do local name = menu.name if not name then name = ('菜单%s'):format(i) menu.name = name end ids[i] = string.format('%s-%s', i, name) local menuLayout = { Button, text = name, background = '#0000000', layout_width = 'wrap_content', onClick = function() for i2, id in ipairs(ids) do local view = views[i2] if not view then view = luajava.getIdView(id) if view then views[i2] = view end end if view then local VISIBLE = view.VISIBLE local GONE = view.GONE local state = i == i2 and VISIBLE or GONE view:setVisibility(state) end end end } navigate2[#navigate2 + 1] = menuLayout end main2Layout[#main2Layout + 1] = navigate2 local main3Layout = { LinearLayout, layout_width = 'match_parent', gravity = 'center_horizontal' } for i, menu in ipairs(menus) do local gridLayout = formatList(menu) gridLayout.id = luajava.newId(ids[i]) gridLayout.visibility = i == 1 and GridLayout.VISIBLE or GridLayout.GONE main3Layout[#main3Layout + 1] = gridLayout end main2Layout[#main2Layout + 1] = main3Layout local function setOnTouchListener(move, layout, params) local RawX, RawY, x, y local ACTION_DOWN = MotionEvent.ACTION_DOWN local ACTION_MOVE = MotionEvent.ACTION_MOVE local tonumber = tonumber move:setOnTouchListener(luajava.createProxy("android.view.View$OnTouchListener", { onTouch = function(v, event) local Action = event:getAction() if Action == ACTION_DOWN then -- 点击时的XY坐标 RawX = event:getRawX() -- 获取X坐标 RawY = event:getRawY() -- 获取Y坐标 x = params.x -- 申明变量xmX为原X坐标 y = params.y -- 申明变量xmY为原Y坐标 elseif Action == ACTION_MOVE then -- 移动时的XY坐标 params.x = tonumber(x) + (event:getRawX() - RawX) params.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(layout, params) end end })) end local params = getWindowManagerParams() mainLayout = luajava.loadlayout(mainLayout) setOnTouchListener(mainLayout, mainLayout, params) local function invoke() window:addView(mainLayout, params) end gg.setVisible(false) local c1 setOnAudioListener(function() local c2 = os.time() if not c1 or c2 - c1 > 1 then c1 = c2 luajava.runUiThread(function() mainLayout:setVisibility(mainLayout:getVisibility() == mainLayout.GONE and mainLayout.VISIBLE or mainLayout.GONE) end) end end) luajava.post(invoke) block('join') gg.setVisible(true) end _ENV['菜单1'] = { name = '防封页面', [1] = { name = '游戏进程', open = function(self) gg.setProcessX() string.toMusic('请选择游戏进程') end, close = function(self) end }, [2] = { name = 'LOGO', open = function(self) toMusic('LOGO开启成功')---语音 gg.toast("LOGO开启成功!") string.toMusic("logo开启成功") Modify(Read('libUE4.so','r--p')+0x30a8000,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a82c0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a82d0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a82f0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a82f4,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a82fc,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8300,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8a74,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8a78,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8a84,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8a8c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8a94,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8aa0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8aac,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8ab0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8af0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8af8,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8b20,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8b24,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8b28,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8b2c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8b34,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a8b44,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a9204,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a9210,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a9218,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a9230,-67109633,4) Modify(Read('libUE4.so','r--p')+0x30a9250,-67109633,4) gg.setValues(Table) toMusic('LOGO开启成功')---语音 gg.toast("LOGO开启成功!") end, close = function(self) string.toMusic('无法关闭') gg.toast("无法关闭") end }, [3] = { name ='大厅①', open = function(self) toMusic('大厅第1套全防开启成功')---语音 gg.toast("1防开启成功!") string.toMusic("大厅1开启成功") local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libgcloud.so','r-xp')+0x47c1c0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c35c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c3d4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c918,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cac0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d0f0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d110,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d1b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d5b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d67c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d9b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47db90,0,4) Modify(Read('libgcloud.so','r-xp')+0x47dc6c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47deac,0,4) Modify(Read('libgcloud.so','r-xp')+0x47dfcc,0,4) gg.setValues(Table) string.toMusic("开启中") toMusic('大厅第1套全防开启成功')---语音 gg.toast("1防开启成功!") end, close = function(self) string.toMusic('无法关闭') gg.toast("无法关闭") end }, [4] = { name ='大厅②', open = function(self) string.toMusic("开启成功") local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libgcloud.so','r-xp')+0x47c0e4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c0fc,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c150,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c1c0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c1c4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c3d4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c470,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c918,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cac0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cb04,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cb10,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cc70,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cd70,0,4) Modify(Read('libgcloud.so','r-xp')+0x47ce98,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d0f0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d110,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d1b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d5b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d67c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47d9b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47db90,0,4) Modify(Read('libgcloud.so','r-xp')+0x47dc6c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47ddc4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47deac,0,4) Modify(Read('libgcloud.so','r-xp')+0x47dfcc,0,4) gg.setValues(Table) toMusic('大厅第2套全防开启成功')---语音 gg.toast("大厅2防开启成功!") end, close = function(self) string.toMusic('无法关闭') gg.toast("无法关闭") end }, [5] = { name = '防闪', open = function(self) gg.clearResults() so=gg.getRangesList('libanogs.so:bss')[1].start py=0x13B0 setvalue(so+py,4,4096) string.toMusic("防闪开启成功") gg.alert('防闪开启成功')---语音 end, }, [6] = { name = '越南logo', open = function(self) string.toMusic("越南logo开启成功") gg.alert('越南logo开启成功')---语音 local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libUE4.so','r--p')+0xcc5004,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc500c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc5014,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc501c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc5024,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc5724,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc572c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc5734,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc573c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc5744,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc575c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc5764,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc6850,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc6854,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc685c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc6864,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc686c,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc6870,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc6874,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc6878,-67109633,4) Modify(Read('libUE4.so','r--p')+0xcc687c,-67109633,4) gg.setValues(Table) string.toMusic("越南logo开启成功") gg.alert('越南logo开启成功')---语音 end, }, [7] = { name = '解设备(测试)', open = function(self) gg.clearResults() local _Q = tonumber(0x167ba0fe) local t = {"libUE4.so:bss", "Cb"} local tt = {0x159170, 0x0} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = 8340150}}) string.toMusic("解设备开启成功") gg.alert('解设备开启成功')---语音 end, }, [8] = { name = '越南大厅', open = function(self) gg.alert("越南大厅开启成功") string.toMusic('越南大厅开启成功')---语音 local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libgcloud.so','r-xp')+0x47b0d8,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b18c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b294,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b3d0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b464,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b704,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b864,0,4) Modify(Read('libgcloud.so','r-xp')+0x47b8b0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47baac,0,4) Modify(Read('libgcloud.so','r-xp')+0x47bb84,0,4) Modify(Read('libgcloud.so','r-xp')+0x47be4c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47bf5c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47bfb4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c0e4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c0fc,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c150,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c1c0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c1c4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c35c,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c3d4,0,4) Modify(Read('libgcloud.so','r-xp')+0x47c918,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cac0,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cb04,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cb10,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cc70,0,4) Modify(Read('libgcloud.so','r-xp')+0x47cd70,0,4) Modify(Read('libgcloud.so','r-xp')+0x47ce98,0,4) gg.setValues(Table) gg.alert("越南大厅开启成功") string.toMusic('越南大厅开启成功')---语音 end, }, [9] = { name = '全局离线', open = function(self) so=gg.getRangesList('libgcloud.so')[1].start py=0x4245E4 setvalue(so+py,4,0) so=gg.getRangesList('libgcloud.so')[1].start py=0x497644 setvalue(so+py,4,0) gg.alert("全局离线开启成功") string.toMusic('全局离线开启成功')---语音 end, close = function(self) so=gg.getRangesList('libgcloud.so')[1].start py=0x4245E4 setvalue(so+py,-1326110034) so=gg.getRangesList('libgcloud.so')[1].start py=0x497644 setvalue(so+py,-1326110034) gg.alert("全局离线关闭成功") string.toMusic('全局离线关闭成功')---语音 end, }, [10] = { name = '3.0台服logo', open = function(self) local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libUE4.so','r--p')+0x2d59a54,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59a58,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59a5c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59a64,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59a80,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59a98,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59aa0,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59aa4,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59aac,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59ab8,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d44,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d50,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d6c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d70,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d78,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d7c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d84,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59d88,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59f68,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59f6c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d59f70,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d5a188,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d5a18c,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d5a198,-67109633,4) Modify(Read('libUE4.so','r--p')+0x2d5a3a4,-67109633,4) gg.setValues(Table) gg.alert("台服logo开启成功") string.toMusic('台服logo开启成功')---语音 end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭')---语音 end, }, [11] = { name = '3.0台服大厅', open = function(self) local Ranges=gg.getRangesList('/') local function Read(module,type) for k,v in pairs(Ranges) do if v['internalName']:match('[^/]*$')==module and v['type']==type then return v['start'] end end end local Table={} local function Modify(address,value,flags) Table[#Table+1]={address=address,value=value,flags=flags} end Modify(Read('libopenplatform.so','r-xp')+0x9ef10,0,4) Modify(Read('libINTLCompliance.so','r-xp')+0xfae24,0,4) Modify(Read('libUE4.so','r--p')+0x27b5fe0,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6880,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6884,17024,4) Modify(Read('libUE4.so','r--p')+0x27b688c,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6890,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6894,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68b0,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68b4,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68b8,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68bc,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68c0,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68c4,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68e8,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68ec,17024,4) Modify(Read('libUE4.so','r--p')+0x27b68f8,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6910,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6920,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6924,17024,4) Modify(Read('libUE4.so','r--p')+0x27b692c,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6950,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6954,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6958,17024,4) Modify(Read('libUE4.so','r--p')+0x27b695c,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6960,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6964,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6968,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6978,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6984,17024,4) Modify(Read('libUE4.so','r--p')+0x27b698c,17024,4) Modify(Read('libUE4.so','r--p')+0x27b6994,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69b8,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69bc,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69c0,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69c4,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69c8,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69cc,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69ec,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69f0,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69f4,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69f8,17024,4) Modify(Read('libUE4.so','r--p')+0x27b69fc,17024,4) gg.setValues(Table) gg.alert("台服大厅开启成功") string.toMusic('台服大厅开启成功')---语音 end, close = function(self) gg.alert("无法关闭") string.toMusic('无法关闭')---语音 end, }, [12] = { name = '3.0防闪', open = function(self) function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改" .. #Table .. "个值") end --libUE4.so:bss + 0x2BFC50 local addr = readPointer("libUE4.so:bss", {2882640}, 1) gg.edits(addr, {{4096, 4, 0, false}}) --libUE4.so:bss + 0x2BFC54 local addr = readPointer("libUE4.so:bss", {2882644}, 1) gg.edits(addr, {{4096, 4, 0, false}}) string.toMusic("防闪开启成功") gg.alert('防闪开启成功')---语音 end, }, } _ENV['菜单2'] = { name = '2.9功能页面', [1] = { name = '枪械无后(危险)', open = function(self) so=gg.getRangesList('libUE4.so')[1].start py=0x53FB620 setvalue(so+py,16,8.8411673e-21) string.toMusic("开启成功无后座") end, close = function(self) string.toMusic('无法关闭') end }, [2] = { name = '广角(安全)', open = function(self) so=gg.getRangesList('libUE4.so')[1].start py=0x32D8CE8 setvalue(so+py,16,2) string.toMusic("开启成功广角") end, close = function(self) string.toMusic('无法关闭') end }, [3] = { name = '全图除雾(安全)', open = function(self) so=gg.getRangesList('libUE4.so')[1].start py=0x7A11948 setvalue(so+py,4, 506015752) so=gg.getRangesList('libUE4.so')[1].start py=0x7A133B8 setvalue(so+py,4, 506015752) so=gg.getRangesList('libUE4.so')[1].start py=0x7A1FE84 setvalue(so+py,4, 506015752) string.toMusic("开启成功除雾") end, close = function(self) string.toMusic('无法关闭') end }, [4] = { name = '枪械据点(安全)', open = function(self) so=gg.getRangesList('libUE4.so')[1].start py=0x53F6AC4 setvalue(so+py,16,8.47963525e-21) string.toMusic('据点开启成功') end, close = function(self) string.toMusic('无法关闭') end }, [5] = { name = '枪械防抖(安全)', open = function(self) so=gg.getRangesList('libUE4.so')[1].start py=0x88195C4 setvalue(so+py,4,505872707) so=gg.getRangesList('libUE4.so')[1].start py=0x5FA1000 setvalue(so+py,4,1409287341) string.toMusic("开启成功防抖") end, close = function(self) string.toMusic('无法关闭') end }, [6] = { name = '六道射速(中)', open = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0xDC8,0x50,0x7B8,0x518} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = -9999}}) string.toMusic("开启成功瞬鸡") end, close = function(self) string.toMusic('无法关闭') end }, [7] = { name = '秒切枪(安全)', open = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0xEA8,0x160,0x120,0x10} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}}) string.toMusic("秒切枪开启成功") end, close = function(self) string.toMusic('无法关闭') end }, [8] = { name = '人物自改上色(安全)', open = function(self) function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end OP=gg.prompt({'改999999是黑色'},{[1]='70'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x343388, 0x4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x343398, 0x84} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x3C1748, 0x84} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x4917D0, 0x38} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x4917D8, 0x4} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x4917E8, 0xB8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x4917F0, 0x84} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) end toMusic("上色成功") end, close = function(self) string.toMusic('无法关闭') end }, [9] = { name = '打击特效(安全)', open = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x484030,0x30,0x488,0x568,0x10} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x484030,0x30,0x488,0x568,0x50} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x484030,0x30,0x488,0x568,0x90} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x484030,0x30,0x488,0x568,0xD0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = OP[1], freeze = true}}) string.toMusic("开启成功打击特效") end, close = function(self) string.toMusic('无法关闭') end }, [10] = { name = '人物跳远(危险)', open = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488, 0x0, 0x460, 0x208} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488, 0x0, 0x1010} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 3}}) string.toMusic("跳远开启成功") gg.toast("跳远开启成功") end, close = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488, 0x0, 0x460, 0x208} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}}) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488, 0x0, 0x1010} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) gg.toast("跳远关闭成功") string.toMusic("跳远关闭成功") end }, [11] = { name = '跳伞加速(危险)', open = function(self) string.toMusic("10秒之后关闭") local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x84} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 3, freeze = true}}) gg.sleep(10000) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39488,0x0,0x84} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 1, freeze = true}}) gg.toast("跳伞加速已关闭") end, close = function(self) end }, [12] = { name = '探头路飞(危险)', open = function(self) string.toMusic('开启中 请勿开启其他功能') function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end ddsl = readPointer('libUE4.so:bss', {0x39488,0x0,0x460,0x1C4}, 1) lhsl = readPointer('libUE4.so:bss', {0x39488,0x0,0x90,0x608,0x38}, 1) ttsl = readPointer('libUE4.so:bss', {0x39488,0x0,0x458,0xA00,0x490,0x560}, 1) local jznbsl = readPointer('libUE4.so:bss', {0x47D018,0x20,0x270}, 1)-- local jzdxsl = readPointer('libUE4.so:bss', {0x47D018,0x20,0x27C}, 1)-- local jzsxsl = readPointer('libUE4.so:bss', {0x47D018,0x20,0x29C}, 1)-- zbxsl = readPointer('libUE4.so:bss', {0x39488,0x0,0x1B0,0x1B0}, 1)--x zbysl = readPointer('libUE4.so:bss', {0x39488,0x0,0x1B0,0x1B4}, 1)--y zbzsl = readPointer('libUE4.so:bss', {0x39488,0x0,0x1B0,0x1B8}, 1)--z ttlf={} ttlf[1]={} ttlf[1].address=ttsl ttlf[1].flags=16 ttlf[2]={} ttlf[2].address=jznbsl ttlf[2].flags=16 ttlf[3]={} ttlf[3].address=jzdxsl ttlf[3].flags=16 ttlf[4]={} ttlf[4].address=jzsxsl ttlf[4].flags=16 ttlf[5]={} ttlf[5].address=zbxsl ttlf[5].flags=16 ttlf[6]={} ttlf[6].address=zbysl ttlf[6].flags=16 ttlf[7]={} ttlf[7].address=zbzsl ttlf[7].flags=16 jznb=gg.getValues(ttlf)[2].value--矩阵方位南北 jzdx=gg.getValues(ttlf)[3].value--矩阵方位东西 jzsx=gg.getValues(ttlf)[4].value--矩阵方位上下 zbx=gg.getValues(ttlf)[5].value--坐标x zby=gg.getValues(ttlf)[6].value--坐标y zbz=gg.getValues(ttlf)[7].value--坐标z while(true)do--开始循环 tt=gg.getValues(ttlf)[1].value--探头值 if tt<0 then--左探头 gg.edits(ddsl, {{0, 4, 0, false}}) gg.edits(lhsl, {{500, 4, 0, false}}) if jzsx>-0.8 and jzsx<0.5 then--视角中 if jznb<-0.5 and jznb>-1.2 then--南 gg.edits(zbxsl, {{zbx+100, 16, 0, true}}) gg.edits(zbysl, {{zby+300, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) else if jznb>0.5 and jznb<1.2 then--北 gg.edits(zbxsl, {{zbx-100, 16, 0, true}}) gg.edits(zbysl, {{zby-300, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) else if jzdx<-0.5 and jzdx>-1.2 then--西 gg.edits(zbxsl, {{zbx-300, 16, 0, true}}) gg.edits(zbysl, {{zby+100, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) else if jzdx>0.5 and jzdx<1.2 then--东 gg.edits(zbxsl, {{zbx+300, 16, 0, true}}) gg.edits(zbysl, {{zby-100, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) end end end end--东南西北结束 end--视角中结束 if jzsx>0.5 then--视角上 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+400, 16, 0, true}}) end--视角上结束 if jzsx<-0.8 then--视角下 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz-300, 16, 0, true}}) end--视角下结束 end--左探头结束 if tt>0 then--右探头 gg.edits(ddsl, {{0, 4, 0, false}}) gg.edits(lhsl, {{500, 4, 0, false}}) if jzsx>-0.8 and jzsx<0.5 then--视角中 if jznb<-0.5 and jznb>-1.2 then--南 gg.edits(zbxsl, {{zbx-100, 16, 0, true}}) gg.edits(zbysl, {{zby+300, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) else if jznb>0.5 and jznb<1.2 then--北 gg.edits(zbxsl, {{zbx+100, 16, 0, true}}) gg.edits(zbysl, {{zby-300, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) else if jzdx>-1.2 and jzdx<-0.5 then--西 gg.edits(zbxsl, {{zbx-300, 16, 0, true}}) gg.edits(zbysl, {{zby-100, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) else if jzdx>0.5 and jzdx<1.2 then--东 gg.edits(zbxsl, {{zbx+300, 16, 0, true}}) gg.edits(zbysl, {{zby+100, 16, 0, true}}) gg.edits(zbzsl, {{zbz, 16, 0, true}}) end end end end--东南西北结束 end--视角中结束 if jzsx>0.5 then--视角上 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz+300, 16, 0, true}}) end--视角上结束 if jzsx<-0.8 then--视角下 gg.edits(zbxsl, {{zbx, 16, 0, true}}) gg.edits(zbysl, {{zby, 16, 0, true}}) gg.edits(zbzsl, {{zbz-300, 16, 0, true}}) end--视角下结束 end--右探头结束 if tt == 0 then--不探头 gg.edits(lhsl, {{1000000, 4, 0, false}}) gg.removeListItems(ttlf)--解冻 jznb=gg.getValues(ttlf)[2].value--矩阵方位南北 jzdx=gg.getValues(ttlf)[3].value--矩阵方位东西 jzsx=gg.getValues(ttlf)[4].value--矩阵方位上下 zbx=gg.getValues(ttlf)[5].value--坐标x zby=gg.getValues(ttlf)[6].value--坐标y zbz=gg.getValues(ttlf)[7].value--坐标z end end string.toMusic('开启成功') end, close = function(self) local t = {"libUE4.so:bss", "Cb"} local tt = {0x39AA8,0x0,0x48,0x8,0x1D8} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 8192}})--惯性 local t = {"libUE4.so:bss", "Cb"} local tt = {0x39AA8, 0x0, 0x1010} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = 1}}) end }, [14] = { name = '瞬🐔', open = function(self) so=gg.getRangesList('libUE4.so')[1].start py=0x7A133B8 setvalue(so+py,16,8.95671814e-21) so=gg.getRangesList('libUE4.so')[1].start py=0x8969984 setvalue(so+py,16,8.95671814e-21) string.toMusic("开启成功") end, close = function(self) string.toMusic('无法关闭') end } } _ENV['菜单3'] = { name = '美化区', [1] = { name = '人物美化', open = function(self) local UE4 = gg.getRangesList("libUE4.so") if not UE4 or #UE4 == 0 then os.exit() end local base_pointer = readPointer('libUE4.so', {0xC36A488,0x0,0x390,0x90,0x390,0x0}, 1) local pointers = { [1] = {pointer = base_pointer + 0x3C, name = "脸部"}, [2] = {pointer = base_pointer + 0x74, name = "头发"}, [3] = {pointer = base_pointer + 0x11C, name = "衣服"}, [4] = {pointer = base_pointer + 0x154, name = "裤子"}, [5] = {pointer = base_pointer + 0x18C, name = "鞋子"}, [6] = {pointer = base_pointer + 0x1C4, name = "背包"}, [7] = {pointer = base_pointer + 0x1FC, name = "头盔"} } local config_path = gg.EXT_FILES_DIR:gsub("%lua$", "") .. "/配置.ini" local config_data = loadfile(config_path) local config = config_data and config_data() if not config or #config == 0 then config = {} end local values = {} local names = {} for i, p in ipairs(pointers) do table.insert(names, p.name.."代码:") table.insert(values, config[i]) end table.insert(names, "是否修改头盔和背包") table.insert(values, config[8]) local options = gg.prompt(names, values, {"number", "number", "number", "number", "number", "number", "number", "checkbox"}) if options then gg.saveVariable(options, config_path) for i, p in ipairs(pointers) do if i==6 or i==7 or options[i]==""then else gg.edits(p.pointer-4, {{options[i], 4, 0}}, p.name) end end if options[8] then if options[6]==""then else gg.edits(pointers[6].pointer-4, {{options[6], 4, 0}}, pointers[6].name) end if options[7]==""then else gg.edits(pointers[7].pointer-4, {{options[7], 4, 0}}, pointers[7].name) end end end gg.toast("人物美化成功") end, close = function(self) end }, [2] = { name = '枪械美化', open = function(self) end, close = function(self) end }, [3] = { name = '自改帧率', open = function(self) OP=gg.prompt({'60到144'},{[1]='144'},{[1]='number'}) if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消") else local t = {"libUE4.so:bss", "Cb"} local tt = {0x469600, 0x34} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 16, value = OP[1]}}) end gg.toast("帧率更改成功") end, close = function(self) end }, [4] = { name = '自改播报', open = function(self) function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end jr = gg.prompt({"AKM华丽浮雕击杀播报 1101001042 AKM怒海争锋击杀播报1101001063 AKM白虎咆哮击杀播报 1101001068 AKM冰霜核心击杀播报 1101001089 AKM积木龙骨击杀播报1101001103 AKM奇异之夜击杀播报 1101001116 AKM金牌海盗击杀播报 1101001143 AKM吉利龙王击杀播报 1101001128 AKM奇幻工坊击杀播报 1101001154 AKM部落之王击杀播报1101001174 AKM星海提督击杀播报 1101001213 AKM俏皮兔宝击杀播报 1101001231M16A4血风暴击杀播报1101002029 M16A4极光脉冲击杀播报 1101002056 M16A4缤纷利刃击杀播报 1101002068 M16A4猩红血月击杀播报 1101002081M16A4古堡龙卫击杀播报1101002103死噶梦幻水枪击杀播报 1101003057死噶魔法南瓜击杀播报1101003070死噶翌日行动击杀播报 1101003080 死噶诡秘之夜击杀播报 1101003099 死噶魔力结晶击杀播报 1101003119死噶邪能植物击杀播报 1101003146 死噶血魂魔皇击杀播报 1101003167M416冰霜核心击杀播报1101004046 M416愚人小丑击杀播报 1101004062M416异域游者击杀播报 1101004078 M416萌龙咆哮击杀播报1101004086M416野性呼唤击杀播报 1101004098 M416科技核心击杀播报 1101004138 M416潮鸣宫廷击杀播报 1101004163 M416庇护之潮击杀播报1101004209Groza幻夜音乐击杀播报1101005025 Groza绚烂之战1101005043 Groza冥河烈焰1101005052AUG流浪马戏团 1101006033 AUG第四使徒 1101006044 QBZ极致绝杀 1101007036 QBZ瑰绮灵姬1101007046 M762比特宝莉 1101008026妹控星云力量---频道 @KveinYYDS"},nil,{"number"}) if jr ~= nil then local t = {"libUE4.so:bss", "Cb"} local tt = {0x3A1D8,0x0,0x418,0x90,0x15B0} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = jr[1], freeze = true}}) end end, function() string.toMusic("无法关闭") end, close = function(self) end }, } _ENV['菜单4'] = { name = '网易云区', [1] = { name = '搜索歌曲',---8391694libil2cpp.so:bss+0x2E268+0xBB0+0x200+0x798+0x1A60 open = function(self) search = gg.prompt({ "输入要搜索的歌曲\n可加上歌手名字", "设置显示数量(数字)", },g.sel,{ "text", }) if not search then return end gg.saveVariable(search,g.config) bei() go1=search[1] go3=search[2] jg=start(go1,go3) if jg.code == 200 then fh=jg.content fh=json(fh) --print(fh) Play(gqlb,idb) else function inspect() gg.alert("访问网络异常,错误代码:\n\n"..jg.code) end if not pcall(inspect) then print("网络异常,请先连接上网络") os.exit() end end XGCK=-1 end, close = function(self) end }, [2] = { name = '停止播放', open = function(self) gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end, close = function(self) end }, [3] = { name = '悬溺', open = function(self) gg.playMusic("https://pan.880v.cn/view.php/c1581159849d2646b238e2dacb6a6f4b.mp3") end, close = function(self) end }, [4] = { name = '凄美地', open = function(self) gg.playMusic("https://link.hhtjim.com/163/436346833.mp3") end, close = function(self) end }, [5] = { name = '武家坡', open = function(self) gg.playMusic("https://link.hhtjim.com/163/1891431677.mp3") end, close = function(self) end }, [6] = { name = '向云端', open = function(self) gg.playMusic("https://link.hhtjim.com/163/2049512697.mp3") end, close = function(self) end }, [7] = { name ="广东爱情故事", open = function(self) gg.playMusic("http://music.163.com/song/media/outer/url?id=1989479877.mp3") end, close = function(self) end }, [8] = { name ="海阔天空", open = function(self) gg.playMusic("http://music.163.com/song/media/outer/url?id=1357374736.mp3") end, close = function(self) end }, [9] = { name ="必杀技", open = function(self) gg.playMusic('http://music.163.com/song/media/outer/url?id=1940086099.mp3') end, close = function(self) end }, [10] = { name = '大海', open = function(self) gg.playMusic("https://cccimg.com/down.php/f21a92c551b99b4440cd8e45dcb90e90.mp3") end, close = function(self) end }, } switch2(_ENV['菜单1'], _ENV['菜单2'], _ENV['菜单3'], _ENV['菜单4'])