---绘制需要全部写在这里否
--不是我泛滥的 我只是修复报错而已--倾城
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 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 SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k = 2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if (tostring(v.value) ~= tostring(num)) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast(""..yeqiu.."修改成功,共修改"..#data.."条数据") local t = {} local base = Search[1][2] for i = 1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) else gg.toast(""..yeqiu.."搜索0条数据,修改失败", false) return false end else gg.toast(""..yeqiu.."搜索0条数据,修改失败") return false end end
--so写法配置↓
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 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 XGBase(Address,AFV)
local address=0
for index,offset in ipairs(Address)do
if index==1 then
address=offset
else
address=gg.getValues({{address=address+offset,flags=4}})[1].value
end
end
local Value,Freeze={},{}
for index,value in ipairs(AFV)do
local VALUE={address=address+value[3],flags=value[2],value=value[1],freeze=true}
if value[4]then
Freeze[#Freeze+1]=VALUE
else
Value[#Value+1]=VALUE
end
end
gg.setValues(Value)
gg.addListItems(Freeze)
end
function Format(tab, format, value, type, Function)
if format == "查看" then
tab[1]["flags"] = type
return print(gg.getValues(tab))
elseif format == "修改" then
tab[1]["flags"] = type
tab[1]["value"] = value
return gg.setValues(tab)
elseif format == "冻结" then
tab[1]["flags"] = type
tab[1]["freeze"] = true
tab[1]["name"] = Function or "功能"
return gg.addListItems(tab)
elseif format == "加载" then
tab[1]["flags"] = type
return gg.loadResults(tab)
end
end
local ALL = [==[
v1.0 -> 优化指针链条判断
v1.1 -> 添加多功能模板,可查看,修改,冻结,载入
v1.3 -> 修复了同一个so名称下有多个基址头,而只判断第一个基址头偏移的问题点
v1.4 -> 修复了在64位环境下偏移异常的问题
]==]
function LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能
getRanges = getRanges or (function()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写
ranges[#ranges+1] = v
end
end
return ranges
end)
local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD
if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位
valtype = gg.TYPE_QWORD
end
for i in pairs(ranges) do
local _name = ranges[i]["internalName"]:gsub('^.*/', '')
if so[1] == _name and so[2] == ranges[i]["state"] then
sostart = ranges[i]["start"]
break
end
end
if sostart then
if offset[1] then
for i = 1, #offset do
rest = {{flags = valtype,address = sostart + offset[i]}}
rest = gg.getValues(rest)
if i == #offset then
break
end
if valtype == gg.TYPE_DWORD then
sostart = rest[1].value & 0xFFFFFFFF--对值进行补位操作
else
sostart = rest[1].value
end
end
end
print(rest)
if #rest == 1 then
end
return Format(rest, format, value, type, Function)
end
gg.toast("功能:" .. Function .. "开启失败")
print("功能开启失败原因: 未找到基址头")
return os.exit()
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 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 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
local function readD ( a )
return gg.getValues ( { {
address = a ,
flags = 4
} } ) [ 1 ].value
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 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 xfnb(add,lx)
return gg.getValues({
{
address=add,flags = lx
}
})[1].value
end
local function RUI(address)
return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value
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 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
local function RUI(address)
return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value
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"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 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) xgjg = true 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
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 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
--
local function Get_Address(N_So, Offset, ti_bit)
local ti = gg.getTargetInfo()
local S_list = getRanges()
local _Q = tonumber(0x269CDB36)
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
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("音乐配置"..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 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 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 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 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
string.toMusic('欢迎使用陆某某全防 注意看公告 祝用户稳定奔放')
check字体颜色=0xff000000
switch颜色=0xff0062FF
按钮颜色=0xffefefef
vibra = context:getSystemService(Context.VIBRATOR_SERVICE)
changan = {}
local changan = changan
local android = import('android.*')
function write(fileName, content)
file.write(fileName, content)
end
function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end
function checkimg(tmp)
if panduan("/sdcard/陆某某/图片/"..tmp) ~= true then
gg.toast("正在下载资源"..tmp.."\n请耐心等待")
download("http://yz.79ynb.xyz/"..tmp,"/sdcard/陆某某/图片/"..tmp)
else
if file.length("/sdcard/陆某某/图片/"..tmp) <= 1 then
gg.toast("正在下载资源"..jindu.."/"..#ckimg.."\n请耐心等待")
download("http://yz.79ynb.xyz/"..tmp,"/sdcard/陆某某/图片/"..tmp)
end
end
end
ckimg = {
"bm_launch",
"bm_ff",
"bm_gn",
"bm_mh",
"bm_sz",
"bm_music",
"quarkx",
"quarkconfb",
'sj','hsj',
}
for i = 1,#ckimg do
jindu = i
checkimg(ckimg[i])
end
YoYoImpl = luajava.getYoYoImpl()
file.getdirs("/sdcard/陆某某/zip/")
gg.checkimg=function(tmp)
for i=1,#tmp do
jd=i.."/"..#tmp
file.getdirs("/sdcard/陆某某/图片/zip/"..tmp[i][1].."/")
local url = 'https://chuxinya.top/f/'..tmp[i][2].."/"..tmp[i][1]
local path = "/sdcard/陆某某/zip/"..tmp[i][1]
local msg = '正在下载'..tmp[i][2]..',请稍后...' .. '\n目标路径->' .. path
if panduan(path) ~= true then
local ok, err = luajava.download(url, path, msg)
else
end
gg.toast("正在加载"..tmp[i][1].."资源\n目标进度:"..jd)
unzip("/sdcard/陆某某/zip/"..tmp[i][1],"/sdcard/陆某某/图片/"..tmp[i][1].."/")
gg.sleep(1000)
gg.toast(tmp[i][1].."资源已下载完成\n目标进度:"..jd)
end
end
tmp={
{"cow","jNJtR"--[[解压码必填下面的都一样]]},
{"king","gNMsG"},
{"JW2","kNju5"},
{"iOSPro","80BtY"},
{"opo","BjZh8"}
}
gg.checkimg(tmp)
function 获取图片(txt)
txt = string.url(txt,"de")
ntxt = string.sub(string.gsub(txt,"/","-"),-10,-1)
if string.find(tostring(txt),"http") ~= nil then
if panduan("/sdcard/长安/图片/"..ntxt) == false then
file.download(txt,"/sdcard/长安/图片/"..ntxt)
else
if file.length("/sdcard/长安/图片/"..ntxt) <= 1 then
file.download(txt,"/sdcard/长安/图片/"..ntxt)
end
end
txt = "/sdcard/长安/图片/"..ntxt
end
return luajava.getBitmapDrawable(txt)
end
function getRes(x)
return 获取图片("/sdcard/长安/图片/"..x)
end
function getVerticalBG(gtvb1,gtvb3,gtvb4,gtvb5)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)
return jianbians
end
function getHorizontalBG(gtvb1,gtvb3,gtvb4,gtvb5)
if not gtvb4 then gtvb4 = 0 gtvb5 = 0xff000000 end
local jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(gtvb3)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(gtvb1)
jianbians:setStroke(gtvb4,gtvb5)--边框宽度和颜色
return jianbians
end
context = app.context
window = context:getSystemService("window") -- 获取窗口管理器
function getLayoutParams()
LayoutParams = WindowManager.LayoutParams
layoutParams = luajava.new(LayoutParams)
if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式
layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY
else
layoutParams.type = LayoutParams.TYPE_PHONE
end
layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景
layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish
layoutParams.gravity = Gravity.TOP|Gravity.LEFT -- 重力设置
layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度
layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度
return layoutParams
end
function getj7()
jianbian6 = luajava.new(GradientDrawable)
jianbian6:setCornerRadius(20)
jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbian6:setColors({
0x002F3032,0x002F3032
})
jianbian6:setStroke(3,"0xff0091FE")--边框宽度和颜色
return jianbian6
end
slctb = getVerticalBG({0xffefefef,0xffefefef},10)
slcta = getHorizontalBG({0xff0077ff,0xff975DFF},10)
slctc = luajava.loadlayout {
GradientDrawable,
color = "#11ffffff",
cornerRadius = 8
}
slctd = luajava.loadlayout {
GradientDrawable,
color = "#55ffffff",
cornerRadius = 8
}
slcte = luajava.loadlayout {
GradientDrawable,
color = "#11ffffff",
cornerRadius = 12
}
slctf = luajava.loadlayout {
GradientDrawable,
color = "#aa1E1C27",
cornerRadius = 12
}
function getButtonBG()
local selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, getVerticalBG({0xffd7d7d7,0xffd7d7d7},15))
selector:addState({
-android.R.attr.state_pressed
}, getVerticalBG({按钮颜色,按钮颜色},15))
return selector
end
function getSelector3()
selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, luajava.loadlayout {
GradientDrawable,
color = "#b9b9b9",
cornerRadius = 10
}) -- 点击时候的背景
selector:addState({
-android.R.attr.state_pressed
}, luajava.loadlayout {
GradientDrawable,
color = "#ffffff",
cornerRadius = 10
}) -- 没点击的背景
return selector
end
function getSelector()
selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, slcta) -- 点击时候的背景
selector:addState({
-android.R.attr.state_pressed
}, slctb) -- 没点击的背景
return selector
end
hanshu = function(v, event)
local Action = event:getAction()
if Action == MotionEvent.ACTION_DOWN then
isMove = false
RawX = event:getRawX()
RawY = event:getRawY()
x = mainLayoutParams.x
y = mainLayoutParams.y
elseif Action == MotionEvent.ACTION_MOVE then
isMove = true
mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX)
mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY)
window:updateViewLayout(floatWindow, mainLayoutParams)
end
end
function getSelector2()
selector = luajava.getStateListDrawable()
selector:addState({
android.R.attr.state_pressed
}, slctd) -- 点击时候的背景
selector:addState({
-android.R.attr.state_pressed
}, slctc) -- 没点击的背景
return selector
end
jianbian = luajava.new(GradientDrawable)
jianbian:setCornerRadius(30)
jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbian2 = luajava.new(GradientDrawable)
jianbian2:setCornerRadius(30)
jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT)
function 获取图片(txt)
--gg.toast("正在加载资源...")
txt = file.checkUrl(txt)
return luajava.getBitmapDrawable(txt)
end
local isswitch
YoYoImpl = luajava.getYoYoImpl()
changan.menu = function(sview)
if isswitch then
return false
end
beij=bglist[1]
isswitch = true
cebian = {
LinearLayout,
layout_height = "match_parent",
layout_width = "wrap_content",
orientation = "horizontal",
gravity = "center",
orientation='vertical',
}
for i = 1,#stab do
cebian[#cebian+1] = {
LinearLayout,
id = "jm"..i,
gravity="center",
layout_height = "wrap_content",
layout_width = "wrap_content",
layout_marginTop = "3dp",
layout_marginBottom = "6dp",
layout_marginRight = "3dp",
layout_marginLeft = "3dp",
elevation='2dp',
onClick = function() 切换(i) end,
orientation='vertical',
{ImageView,
id="jmp"..i,
layout_height='20dp',
layout_width='20dp',
src=获取图片(stab[i][2]),
colorFilter=0xffd7d7d7,
},
{
TextView,
text = stab[i][1],
id="jmt"..i,
gravity = "center",
textSize = "12sp",
textColor = "#"..颜色2,
layout_height = "wrap_content",
layout_width = "68dp",
}}
end
cebian = luajava.loadlayout(
{
ScrollView,
layout_height = "wrap_content",
layout_width = "wrap_content",
cebian
})
for i = 1,#stab do
_ENV["layout"..i] = luajava.loadlayout({
LinearLayout,
layout_width = "fill_parent",
layout_height = "200dp",
visibility = "gone",
orientation = "vertical",
background={
GradientDrawable,
color = "#33ffffff",
cornerRadius = 20
},
{
ScrollView,
fillViewport = "true",
--padding = "10dp",
gravity = "center",
layout_width = "250dp",
layout_height = "200dp",
orientation = "horizontal",
{
LinearLayout,
id = "layoutm"..i,
layout_marginRight = "5dp",
layout_marginLeft = "5dp",
layout_width = "240dp",
orientation = "vertical",
gravity = "center_horizontal",
}
}})
end
ckou = {
LinearLayout,
layout_width = "wrap_content",
layout_height = "wrap_content",
cebian,
{
LinearLayout,
layout_marginBottom = "1dp",
layout_marginTop = "1dp",
layout_width = "2dp",
layout_height = "match_parent",
background = "#D7D7D7"
}
}
for i = 1,#stab do
ckou[#ckou+1] = _ENV["layout"..i]
end
ckou = luajava.loadlayout(ckou)
floatWindow = {
FrameLayout,
id = "motion",
elevation = "10dp",
onTouch = hanshu,
onClick = function() end,
layout_width = "wrap_content",
orientation = "vertical",
gravity = "center_vertical",
layout_height = "wrap_content",
{LinearLayout,
orientation='vertical',
id='chuangk',
visibility='gone',
{--顶部栏
FrameLayout,
orientation = "horizontal",
padding = "2dp",
layout_width="fill_parent",
{
ImageView,
layout_gravity="center_vertical|left",
src = 获取图片(xfcpic),
id = "titlebar",
layout_marginLeft='2dp',
elevation='2dp',
layout_marginRight='2dp',
layout_marginTop='2dp',
layout_marginBottom='2dp',
background=getVerticalBG({0xffefefef,0xffefefef},12),
padding="2dp",
--visibility = "gone",
layout_width = "24dp",
layout_height = "24dp",
gravity = "center",
onClick = 隐藏,
onTouch = hanshu,
},{TextView,
textSize="14sp",
text=titlet,
textColor="#323232",
gravity="center",
layout_marginLeft='20dp',
layout_gravity="center",
layout_width="match_parent",
layout_height="match_parent",
},{ImageView,
layout_width='24dp',
layout_height='24dp',
layout_gravity='center_vertical',
src=getRes('skin'),
padding='5dp',
layout_marginLeft='44dp',
onClick=changebg,
layout_marginRight='2dp',
layout_marginTop='2dp',
layout_marginBottom='2dp',
background=getVerticalBG({0xffefefef,0xffefefef},12),
elevation='2dp'
},{
LinearLayout,
layout_gravity="center_vertical|right",
padding={"2dp","2dp","8dp","2dp"},
layout_marginLeft='2dp',
layout_marginRight='2dp',
layout_marginTop='2dp',
layout_marginBottom='2dp',
layout_width = "40dp",
layout_height = "24dp",
gravity = "center",
onClick = 隐藏,
onTouch = hanshu,
{LinearLayout,
layout_width='6dp',
layout_height='6dp',
background=getVerticalBG({0xffFFC03C,0xffFFC03C},360),
layout_marginLeft='2dp',
layout_marginRight='2dp'
},{LinearLayout,
layout_width='6dp',
layout_height='6dp',
background=getVerticalBG({0xff36CC56,0xff36CC56},360),
layout_marginLeft='2dp',
layout_marginRight='2dp'
},{LinearLayout,
layout_width='6dp',
layout_height='6dp',
background=getVerticalBG({0xffFF3E44,0xffFF3E44},360),
layout_marginLeft='2dp',
layout_marginRight='2dp'
},
}
},
ckou,
},{ScrollView,
id='ggscro',
layout_marginTop='236dp',
layout_marginLeft='82dp',
layout_height='60dp',
layout_width='235dp',
layout_margin='3dp',
elevation='2dp',
padding='4dp',
background=getVerticalBG({0xffefefef,0xffefefef},12),
{LinearLayout,
id='gggscro',
orientation='vertical',
layout_width='match_parent',
layout_height='wrap_content',
}
},{
ImageView,
id = "control",
background = 获取图片(xfcpic),
layout_width = "40dp",
layout_height = "40dp",
onTouch = hanshu,
onClick = 隐藏,
}
}
local function invoke()
local ok
local RawX, RawY, x, y
mainLayoutParams = getLayoutParams()
floatWindow = luajava.loadlayout(floatWindow)
local function invoke2()
for k = 1,#stab do
for i = 1,#sview[k] do
_ENV["layoutm"..k]:addView(sview[k][i])
end
end
window:addView(floatWindow, mainLayoutParams)
block('end')
end
切换(1)
local runnable = luajava.getRunnable(invoke2)
local handler = luajava.getHandler()
handler:post(runnable)
block('join')
local isMove
end
invoke(swib1,swib2)
隐藏()
gg.setVisible(false)
luajava.setFloatingWindowHide(true)
qhkai = 0
qiehuan = function()
if qhkai == 0 then
qhkai = 1
draw.remove()
luajava.runUiThread(function()
changan.controlSmall(floatWindow,400)
end)
gg.sleep(400)
luajava.runUiThread(function()
floatWindow:setVisibility(View.GONE)
end)
else
qhkai = 0
huiz()
draw.text('.', -9200,-9200)
luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) end)
luajava.runUiThread(function()
changan.controlBig(floatWindow,400)
end)
end
end
huiz()
draw.text('.', -9200,-9200)
隐藏()隐藏()
while true do
if tuichu == 1 then break end
jianting3(qiehuan)
gg.sleep(300)
end
luajava.setFloatingWindowHide(false)
end
changan.controlRotation9 = function(control, time,t)
luajava.runUiThread(function()
import "android.view.animation.Animation"
import "android.animation.ObjectAnimator"
xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotation", {
time,t
})
xuanzhuandonghua:setRepeatCount(0)
xuanzhuandonghua:setRepeatMode(Animation.RESTART)
xuanzhuandonghua:setDuration(400)
xuanzhuandonghua:start()
end)
end
function uiadtext(txt,color,size)
if not txt then txt = "" end
if not color then color = "#000000" end
if not size then size = "10sp" end
local tmp=luajava.loadlayout(
{
TextView,
text = string.fromHtml(" "..getTimeStamp(os.time()).." "..txt..""),
textSize = size,
--textColor = color,
gravity="left",
layout_width = "wrap_content",
})
luajava.post(function()
gggscro:addView(tmp)
end)
luajava.newThread(function()
gg.sleep(100)
luajava.post(function()
ggscro:fullScroll(View.FOCUS_DOWN)
end)
end):start()
end
function getTimeStamp(t)
local str = os.date("%m-%d %H:%M:%S",t)
return str
end
function addadView(tmp)
local function invoke()
parentv:addView(tmp)
end
luajava.post(invoke)
end
function rmdadView(tmp)
local function invoke()
parentv:removeView(tmp)
end
luajava.post(invoke)
end
function visi (tid , ttid)
vibra:vibrate(4)
local tview = luajava.getIdValue (tid)
local ttview = luajava.getIdValue (ttid)
if not tview then
return 0
end
if tonumber (tostring (tview : getVisibility ())) == 8.0 then
tview : setVisibility (View.VISIBLE)
YoYoImpl:with("FadeIn"):duration(200):playOn(boxes[tid])
changan.controlRotation9(boxpic[tid],0,90)
else
tview : setVisibility (View.GONE)
changan.controlWater (_ENV [tid.."6"] , 200)
changan.controlRotation9(boxpic[tid],90,0)
end
end
boxes = {} boxpic = {}
function changan.box (views)
local tid = "box"..guid ()
boxpic[tid] = luajava.loadlayout {
ImageView ,
background = getRes("hei_right"),
layout_width = "24dp" ,
layout_height = "24dp" ,
}
local ttid = tid.."6"
local t1id = guid ()
firadio = {
LinearLayout ,
layout_width = 'fill_parent' ,
layout_height = "wrap_content" ,
layout_marginTop = "2dp" ,
layout_marginBottom = "2dp" ,
orientation = "vertical" ,
}
if type (views [1]) == "string" or type (views [1]) == "number" then
firadio [# firadio + 1] = {
LinearLayout ,
layout_width = 'fill_parent' ,
layout_height = "40dp" ,
gravity = "center_vertical" ,
layout_marginTop = "2dp" ,
layout_marginLeft='2dp',
layout_marginRight='2dp',
elevation='2dp',
layout_marginBottom = "4dp" ,
onClick = function ()
visi (tid , ttid)
end
,
background = getButtonBG(),
{
TextView , text = views [1] ,
textSize = "13sp" ,
layout_marginLeft = "15dp" ,
layout_width = "match_parent" ,
layout_weight=1,
textColor = "#000000" ,
gravity = "left" ,
},{
LinearLayout ,
padding={"0dp","0dp","10dp","0dp"},
layout_width = "30dp" ,
layout_height = "30dp" ,
gravity = "center",
boxpic[tid],
}
} else
gg.alert ("changan.box的table内第一个元素必须是string") os.exit ()
end
radios = {
LinearLayout ,
layout_marginLeft = "0dp" ,
layout_marginRight = "0dp" ,
orientation = "vertical" ,
visibility = "gone" ,
id = luajava.newId (tid) ,
padding = "0dp" ,
layout_width = 'fill_parent' ,
}
for i = 2 , # views do
radios [# radios + 1] = views [i]
end
boxes[tid] = luajava.loadlayout(radios)
firadio [# firadio + 1] = boxes[tid]
_ENV [t1id] = luajava.loadlayout (firadio)
return _ENV [t1id]
end
corbk = true
当前ui = 1
function 切换(x)
当前ui = x
luajava.runUiThread(function()
for i = 1,#stab do
_ENV["jmt"..i]:setTextColor(0xff000000)
_ENV["jmp"..i]:setColorFilter(0xffd7d7d7)
_ENV["layout"..i]:setVisibility(View.GONE)
end
_ENV["jmt"..当前ui]:setTextColor(0xff0062FF)
_ENV["jmp"..当前ui]:setColorFilter(0xff0062FF)
_ENV["layout"..当前ui]:setVisibility(View.VISIBLE)
--YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui])
end)
end
显示 = 0
beij2 = luajava.loadlayout({
GradientDrawable,
color = "#001E1C27",
cornerRadius = 10
})
nowbg=1
function changebg()
luajava.runUiThread(function()
if nowbg<#bglist then
nowbg=nowbg+1
else
nowbg=1
end
beij=bglist[nowbg]
floatWindow:setBackground(beij)
YoYoImpl:with("FadeIn"):duration(600):playOn(floatWindow)
end)
end
function getcolor(cl)
cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5))
if cl[1] > 255 then cl[1] = "0xff" else
cl[1] = "0x"..string.format("%x",cl[1]) end
for i = 1,3 do
cl[i+1] = string.format("%x",cl[i+1])
if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end
end
cl = cl[1]..cl[2]..cl[3]..cl[4]
return cl
end
function getrgb(cl)
if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end
cl = {
tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))}
return cl
end
显示 = 0
function 隐藏()
luajava.runUiThread(function()
if tonumber(tostring(chuangk:getVisibility())) == 8.0 then
control:setVisibility(View.GONE)
显示 = 1
ggscro:setVisibility(View.VISIBLE)
chuangk:setVisibility(View.VISIBLE)
_ENV["layout"..当前ui]:setVisibility(View.VISIBLE)
changan.controlBig(floatWindow,500)
floatWindow:setBackground(beij)
else
ggscro:setVisibility(View.GONE)
chuangk:setVisibility(View.GONE)
floatWindow:setBackground(beij2)
control:setVisibility(View.VISIBLE) 显示 = 0
_ENV["layout"..当前ui]:setVisibility(View.GONE)
end
end)
end
import("android.media.AudioManager")
audi = context:getSystemService("audio")
audiotype = {
AudioManager.STREAM_ALARM, --手机闹铃的声音
AudioManager.STREAM_MUSIC, --手机音乐的声音
AudioManager.STREAM_NOTIFICATION, --系统提示的通知
AudioManager.STREAM_RING, --电话铃声的声音
AudioManager.STREAM_SYSTEM, --手机系统的声音
AudioManager.STREAM_VOICE_CALL, --语音电话的声音
AudioManager.STREAM_DTMF, --DTMF音调的声音
}
yinl = {}
for i = 1,#audiotype do
yinl[i] = {}
yinl[i].type = audiotype[i]
yinl[i].min = audi:getStreamMinVolume(audiotype[i])
yinl[i].max = audi:getStreamMaxVolume(audiotype[i])
yinl[i].now = audi:getStreamVolume(audiotype[i])
end
function jianting2()
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].min = audi:getStreamMinVolume(audiotype[i])
yinln[i].max = audi:getStreamMaxVolume(audiotype[i])
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now > yinl[i].now then
audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0)
gg.alert("up")
elseif yinln[i].now < yinl[i].now then
audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_RAISE,0)
gg.alert("down\n"..yinln[i].now.."\n"..yinl[i].now)
end
end
end
yltype = 0
function jianting3(func)
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now > yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 1 then
yltype = 0
func()
end
elseif yinln[i].now < yinl[i].now then
yinl[i].now = yinln[i].now
if yltype == 0 then
yltype = 1
func()
end
end
end
end
function jianting(func)
yinln = {}
for i = 1,#audiotype do
yinln[i] = {}
yinln[i].type = audiotype[i]
yinln[i].now = audi:getStreamVolume(audiotype[i])
if yinln[i].now >= yinl[i].max then
audi:adjustStreamVolume(yinln[i].type,AudioManager.ADJUST_LOWER,0)
end
if yinln[i].now > yinl[i].now then
audi:setStreamVolume(yinln[i].type,yinl[i].now,0)
func()
end
end
end
function guid()
seed = {
'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
}
tb = {}
for i = 1,32 do
table.insert(tb,seed[math.random(1,16)])
end
sid = table.concat(tb)
return string.format('%s%s%s%s%s',
string.sub(sid,1,8),
string.sub(sid,10,12),
string.sub(sid,21,22))
..string.format('%s%s%s%s%s',
string.sub(sid,1,6),
string.sub(sid,21,25)
)
end
local function exit()
tuichu = 1
luajava.setFloatingWindowHide(false)
luajava.post(function()
window:removeView(floatWindow)
end)
end
setExitEvent(exit)
changan.controlWater = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX", {
1, 0.8, 0.9, 1
}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY", {
1,0.8,0.9,1
}):setDuration(time):start()
end) end
changan.controlSmall = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX", {
1, 0.7, 0.4, 0
}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY", {
1, 0.7, 0.4, 0
}):setDuration(time):start()
end) end
changan.controlBig = function(control,time)
luajava.runUiThread(function()
import "android.animation.ObjectAnimator"
ObjectAnimator():ofFloat(control,"scaleX", {
0, 0.4, 0.7, 1
}):setDuration(time):start()
ObjectAnimator():ofFloat(control,"scaleY", {
0, 0.4, 0.7, 1
}):setDuration(time):start()
end) end
function 开关3(name,func1,func2,nid)
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = function() end end
if func2 == nil then func2 = function() end end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
luajava.runUiThread(function()
changan.controlWater(_ENV[nid],200)
luajava.getIdValue(nid):setBackground(check2)
luajava.getIdValue(nid.."k"):setVisibility(View.GONE)
luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE)
end)
_ENV[name] = "开"
vibra:vibrate(6)
pcall(func1)
uiadtext(localname.." 已开启.","#161616")
else
luajava.runUiThread(function()
changan.controlWater(_ENV[nid],200)
luajava.getIdValue(nid):setBackground(check1)
luajava.getIdValue(nid.."g"):setVisibility(View.GONE)
luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE)
end)
_ENV[name] = "关"
vibra:vibrate(6)
pcall(func2)
uiadtext(localname.." 已关闭.","#545454")
end
end
end
end
function getShape3()
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(20)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors({
0x55FF9DBC,0x55FF9DBC
})
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(8,0xaa80C3F9)--边框宽度和颜色
return jianbians
end
function getShape(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(8,tmp3)--边框宽度和颜色
return jianbians
end
function getShape2(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(15,tmp3)--边框宽度和颜色
return jianbians
end
function getShape0(tmp0,tmp1,tmp2,tmp3)
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(tmp0)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors(tmp1)
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(30,tmp3)--边框宽度和颜色
return jianbians
end
checkbg1 = getRes("quarkcheckoff")
checkbg2 = getRes("quarkcheckon")
switchs={}
function changan.intcheck(name,func1,func2)
nid = name..guid()
local func = 开关5(name,func1,func2,nid)
if not name then name = "未设置" end
switchs[nid] = {
LinearLayout,
layout_width = 'match_parent',
layout_weight=1,
layout_height = "42dp",
layout_marginTop = "1dp",
layout_marginBottom = "1dp",
padding = "1dp",
{
LinearLayout,
padding="3dp",
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "center_vertical",
--background=getVerticalBG({0xffFFFDF2,0xddffffff,0xffFFFDF2},15,8,0xffFFDA71),
{
FrameLayout,
id = luajava.newId(nid),
background = checkbg1,
layout_width = '32dp',
layout_height = '32dp',
padding = "0dp",
},{
TextView,
id=luajava.newId(nid.."t"),
gravity = "left",
text = name,
textColor=check字体颜色,
textSize = "14sp",
--layout_marginLeft="8dp",
layout_width = 'match_parent',
layout_weight=1,
},
}
}
return switchs[nid]
end
function 开关5(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid):setBackground(checkbg2)
luajava.getIdValue(nid.."t"):setTextColor(switch颜色)
--changan.controlWater(switchs[nid],300)
end)
_ENV[name] = "开"
pcall(func1)
uiadtext(localname.." 已开启.","#161616")
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid):setBackground(checkbg1)
luajava.getIdValue(nid.."t"):setTextColor(0xff232323)
--changan.controlWater(switchs[nid],300)
end)
_ENV[name] = "关"
pcall(func2)
uiadtext(localname.." 已关闭.","#545454")
end
end
end
end
function changan.check(cklist)
if #cklist==0 then return nil end
local rest = {
LinearLayout,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "center",
orientation="vertical",
}
for i = 1, #cklist,2 do
local tempTable = {LinearLayout,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "left",
orientation="horizontal"
}
for j = 0, 1 do
if cklist[i + j] ~= nil then
local name = cklist[i + j][1]
local func1 = cklist[i + j][2]
local func2 = cklist[i + j][3]
if not name then name = "未设置" end
rstt = changan.intcheck(name,func1,func2)
table.insert(tempTable, rstt)
else
table.insert(tempTable, {LinearLayout,
layout_width = 'match_parent',
layout_weight=1,})
end
end
table.insert(rest, tempTable)
end
return luajava.loadlayout(rest)
end
switches = {}
function 开关3(name,func1,func2,nid)
local sname = nid
local localname=name
name = name..guid()
_ENV[name] = "关"
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
local outfunc=function()
namers = _ENV[name]
if namers ~= "开" then
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."k"):setVisibility(View.GONE)
YoYoImpl:with("ZoomInLeft"):duration(600):playOn(switches["2s"..sname])
luajava.getIdValue(nid.."g"):setVisibility(View.VISIBLE)
luajava.getIdValue(nid):setBackground(checkbg)
end)
_ENV[name] = "开"
pcall(func1)
uiadtext(localname.." 已开启.","#161616")
else
vibra:vibrate(9)
luajava.runUiThread(function()
luajava.getIdValue(nid.."g"):setVisibility(View.GONE)
YoYoImpl:with("ZoomInRight"):duration(600):playOn(switches["1s"..sname])
luajava.getIdValue(nid.."k"):setVisibility(View.VISIBLE)
luajava.getIdValue(nid):setBackground(checkbga)
end)
_ENV[name] = "关"
pcall(func2)
uiadtext(localname.." 已关闭.","#545454")
end
end
if localname=="摇一摇隐藏UI" then yyfunc=outfunc end
if localname=="音量键隐藏UI" then ylfunc=outfunc end
return outfunc
end
end
function changan.switch(name,func1,func2,miaoshu)
if not checkbg then
checkbg = getShape2(
45,
{
switch颜色,switch颜色
},
4,switch颜色)
checkbg0 = getShape2(
45,
{
0xff232323,0xff232323
},
4,0x00ffffff)
checkbga = getShape2(
45,
{
0xffE6E6E6,0xffE6E6E6
},
4,0xffE6E6E6)
switchbg1 = getShape(
45,
{
0xffffffff,0xffffffff
},
4,0xffffffff)
switchbg2 = luajava.loadlayout {
GradientDrawable ,
color = "#ffffff" ,
cornerRadius = 360
}
end
nid = name..guid()
local func = 开关3(name,func1,func2,nid)
if not name then name = "未设置" end
switches["1s"..nid] = luajava.loadlayout {
FrameLayout,
layout_width = '40dp',
layout_height = '20dp',
gravity = "center_vertical",
padding = {
"1dp","0dp","1dp","0dp"
},
{
LinearLayout,
layout_gravity = "left|center_vertical",
id = luajava.newId(nid.."k"),
background = switchbg1,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '17dp',
layout_height = '17dp',
},
}
switches["2s"..nid] = luajava.loadlayout {
FrameLayout,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '40dp',
layout_height = '20dp',
gravity = "center_vertical",
padding = {
"1dp","0dp","1dp","0dp"
}
, {
LinearLayout,
visibility = "gone",
layout_gravity = "right|center_vertical",
id = luajava.newId(nid.."g"),
background = switchbg2,
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = '17dp',
layout_height = '17dp',
}
}
rest = luajava.loadlayout({
LinearLayout,
layout_width = 'fill_parent',
layout_height = "wrap_content",
gravity = "center_vertical",
{
LinearLayout,
layout_width = 'fill_parent',
layout_height = "40dp",
gravity = "center_vertical",
layout_marginLeft='2dp',
layout_marginRight='2dp',
layout_marginTop='2dp',
layout_marginBottom='2dp',
elevation='2dp',
background = luajava.loadlayout {
GradientDrawable ,
color = 按钮颜色 ,
cornerRadius = 12
} ,padding = {
"0dp","0dp","6dp","0dp"
},
{
TextView,
gravity = "top",
text = name,
textColor = "#000000",
textSize = "13sp",
layout_weight = 1,
layout_width = '80dp',
layout_marginLeft = "10dp",
layout_marginRight = "20dp",
},
{
TextView,
gravity = "center",
layout_height = "match_parent",
text = miaoshu,
textSize = "11sp",
layout_width = "wrap_content",
layout_marginLeft = "-50dp",
layout_weight = 1,
textColor = "#A5A5A5",
},
{
FrameLayout,
id=luajava.newId(nid),
background = checkbga,
elevation = "1dp",
onClick = function() luajava.newThread(function() func() end):start() end,
layout_width = 'wrap_content',
layout_height = 'wrap_content',
gravity = "left",
padding="1dp",
switches["1s"..nid],switches["2s"..nid]
}}
})
return rest
end
function initbg()
jianbians = luajava.new(GradientDrawable)
jianbians:setCornerRadius(10)
jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT)
jianbians:setColors({
--0x00444444,0x00ffffff
0xffffffff,0xffffffff
})
jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT)
jianbians:setStroke(0,0xff000000)--边框宽度和颜色
return jianbians
end
buts={}
heir=getRes("heir")
function changan.button(txt,func,txtc)
if not txt then txt = "未设置" end
if not txtc then txtc="#000000" end
local tid="Cbutton"..guid()
buts[tid]=luajava.loadlayout(
{
LinearLayout,
layout_width = 'match_parent',
layout_height = "wrap_content", {
LinearLayout,
layout_width = "fill_parent",
gravity = "center_vertical",
layout_marginTop = "5dp",
layout_marginBottom = "5dp",
layout_marginLeft='3dp',
layout_marginRight='3dp',
elevation='2dp',
background = getButtonBG(),
padding="10dp",
onClick = function()
changan.controlWater(buts[tid],300)
uiadtext('执行 '..txt,"#161616")
luajava.newThread(func):start() end,
{
TextView,
--id = luajava.newId(tid),
textColor = txtc,
text = txt,
textSize = "13sp",
layout_height = "wrap_content",
layout_width = "fill_parent",
layout_weight=1,
},{ImageView,
src=heir,
layout_height="14dp",
layout_width="14dp",
}
}})
return buts[tid]
end
function changan.text(txt,color,size)
if not txt then txt = "未设置文字" end
if not color then color = "#"..颜色2 end
if not size then size = "18sp" end
return luajava.loadlayout(
{
TextView,
text = txt,
textSize = size,
textColor = color,
layout_width = "wrap_content",
})
end
function 开关(name,func1,func2)
if func1 == nil then func1 = function() end end
if func2 == nil then func2 = function() end end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
_ENV[name] = "开"
pcall(func1)
uiadtext(name.." 已开启.","#161616")
else
_ENV[name] = "关"
pcall(func2)
uiadtext(name.." 已关闭.","#545454")
end
end
end
end
颜色1 = "80C3F9"
颜色2 = "545454"
function 开关2(name,func1,func2,nid)
if func1 == nil then func1 = "" end
if func2 == nil then func2 = "" end
if type(func1) == "function" then
return function()
namers = _ENV[name]
if namers ~= "开" then
luajava.runUiThread(function()
luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/长安/图片/check2"))
end)
_ENV[name] = "开"
func1()
uiadtext(name.." 已开启.","#161616")
else
luajava.runUiThread(function()
luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/长安/图片/check1"))
end)
_ENV[name] = "关"
func2()
uiadtext(name.." 已关闭.","#545454")
end
end
end
end
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
local function readD (a)
return gg.getValues ( {
{
address = a ,
flags = 4
}
}) [1].value
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 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 xfnb(add,lx)
return gg.getValues({
{
address = add,flags = lx
}
})[1].value
end
------------------------------
------------------------------
local function RUI(address)
return gg.getValues({{
address = address, flags = gg.TYPE_QWORD
}})[1].value
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 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
local function RUI(address)
return gg.getValues({{
address = address, flags = gg.TYPE_QWORD
}})[1].value
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 & 0xBAE0FFFF
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 LSQ_Chain(so, offset, format, value, type, Function)--模块设置, 偏移量, 功能参数, 修改值, 类型, 功能
getRanges = getRanges or (function()
local ranges = {}
local t = gg.getRangesList('^/data/*.so*$')
for i, v in pairs(t) do
if v["type"]:sub(2, 2) == 'w' then--判断so是否可读可写
ranges[#ranges+1] = v
end
end
return ranges
end)
local rest, ranges, sostart, valtype = {}, getRanges(), nil , gg.TYPE_DWORD
if gg.getTargetInfo()["x64"] then--判断应用程序是否为64位
valtype = gg.TYPE_QWORD
end
------------------------------
------------------------------
for i in pairs(ranges) do
local _name = ranges[i]["internalName"]:gsub('^.*/', '')
if so[1] == _name and so[2] == ranges[i]["state"] then
sostart = ranges[i]["start"]
break
end
end
------------------------------
------------------------------
if sostart then
if offset[1] then
for i = 1, #offset do
rest = {{
flags = valtype,address = sostart + offset[i]}}
rest = gg.getValues(rest)
if i == #offset then
break
end
if valtype == gg.TYPE_DWORD then
sostart = rest[1].value & 0xBAE0FFFF--对值进行补位操作
else
sostart = rest[1].value
end
end
end
print(rest)
if #rest == 1 then
end
return Format(rest, format, value, type, Function)
end
gg.toast("功能:" .. Function .. "开启失败")
print("功能开启失败原因: 未找到静态头")
return os.exit()
end
------------------------------
------------------------------
function Format(tab, format, value, type, Function)
if format == "查看" then
tab[1]["flags"] = type
return print(gg.getValues(tab))
elseif format == "修改" then
tab[1]["flags"] = type
tab[1]["value"] = value
return gg.setValues(tab)
elseif format == "冻结" then
tab[1]["flags"] = type
tab[1]["freeze"] = true
tab[1]["name"] = Function or "功能"
return gg.addListItems(tab)
elseif format == "加载" then
tab[1]["flags"] = type
return gg.loadResults(tab)
end
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"] gg.setValues({[1] = {
address = xgpy, flags = xglx, value = xgsz
}}) xgsl = xgsl + 1 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) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end 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 read(address, flags)
local tt = {}
tt[1] = {}
tt[1].address = address
tt[1].flags = flags
filzer = gg.getValues(tt)[1].value
return filzer
end
function getbase(address)
local tt = {}
tt[1] = {}
tt[1].address = address
tt[1].flags = 32
filzer = gg.getValues(tt)[1].value
return filzer
end
------------------------------
------------------------------
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("音乐配置"..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 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.toast("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end
function zjson(jsonr)
local str = jsonr 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 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 & 0xBAE0FFFF 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('修改地址数值(地址,数值类型,要65536)') 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
------------------------------
------------------------------
--仿SX写法配置
------------------------------
------------------------------
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 & 0xBAE0FFFF 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
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
------------------------------
------------------------------
-- 读取内存地址的函数
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
function getRanges()
local ranges = {}
local t = gg.getRangesList('^/dev/kgsl-3d0*$')
for i, v in pairs(t) do
if v.type:sub(4, 4) == 's' then
table.insert(ranges, v)
end
end
return ranges
end
local function readD(a)
return gg.getValues({{
address = a,
flags = gg.TYPE_DWORD
}})[1].value
end
local function readF(a)
return gg.getValues({{
address = a,
flags = gg.TYPE_FLOAT
}})[1].value
end
------------------------------
------------------------------
function setvalue(address,flags,value)
local t = {}
t[1] = {}
t[1].address = address
t[1].flags = flags
t[1].value = value
gg.setValues(t)
gg.addListItems(t)
end
------------------------------
------------------------------
function _V(add,value1,flag,value2)
local num = 0;ednum = 0
if flag == gg.TYPE_DWORD then
readV = readD
elseif flag == gg.TYPE_FLOAT then
readV = readF
else
os.exit("不支持的类型")
end
local S_list = getRanges()
for i in pairs(S_list) do
num = num+1
addr = S_list[i].start+add
if readV(addr) == value1 then
setvalue(addr,flag,value2)
ednum = ednum+1
end
end
return "遍历了"..num.."个地址\n".."修改了"..ednum.."个地址"
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 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
bglist={
getHorizontalBG({0xffe9e9e9,0xffe9e9e9},12),
getHorizontalBG({0xff7F58FF,0xff2964FF,0xff5399FF},12),
getHorizontalBG({0xaaffffff,0xaaffffff},12,3,0xaa232323),
}
function huiz()---绘制必须放在这里面
draw.text('陆某某全防',200,275)draw.setColor('#00ffff')
draw.setSize(45)draw.setStyle('描边并填充')
end
titlet="陆某某全防"
stitle = "陆某某"
stab={
{"公告","/sdcard/陆某某/图片/bm_launch"},
{"防封","/sdcard/陆某某/图片/bm_ff"},
{"功能","/sdcard/陆某某/图片/bm_gn"},
{"美化","/sdcard/陆某某/图片/bm_mh"},
{"音乐","/sdcard/陆某某/图片/bm_music"},
{"设置","/sdcard/陆某某/图片/bm_sz"},
}
xfcpic = "https://cccimg.com/down.php/ee349817e3052d8a03d50b4d97435c91.jpg"
--悬浮窗链接或路径
---公告
changan.menu(
{
{--1
changan.button("公告", function()
string.toMusic("注意上分要演戏 功能少开 尽量少开危险功能 防封可单开或者尝试搭配 自行拿小白号测试 每台机型不一样 所以稳定性也不一样 高风险和安全期与防封无关 祝你稳定奔放 ")
gg.alert("注意上分要演戏 功能少开 尽量少开危险功能 防封可单开或者尝试搭配 自行拿小白号测试 每台机型不一样 所以稳定性也不一样 高风险和安全期与防封无关 祝你稳定奔放")
end),
changan.button("每日语录",function()
Y=gg.makeRequest("https://v1.hitokoto.cn/").content
--获取云端数据
Q=string.match(Y,'hitokoto(.+)type')
--模式匹配他们中的一切字符
F=string.gsub(Q,'":"',"")
K=string.gsub(F,'","',"")
--删除多余垃圾
string.toMusic("\n\n"..""..K.."")
QD = gg.alert("今日语录:\n\n"..""..K.."")
if QD == 1 then
end
if QD == 3 then
end
end),
changan.button("选择进程",gg.setProcessX),
changan.text("公告","#A11322","20sp"),
changan.text("使用陆某某全防请注意演戏尽量少开危险功能注意防闪可能会导致禁网官方频道","#545454","10sp"),
}, {
--2功能
changan.button("选择进程",gg.setProcessX),
--changan.text("文字演示","#0077FF","20sp"),
--changan.text("文字演示文字演示文字演示","#545454","10sp"),
changan.switch(
" 防闪",
function()
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
local t = {"libanogs.so:bss", "Cb"}
local tt = {0x6F0}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = 64, freeze = true}})
string.toMusic("开启成功")
end
),
changan.switch(
"过搜索检测",
function()
local t = {"libanogs.so:bss", "Cb"}
local tt = {0x1D88, 0x8}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = 131328, freeze = true}})
string.toMusic("开启成功")
end
),
-- changan.switch(
-- "大厅①",
-- function()
-- local t = {"libUE4.so:bss", "Cb"}
-- local tt = {0x6F3300}
-- local ttt = S_Pointer(t, tt, true)
-- gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}})
-- local t = {"libUE4.so:bss", "Cb"}
-- local tt = {0x6F3460}
-- local ttt = S_Pointer(t, tt, true)
-- gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}})
-- local t = {"libUE4.so:bss", "Cb"}
-- local tt = {0x6F35C0}
-- local ttt = S_Pointer(t, tt, true)
-- gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}})
-- string.toMusic("开启成功")
-- end
-- ),
changan.switch(
"大厅①",
function()
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
string.toMusic("开启成功")
end
),
changan.switch(
"大厅②",
function()
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
string.toMusic("开启成功")
end
),
-- changan.switch(
-- "大厅①",
-- function()
-- if gg.getRangesList("libopenplatform.so")[1] then
-- local t = {}
-- t[1] = gg.getRangesList("libopenplatform.so")[1]["start"] + 0xD92E8; -- 数值地址:0x79644A32E8
-- gg.addListItems({
-- [1] = {
-- address = t[1],
-- flags = 4,
-- value = 1544552959,
-- freeze = true,
-- },
-- })
-- string.toMusic("开启成功")
-- end
-- ),
changan.switch(
"大厅③",
function()
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
so=gg.getRangesList('libopenplatform.so')[1].start
py=0xD92E8
setvalue(so+py,4,1544552959)
so=gg.getRangesList('libanogs.so')[1].start
py=0x597B20
setvalue(so+py,4,1985282428)
string.toMusic("开启成功")
end
),
-- changan.switch(
-- "全局离线",
-- function()
-- if gg.getRangesList("libgcloud.so")[1] then
-- local t = {}
-- t[1] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x421B64; -- 数值地址:--泛滥频道 @Mtnb777
-- t[2] = gg.getRangesList("libgcloud.so")[1]["start"] + 0x494EB4; -- 数值地址:--泛滥频道 @Mtnb777
-- gg.addListItems({--泛滥频道 @Mtnb777
-- [1] = {
-- address = t[1],
-- flags = 4,
-- value = 10000001,
-- freeze = true,
-- },--泛滥频道 @Mtnb777
-- [2] = {
-- address = t[2],
-- flags = 4,
-- value = 10000001,
-- freeze = true,
-- },
-- })
-- string.toMusic("开启成功")
-- end
-- ),
}, {
--3
changan.check({
{
"人物广角",
function()
OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'})
if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消")
else
so=gg.getRangesList('libUE4.so')[1].start
py=0x2BD8898
setvalue(so+py,16, 2)--功能:广角
string.toMusic("开启成功")
end
end
}, {
"动态广角",
function()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x448,0x2F8,0x180,0x33C}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 120, freeze = true}})
string.toMusic("开启成功")
end
}, {
"枪械聚点",
function()
so=gg.getRangesList('libUE4.so')[1].start
py=0x4E480DA
setvalue(so+py,1, -32)
string.toMusic("开启成功")
end
}, {
"无后",
function()
so=gg.getRangesList('libUE4.so')[1].start
py=0x4E4CED8
setvalue(so+py,1, 67)
string.toMusic("开启成功")
end
},{
"ios上色红",
function()
so=gg.getRangesList('libUE4.so')[1].start
py=0x8FFC77C
setvalue(so+py,16, 8.47963525e-21)
string.toMusic("开启成功")
end
},{
"除雾",
function()
so=gg.getRangesList('libUE4.so')[1].start
py=0x7D1DFC0
setvalue(so+py,16, 8.95671814e-21)--功能:除雾
string.toMusic("开启成功")
end
},{
"锁帧",
function()
OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'})
if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消")
else
so=gg.getRangesList('')[1].start
py=0x7AEC40C8B4
setvalue(so+py,16,120)
so=gg.getRangesList('')[1].start
py=0x7AEC40C8B8
setvalue(so+py,16,120)--锁帧
string.toMusic("开启成功")
end
end
},{
"打击特效",
function()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x4C0,0x598,0x14}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x4C0,0x598,0xD4}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x4C0,0x598,0x54}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x4C0,0x598,0x94}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}})
string.toMusic("开启成功")
end
},{
"大头",
function()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x2C9158,0x110,0xD88,0x18,0x2F0}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x2C9158,0x110,0xD88,0x18,0x2F8}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
string.toMusic("开启成功")
end
},{
"攀爬穿墙",
function()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x438,0x398,0x58,0x2CC}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 9999, freeze = true}})
string.toMusic("开启成功")
end},{
"自动攀爬",
function()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6D1820,0x30,0x4A8,0x498,0x1F4-0x3C}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2000, freeze = true}})
string.toMusic("开启成功")
end},{
"微加速",
function()
OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'})
if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消")
else
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x7510E8,0x8,0x48,0x20,0x1060}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 7, freeze = true}})
string.toMusic("开启成功")
end
end
},{
"枪械大小",
function()
OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'})
if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消")
else
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6BDAE8,0x78,0x438,0x1A0,0x0,0x5c0}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6BDAE8,0x78,0x438,0x1A0,0x0,0x5c4}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6BDAE8,0x78,0x438,0x1A0,0x0,0x5c8}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
string.toMusic("开启成功")
end
end
},{
"人物大小",
function()
OP=gg.prompt({'1至10'},{[1]='3'},{[1]='number'})
if OP == nil or OP[1] == '' or OP[1] == '0' then gg.toast("取消")
else
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6BDAE8,0x448,0x490,0x19C}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6BDAE8,0x448,0x490,0x1A0}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6BDAE8,0x448,0x490,0x1A4}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = 2, freeze = true}})
string.toMusic("开启成功")
end
end
},
}),
}, {
--第四页音乐
changan.check({
{
"丧尸动作",
function()
end,
function()
end
}, {
"自改衣服",
function()
local cfg_file = "/sdcard/衣服1.txt"
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
cfg = chunk()
end
if cfg == nil then
cfg = {1403119,40604012,1404207,1404160,405000,1501002009,0,true}
end
SX = gg.prompt({
"面部修改:",--1
"头发修改:",--2
"衣服修改",--3
"裤子修改:",--4
"鞋子修改:",--5
"背包修改:\n改0不显示",--6
"头盔修改:\n改0不显示",--7
},cfg,{"text","text","text","text","text","text","text"})
if SX == nil then else
gg.saveVariable(SX, cfg_file)
if SX[1] == true then SX1() end
if SX[2] == true then SX2() end
if SX[3] == true then SX3() end
if SX[4] == true then SX4() end
if SX[5] == true then SX5() end
if SX[6] == true then SX6() end
if SX[7] == true then SX7() end
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x6B7E60, 0x630, 0x670, 0x140}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[1]}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x70}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value =SX[2]}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38, 0x0, 0x2F0, 0x280, 0x388, 0x118}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value =SX[3]}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x150}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[4]}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x188}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[5]}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x1C0}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[6]}})
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38,0x0,0x340,0x30,0x388,0x1F8}
local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 4, value = SX[7]}})
gg.toast('开启成功')
end
end,
function()
end
}, {
"自改枪械",
function()
local cfg_file = "/sdcard/息白/枪械美化配置.ini"
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
cfg = chunk()
end
if cfg == nil then
cfg = {
1101001213--ak
, 1101002029--m16
, 1101003146--sc
, 1101004046--m416
, 1101005055--GROZA
, 1101006033--AUG
, 10100700--QBZ
, 1101008081--M762
, 1101009011--mk47
, 1101010012--g36c
, 10101200--蜜罐11
, 1102001024--UZI12
, 1102002061--UMP45
, 1102003080--Vector
, 1102004018--汤姆逊
, 1102005007--野牛
, 10200600--MP5K
, 1102105002--P90
, 1103001154--98K
, 1103002018--m24
, 1103003022--awm
, 1103004037--sks22
, 1103005024--vss23
, 10300600--mini14
, 1103007020--mk1425
, 1103008014--win94
, 10300900--slr27
, 10301000--QBU
, 1103011001--莫辛纳甘
, 1103012010--amr
, 10301300--m417
, 1104001027--s686
, 1104002022--s189
, 1104003031--s12k
, 1104004021--dbs
, 1105001020--m249
, 1105002035--大盘鸡
, 1105010008--mg3
, 1108001057--大砍刀
, 1108002046--撬棍
, 1108003001--镰刀
, 1108004009--平底锅
, 1010042029--红点
, 1010042028--全息瞄准键
, 1010042027--2倍镜
, 1010042026--3倍镜
, 1010042025--4倍镜
, 1010042024--6被
, 1030020242--八倍
, 1010040462--m4苗具
, 1010040461--m4枪托
, 1010040463--m4弹夹
, true}
end
QiuCi = gg.prompt({
"AKM美化代码:",--1
"M16A4美化代码:",--2
"SCAR-L美化代码:",--3
"M416美化代码:",--4
"GROZA美化代码:",--5
"AUG美化代码:",--6
"QBZ美化代码:",--7
"M762美化代码:",--8
"MK47美化代码:",--9
"G36C美化代码:",--10
"蜜罐美化代码:",--11
"UZI美化代码:",--12
"UMP45美化代码:",--13
"Vector美化代码:",--14
"汤姆逊美化代码:",--15
"野牛美化代码:",--16
"MP5K美化代码:",--17
"P90美化代码:",--18
"98K美化代码:",--19
"M24美化代码:",--20
"AWM美化代码:",--21
"SKS美化代码:",--22
"VSS美化代码:",--23
"Mini14美化代码:",--24
"Mk14美化代码:",--25
"Win94美化代码:",--26
"SLR美化代码:",--27
"QBU美化代码:",--28-
"莫辛纳甘美化代码:",--29
"AMR美化代码:",--30
"M417美化代码:",--31
"S686美化代码:",--32
"S1897代码:",--33
"S12K美化代码:",--34
"DBS美化代码:",--35
"M249美化代码:",--36
"大盘鸡美化代码:",--37
"MG3美化代码:",--38
"大砍刀美化代码:",--39
"撬棍美化代码:",--40
"镰刀美化代码:",--41
"平底锅美化代码:",--42
"红点瞄准镜美化代码:",--43
"全息瞄准镜美化代码:",--44
"二倍瞄准镜美化代码:",--45
"三倍瞄准镜美化代码:",--46
"四倍瞄准镜美化代码:",--47
"六倍瞄准镜美化代码:",--48
"八倍瞄准镜美化代码:",--49
"M4瞄具美化代码:",--50
"M4枪托美化代码:",--51
"M4弹夹美化代码:",--52
},cfg,{
"text",--1
"text",--2
"text",--3
"text",--4
"text",--5
"text",--6
"text",--7
"text",--8
"text",--9
"text",--10
"text",--11
"text",--12
"text",--13
"text",--14
"text",--15
"text",--16
"text",--17
"text",--18
"text",--19
"text",--20
"text",--21
"text",--22
"text",--23
"text",--24
"text",--25
"text",--26
"text",--27
"text",--28
"text",--29
"text",--30
"text",--31
"text",--32
"text",--33
"text",--34
"text",--35
"text",--36
"text",--37
"text",--38
"text",--39
"text",--40
"text",--41
"text",--42
"text",--43
"text",--44
"text",--45
"text",--46
"text",--47
"text",--48
"text",--49
"text",--50
"text",--52
"text"--53
})
if QiuCi == nil then else
gg.saveVariable(QiuCi, cfg_file)
if QiuCi[1] == true then QiuCi1() end
if QiuCi[2] == true then QiuCi2() end
if QiuCi[3] == true then QiuCi3() end
if QiuCi[4] == true then QiuCi4() end
if QiuCi[5] == true then QiuCi5() end
if QiuCi[6] == true then QiuCi6() end
if QiuCi[7] == true then QiuCi7() end
if QiuCi[8] == true then QiuCi8() end
if QiuCi[9] == true then QiuCi9() end
if QiuCi[10] == true then QiuCi10() end
if QiuCi[11] == true then QiuCi11() end
if QiuCi[12] == true then QiuCi12() end
if QiuCi[13] == true then QiuCi13() end
if QiuCi[14] == true then QiuCi14() end
if QiuCi[15] == true then QiuCi15() end
if QiuCi[16] == true then QiuCi16() end
if QiuCi[17] == true then QiuCi17() end
if QiuCi[18] == true then QiuCi18() end
if QiuCi[19] == true then QiuCi19() end
if QiuCi[20] == true then QiuCi20() end
if QiuCi[21] == true then QiuCi21() end
if QiuCi[22] == true then QiuCi22() end
if QiuCi[23] == true then QiuCi23() end
if QiuCi[24] == true then QiuCi24() end
if QiuCi[25] == true then QiuCi25() end
if QiuCi[26] == true then QiuCi26() end
if QiuCi[27] == true then QiuCi27() end
if QiuCi[28] == true then QiuCi28() end
if QiuCi[29] == true then QiuCi29() end
if QiuCi[30] == true then QiuCi30() end
if QiuCi[31] == true then QiuCi31() end
if QiuCi[32] == true then QiuCi32() end
if QiuCi[33] == true then QiuCi33() end
if QiuCi[34] == true then QiuCi34() end
if QiuCi[35] == true then QiuCi35() end
if QiuCi[36] == true then QiuCi36() end
if QiuCi[37] == true then QiuCi37() end
if QiuCi[38] == true then QiuCi38() end
if QiuCi[39] == true then QiuCi39() end
if QiuCi[40] == true then QiuCi40() end
if QiuCi[41] == true then QiuCi41() end
if QiuCi[42] == true then QiuCi42() end
if QiuCi[43] == true then QiuCi43() end
if QiuCi[44] == true then QiuCi44() end
if QiuCi[45] == true then QiuCi45() end
if QiuCi[46] == true then QiuCi46() end
if QiuCi[47] == true then QiuCi47() end
if QiuCi[48] == true then QiuCi48() end
if QiuCi[49] == true then QiuCi49() end
if QiuCi[50] == true then QiuCi50() end
if QiuCi[51] == true then QiuCi51() end
if QiuCi[52] == true then QiuCi52() end
a=0x0
while(a <=0xAF0)
do
a=a+0x10
mk=gg.getRangesList('libUE4.so')[1].start
add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38)--动态DD900
adpd = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x30) +0x18
if readD(adpd) == 1000 then
--5x3000
--2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100)
break
add=add
end
end
nmsl=0x4148--0x3FF8初始 0x5000 0x4148 0x7500
while(nmsl <=0x866E218)--10850最大
do
nmsl=nmsl+0x18
addr=RUI(add+nmsl)
if readD(addr+0x58) == 101001 then--AKM
setvalue(addr+0x18,4,QiuCi[1])
gg.toast("修改目标:AKM")
end
if readD(addr+0x58) == 101002 then--M16A4
setvalue(addr+0x18,4,QiuCi[2])
gg.toast("修改目标:M16A4")
end
if readD(addr+0x58) == 101003 then--SCAR
setvalue(addr+0x18,4,QiuCi[3])
gg.toast("修改目标:SCAR")
end
if readD(addr+0x58) == 101004 then--M416
setvalue(addr+0x18,4,QiuCi[4])
gg.toast("修改目标:M416")
end
if readD(addr+0x58) == 101005 then --GROZA
setvalue(addr+0x18,4,QiuCi[5])
gg.toast("修改目标:GROZA")
end
if readD(addr+0x58) == 101006 then --AUG
setvalue(addr+0x18,4,QiuCi[6])
gg.toast("修改目标:AUG")
end
if readD(addr+0x58) == 101007 then--QBZ
setvalue(addr+0x18,4,QiuCi[7])
gg.toast("修改目标:QBZ")
end
if readD(addr+0x58) == 101008 then--M762
setvalue(addr+0x18,4,QiuCi[8])
gg.toast("修改目标:M762")
end
if readD(addr+0x58) == 101009 then--MK47
setvalue(addr+0x18,4,QiuCi[9])
gg.toast("修改目标:MK47")
end
if readD(addr+0x58) == 101010 then--G36C
setvalue(addr+0x18,4,QiuCi[10])
gg.toast("修改目标:G36C")
end
if readD(addr+0x58) == 101012 then--蜜罐
setvalue(addr+0x18,4,QiuCi[11])
gg.toast("修改目标:蜜罐")
end
if readD(addr+0x58) == 102001 then--UZI
setvalue(addr+0x18,4,QiuCi[12])
gg.toast("修改目标:UZI")
end
if readD(addr+0x58) == 102002 then--UMP45
setvalue(addr+0x18,4,QiuCi[13])
gg.toast("修改目标:UMP45")
end
if readD(addr+0x58) == 102003 then--Vector
setvalue(addr+0x18,4,QiuCi[14])
gg.toast("修改目标:Vector")
end
if readD(addr+0x58) == 102004 then--汤姆逊
setvalue(addr+0x18,4,QiuCi[15])
gg.toast("修改目标:汤姆逊")
end
if readD(addr+0x58) == 102005 then--野牛
setvalue(addr+0x18,4,QiuCi[16])
gg.toast("修改目标:野牛")
end
if readD(addr+0x58) == 102006 then--MP5K
setvalue(addr+0x18,4,QiuCi[17])
gg.toast("修改目标:MP5K")
end
if readD(addr+0x58) == 102007 then--P90
setvalue(addr+0x18,4,QiuCi[18])
gg.toast("修改目标:P90")
end
if readD(addr+0x58) == 103001 then--98K
setvalue(addr+0x18,4,QiuCi[19])
gg.toast("修改目标:98K")
end
if readD(addr+0x58) == 103002 then--M24
setvalue(addr+0x18,4,QiuCi[20])
gg.toast("修改目标:M24")
end
if readD(addr+0x58) == 103003 then--awm
setvalue(addr+0x18,4,QiuCi[21])
gg.toast("修改目标:AWM")
end
if readD(addr+0x58) == 103004 then--SKS
setvalue(addr+0x18,4,QiuCi[22])
gg.toast("修改目标:SKS")
end
if readD(addr+0x58) == 103005 then--VSS
setvalue(addr+0x18,4,QiuCi[23])
gg.toast("修改目标:VSS")
end
if readD(addr+0x58) == 103006 then--Mini14
setvalue(addr+0x18,4,QiuCi[24])
gg.toast("修改目标:MINI14")
end
if readD(addr+0x58) == 103007 then--MK14
setvalue(addr+0x18,4,QiuCi[25])
gg.toast("修改目标:MK14")
end
if readD(addr+0x58) == 103008 then--Win94
setvalue(addr+0x18,4,QiuCi[26])
gg.toast("修改目标:Win94")
end
if readD(addr+0x58) == 103009 then--SLR
setvalue(addr+0x18,4,QiuCi[27])
gg.toast("修改目标:SLR")
end
if readD(addr+0x58) == 103010 then--QBU
setvalue(addr+0x18,4,QiuCi[28])
gg.toast("修改目标:QBU")
end
if readD(addr+0x58) == 103011 then--莫辛纳甘
setvalue(addr+0x18,4,QiuCi[29])
gg.toast("修改目标:莫辛纳甘")
end
if readD(addr+0x58) == 103012 then--AMR
setvalue(addr+0x18,4,QiuCi[30])
gg.toast("修改目标:AMR")
end
if readD(addr+0x58) == 103013 then--M417
setvalue(addr+0x18,4,QiuCi[31])
gg.toast("修改目标:M417")
end
if readD(addr+0x58) == 104001 then--S686
setvalue(addr+0x18,4,QiuCi[32])
gg.toast("修改目标:S686")
end
if readD(addr+0x58) == 104002 then--S1897
setvalue(addr+0x18,4,QiuCi[33])
gg.toast("修改目标:S1897")
end
if readD(addr+0x58) == 104003 then--S12K
setvalue(addr+0x18,4,QiuCi[34])
gg.toast("修改目标:S12K")
end
if readD(addr+0x58) == 104004 then--DBS
setvalue(addr+0x18,4,QiuCi[35])
gg.toast("修改目标:DBS")
end
if readD(addr+0x58) == 105001 then--M249
setvalue(addr+0x18,4,QiuCi[36])
gg.toast("修改目标:M249")
end
if readD(addr+0x58) == 105002 then--大盘鸡
setvalue(addr+0x18,4,QiuCi[37])
gg.toast("修改目标:大盘鸡")
end
if readD(addr+0x58) == 105010 then--MG3
setvalue(addr+0x18,4,QiuCi[38])
gg.toast("修改目标:MG3")
end
if readD(addr+0x58) == 108001 then--大砍刀
setvalue(addr+0x18,4,QiuCi[39])
gg.toast("修改目标:砍刀")
end
if readD(addr+0x58) == 108002 then--撬棍
setvalue(addr+0x18,4,QiuCi[40])
gg.toast("修改目标:撬棍")
end
if readD(addr+0x58) == 108003 then--镰刀
setvalue(addr+0x18,4,QiuCi[41])
gg.toast("修改目标:镰刀")
end
if readD(addr+0x58) == 108004 then--平底锅
setvalue(addr+0x18,4,QiuCi[42])
gg.toast("修改目标:平底锅")
end
if readD(addr+0x58) == 203001 then--红点
setvalue(addr+0x18,4,QiuCi[43])
gg.toast("修改目标:红点瞄准器")
end
if readD(addr+0x58) == 203002 then--全息
setvalue(addr+0x18,4,QiuCi[44])
gg.toast("修改目标:全息瞄准器")
end
if readD(addr+0x58) == 203003 then--二倍
setvalue(addr+0x18,4,QiuCi[45])
gg.toast("修改目标:二倍瞄准器")
end
if readD(addr+0x58) == 203006 then--三倍
setvalue(addr+0x18,4,QiuCi[46])
gg.toast("修改目标:三倍瞄准器")
end
if readD(addr+0x58) == 203004 then--四倍
setvalue(addr+0x18,4,QiuCi[47])
gg.toast("修改目标:四倍瞄准器")
end
if readD(addr+0x58) == 203007 then--六倍
setvalue(addr+0x18,4,QiuCi[48])
gg.toast("修改目标:六倍瞄准器")
end
if readD(addr+0x58) == 203005 then--八倍
setvalue(addr+0x18,4,QiuCi[49])
gg.toast("修改目标:8倍瞄准器")
end
if readD(addr+0x58) == 203008 then--m4瞄具
setvalue(addr+0x18,4,QiuCi[50])
gg.toast("修改目标M416鸡苗:")
end
if readD(addr+0x58) == 205005 then--m4张托
setvalue(addr+0x18,4,QiuCi[51])
gg.toast("修改目标:M416枪托")
end
if readD(addr+0x58) == 291004 then --m4弹夹
setvalue(addr+0x18,4,QiuCi[52])
gg.toast("修改目标:M416弹夹")
string.toMusic('开启成功')
break
end
end
end
end,
function()
end
},{
"自改特效",
function()
gg.setConfig("冻结间隔", 0)
gg.setConfig("快速冻结", 1)
local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$").."(特效).lua"
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
cfg = chunk()
end
if cfg == nil then
cfg = {1101004046,true}
end
wannian=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俏皮兔宝 1101001231 \nM16A4血骸风暴 1101002029 M16A4极光脉冲 1101002056 M16A4缤纷利刃 1101002068 M16A4猩红血月 1101002081 M16A4古堡龙卫 1101002103 \n死噶梦幻水枪 1101003057 死噶魔法南瓜 1101003070 死噶翌日行动 1101003080 死噶诡秘之夜 1101003099 死噶魔力结晶 1101003119 死噶邪能植物 1101003146 死噶血魂魔皇 1101003167 \nM416冰霜核心 1101004046 M416愚人小丑 1101004062 M416异域游荡者 1101004078 M416萌龙咆哮 1101004086 M416野性呼唤 1101004098 M416科技核心 1101004138 M416潮鸣宫廷 1101004163 M416庇护之潮 1101004209 \nGroza幻夜音乐 1101005025 Groza绚烂之战 1101005043 Groza冥河烈焰 1101005052 \nAUG流浪马戏团 1101006033 AUG第四使徒 1101006044 QBZ极致绝杀 1101007036 QBZ瑰绮灵姬 1101007046 M762比特宝莉 1101008026 \n妹控星云力量",
},cfg,{"text"})
if wannian == nil then else
gg.saveVariable(wannian, cfg_file)
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x3AD38,0x0,0x1A0,0x0,0x6A8,0x300,0x8,0x108,0x8C}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = wannian[1], freeze = true}})
end
end,
function()
end
},{
"自改播报",
function()
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妹控星云力量"},nil,{"number"})
if jr ~= nil then
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x391E0,0x0,0x90,0x1618}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = jr[1], freeze = true}})
end
string.toMusic('开启成功')
end,
function()
end
},{
"自改倍镜",
function()
local cfg_file = "/sdcard/配件美化配置/.txt"
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
cfg = chunk()
end
if cfg == nil then
cfg = {
1030020812,
1010081218,
1010040466,
1010040467,
1010040468,
1010040469,
1010040470,
1010040471,
1010040472,
1010040473,
1010040474,
1010040475,
1010040476,
1010040477,
1010040478,
1010040479,
1010040480,
true}
end
qing = gg.prompt({
"8倍瞄准镜",
"6倍瞄准镜",
"4倍瞄准镜",
"3倍瞄准镜",
"2倍瞄准镜",
"全息瞄准镜",
"红点瞄准镜",
"扩容弹夹",
"快速弹夹",
"快速扩容弹夹",
"消焰器",
"枪口补偿器",
"消音器",
"直角前握把",
"拇指握把",
"垂直握把",
"战术枪托",
},cfg,{
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text"})
if qing == nil then else
gg.saveVariable(qing, cfg_file)
if qing[1] == true then qing1() end
if qing[2] == true then qing2() end
if qing[3] == true then qing3() end
if qing[4] == true then qing4() end
if qing[5] == true then qing5() end
if qing[6] == true then qing6() end
if qing[7] == true then qing7() end
if qing[8] == true then qing8() end
if qing[9] == true then qing9() end
if qing[10] == true then qing10() end
if qing[11] == true then qing11() end
if qing[12] == true then qing12() end
if qing[13] == true then qing13() end
if qing[14] == true then qing14() end
if qing[15] == true then qing15() end
if qing[16] == true then qing16() end
if qing[17] == true then qing17() end
a=0x0
while(a <=0xAF0)
do
a=a+0x10
mk=gg.getRangesList('libUE4.so')[1].start
add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38)--动态DD900
adpd = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x30) +0x18
if readD(adpd) == 1000 then
--5x3000
--2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100)
break
add=add
end
end
nmsl=0x4148--3FF8初始
while(nmsl <=0x866E218)--10850最大
do
nmsl=nmsl+0x18
addr=RUI(add+nmsl)
if readD(addr+0x58) == 203005 then --AKM
setvalue(addr+0x18,4,qing[1])
end
if readD(addr+0x58) == 203015 then --AKM
setvalue(addr+0x18,4,qing[2])
end
if readD(addr+0x58) == 203004 then --AKM
setvalue(addr+0x18,4,qing[3])
end
if readD(addr+0x58) == 203014 then --AKM
setvalue(addr+0x18,4,qing[4])
end
if readD(addr+0x58) == 203003 then --AKM
setvalue(addr+0x18,4,qing[5])
end
if readD(addr+0x58) == 203002 then --AKM
setvalue(addr+0x18,4,qing[6])
end
if readD(addr+0x58) == 203001 then --AKM
setvalue(addr+0x18,4,qing[7])
end
if readD(addr+0x58) == 204011 then --AKM1
setvalue(addr+0x18,4,qing[8])
end
if readD(addr+0x58) == 204012 then --AKM
setvalue(addr+0x18,4,qing[9])
end
if readD(addr+0x58) == 204013 then --AKM
setvalue(addr+0x18,4,qing[10])
end
if readD(addr+0x58) == 201010 then --AKM
setvalue(addr+0x18,4,qing[11])
end
if readD(addr+0x58) == 201009 then --AKM
setvalue(addr+0x18,4,qing[12])
end
if readD(addr+0x58) == 201011 then --AKMM416突击步枪默认弹匣 291004M416机械瞄具 203008M416默认枪托 205005
setvalue(addr+0x18,4,qing[13])
end
if readD(addr+0x58) == 202001 then --AKM
setvalue(addr+0x18,4,qing[14])
end
if readD(addr+0x58) == 202006 then
setvalue(addr+0x18,4,qing[15])
end
if readD(addr+0x58) == 202002 then --AKM
setvalue(addr+0x18,4,qing[16])
end
if readD(addr+0x58) == 205002 then
setvalue(addr+0x18,4,qing[17])
gg.alert("遍历完毕")
break
end
end
end
end,
function()
end
},{
"自改配件",
function()
local cfg_file = "/sdcard/配件美化配置/.txt"
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
cfg = chunk()
end
if cfg == nil then
cfg = {
1010040471,
1010040472,
1010040473,
1010040474,
1010040475,
1010040476,
1010040477,
1010040478,
1010040479,
1010040480,
true}
end
qing = gg.prompt({
"扩容弹夹",
"快速弹夹",
"快速扩容弹夹",
"消焰器",
"枪口补偿器",
"消音器",
"直角前握把",
"拇指握把",
"垂直握把",
"战术枪托",
},cfg,{
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text",
"text"})
if qing == nil then else
gg.saveVariable(qing, cfg_file)
if qing[1] == true then qing1() end
if qing[2] == true then qing2() end
if qing[3] == true then qing3() end
if qing[4] == true then qing4() end
if qing[5] == true then qing5() end
if qing[6] == true then qing6() end
if qing[7] == true then qing7() end
if qing[8] == true then qing8() end
if qing[9] == true then qing9() end
if qing[10] == true then qing10() end
a=0x0
while(a <=0xAF0)
do
a=a+0x10
mk=gg.getRangesList('libUE4.so')[1].start
add = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x38)--动态DD900
adpd = RUI(RUI(RUI(RUI(RUI(mk + 0xC516A80) + 0x558) + a) + 0x30) + 0x30) +0x18
if readD(adpd) == 1000 then
--5x3000
--2.9 101001锁链0xDD900+0x558+0x10+0x30+0x30+0x0(0x18就直接到101,001,100)
break
add=add
end
end
nmsl=0x4148--3FF8初始
while(nmsl <=0x866E218)--10850最大
do
nmsl=nmsl+0x18
addr=RUI(add+nmsl)
if readD(addr+0x58) == 204011 then --AKM1
setvalue(addr+0x18,4,qing[1])
end
if readD(addr+0x58) == 204012 then --AKM
setvalue(addr+0x18,4,qing[2])
end
if readD(addr+0x58) == 204013 then --AKM
setvalue(addr+0x18,4,qing[3])
end
if readD(addr+0x58) == 201010 then --AKM
setvalue(addr+0x18,4,qing[4])
end
if readD(addr+0x58) == 201009 then --AKM
setvalue(addr+0x18,4,qing[5])
end
if readD(addr+0x58) == 201011 then --AKM
setvalue(addr+0x18,4,qing[6])
end
if readD(addr+0x58) == 202001 then --AKM
setvalue(addr+0x18,4,qing[7])
end
if readD(addr+0x58) == 202006 then
setvalue(addr+0x18,4,qing[8])
end
if readD(addr+0x58) == 202002 then --AKM
setvalue(addr+0x18,4,qing[9])
end
if readD(addr+0x58) == 205002 then
setvalue(addr+0x18,4,qing[10])
gg.alert("遍历完毕")
break
end
end
end
end,
function()
end
},
}),
}, {
--第五页,没有写菜单标题所以不显示
changan.button("搜索音乐",function()
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),
changan.button("暂停音乐",function()
gg.playMusic("stop")
gg.playMusic("stop")
gg.playMusic("stop")
end),
},{
--changan.switch("6"),
changan.button("退出脚本",function()
luajava.setFloatingWindowHide(false)
tuichu=1
end),
changan.button("清理冻结",function() gg.clearList() gg.alert("修改成功") end),
},{
},{
},{
},{
},{
},{
}
})
--配置表添加表即可加页数,只需要与上边菜单标题数对应