function xy_Actad(tab) local v,lx,_A=gg.getRangesList(tab[1]) if not v[1] then gg.toast("获取失败,原因:未获取模块") return end if v[1].start>4294967295 then lx=32 else lx=4 end local max=function(num) if lx==4 then if num<0 then return 2147483648-math.abs(num)+2147483648 else return num end else return num end end for i,k in pairs(tab[2]) do if i==#tab[2] then _A=_A+k elseif i==1 then _A=gg.getValues({{address=v[1].start+k,flags=lx}})[1].value else _A=gg.getValues({{address=_A+k,flags=lx}})[1].value end _A=max(_A) end if _A==tab[2][#tab] then gg.toast("获取失败,原因:指针错误") return end return _A end ---①江川配置 function editData(qmnb,qmxg)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."修改失败") print(qmnbn.."修改失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then print(qmnbn.."开启成功")else gg.toast(qmnbn.."修改失败") print(qmnbn.."修改失败")end end end ONC=gg.REGION_OTHER CANC=gg.REGION_C_ALLOC XANC=gg.REGION_CODE_APP ANC=gg.REGION_ANONYMOUS NC="memory" MZ="name" SJ="value" LX="type" YZ="lv" WZ="offset" ZT="freeze" BB=false DJ=true D=gg.TYPE_DWORD E=gg.TYPE_DOUBLE F=gg.TYPE_FLOAT W=gg.TYPE_WORD B=gg.TYPE_BYTE X=gg.TYPE_XOR Q=gg.TYPE_QWORD ---②伤xs function editData(qmnb,qmxg)gg.setVisible(false)gg.clearResults()qmnbv=qmnb[3]["value"]or qmnb[3][1]qmnbt=qmnb[3]["type"]or qmnb[3][2]qmnbn=qmnb[2]["name"]or qmnb[2][1]gg.setRanges(qmnb[1]["memory"]or qmnb[1][1])gg.searchNumber(qmnbv,qmnbt)gg.refineNumber(qmnbv,qmnbt)sz=gg.getResultCount()if sz==0 then gg.toast(qmnbn.."开启失败")else sl=gg.getResults(999999)for i=1,sz do pdsz=true for v=4,#qmnb do if pdsz==true then pysz={{}}pysz[1].address=sl[i].address+(qmnb[v]["offset"]or qmnb[v][2])pysz[1].flags=qmnb[v]["type"]or qmnb[v][3]szpy=gg.getValues(pysz)tzszpd=tostring(qmnb[v]["lv"]or qmnb[v][1]):gsub(",","")pyszpd=tostring(szpy[1].value):gsub(",","")if tzszpd==pyszpd then pdjg=true pdsz=true else pdjg=false pdsz=false end end end if pdjg==true then szpy=sl[i].address for x=1,#qmxg do xgsz=qmxg[x]["value"]or qmxg[x][1]xgpy=szpy+(qmxg[x]["offset"]or qmxg[x][2])xglx=qmxg[x]["type"]or qmxg[x][3]xgdj=qmxg[x]["freeze"]or qmxg[x][4]xg={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xg[1].freeze=xgdj gg.addListItems(xg)else gg.setValues(xg)end end xgjg=true end end if xgjg==true then gg.toast(qmnbn.."开启成功")else gg.toast(qmnbn.."开启失败")end end end ---③防xs函数 function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end ---④指针函数 function SearchWrite(Search,Modification) gg.clearResults() gg.searchNumber(Search[1][1],Search[1][2],false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum=0 for i=2,#Search do for index=1,#Result do if gg.getValues({{address=Result[index].address+Search[i][3],flags=Search[i][2]}})[1].value~=Search[i][1]then Result[index].Usable=true sum=sum+1 end end end if sum==#Result then gg.toast(Name..'开启失败') return end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in pairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value[3],flags=value[2],value=value[1],freeze=true} sum=sum+1 if value[4]then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end end end end gg.setValues(Data) gg.addListItems(Freeze) if Freeze==0 then gg.toast(Name..'开启成功,共修改'..sum..'条数据.') else gg.toast(Name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据.') end end ---⑤鹿十七高速指针1.5.1 function Format(tab,format,write,Function)if format=="查看" then return print(tab)elseif format=="修改"then local Table={}for k,v in pairs(tab)do for kk,vv in pairs(write)do Table[#Table+1]={["address"]=v["address"]+vv[2],["flags"]=vv[3],["value"]=vv[1]}end end return gg.setValues(Table)elseif format=="载入"then gg.loadResults(tab)elseif format=="冻结"then local Table={}for k,v in pairs(tab)do for kk,vv in pairs(write)do Table[#Table+1]={["address"]=v["address"]+vv[2],["flags"]=vv[3],["value"]=vv[1],["freeze"]=true}end end return gg.addListItems(Table)end end function LSQ_type_conversion(txt,type1,type2)gg.allocatePage(gg.PROT_READ|gg.PROT_WRITE|gg.PROT_EXEC,0x99999999)local Table={{["address"]=0x99999999,["flags"]=type1,["value"]=txt}}local set=gg.setValues(Table)Table[1]["flags"]=type2 local get=gg.getValues(Table)[1]["value"]return get end function Get_value()if gg.getResultsCount()>100000 then local result={}local Table={}while true do local Results=gg.getResults(100000)if not Results or #Results==0 then break end result[#result+1]=Results local remove=gg.removeResults(Results)end for k=1,#result do for kk,vv in pairs(result[k])do Table[#Table+1]=vv end end return Table else return gg.getResults(gg.getResultsCount())end end function Type_filtering(values)if string.find(values,".") then start,v=string.match(values,"^(.-)%.(.)")value=string.format("%s.%s",start,v)return value else return values end end function LSQ_pointer(search,write,mode)if search[1][5] and search[1][6] then region_start=search[1][5]region_end=search[1][6]else region_start=0 region_end=-1 end gg.clearResults()if search[1][2] =="16"and search[1][2] =="64"then local Value=LSQ_type_conversion(search[1][1],search[1][2],Q)gg.setRanges(search[1][3])gg.searchNumber(Value,Q,false,gg.SIGN_EQUAL,region_start,region_end)gg.searchNumber(Value,Q,false,gg.SIGN_EQUAL,region_start,region_end)else gg.setRanges(search[1][3])gg.searchNumber(search[1][1],search[1][2],false,gg.SIGN_EQUAL,region_start,region_end)gg.searchNumber(search[1][1],search[1][2],false,gg.SIGN_EQUAL,region_start,region_end)end if gg.getResultsCount()==0 then gg.toast("未搜索到指针数据")return false else local result=Get_value()gg.clearResults()for i=2,#search do local offset_array={}for k,v in ipairs(result) do offset_array[#offset_array+1]={["address"]=v["address"]+search[i][2],["flags"]=search[i][3]}end offset_array=gg.getValues(offset_array)local verify_array={}for k,v in ipairs(offset_array) do if v["flags"]==16 then v["value"]=Type_filtering(v["value"])end if v["flags"]==64 then v["value"]=Type_filtering(v["value"])end if not string.find(search[i][1],"~") then if v["value"]==search[i][1] then verify_array[#verify_array+1]=result[k]end else min,max=string.match(search[i][1],'^(.-)~(.-)$')min,max=tonumber(min),tonumber(max)if v["value"]>=min and v["value"]<=max then verify_array[#verify_array+1]=result[k]end end end result=verify_array end gg.toast("[功能]"..search[1][4].."开启成功") if #result>0 then Format(result,mode,write)return #result else return false end end end ---⑥小奈搜索附近配置 function gx(search,write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) time=os.clock() gg.searchNumber(search[1][1],search[1][2],false,gg.SlGN_EQUAL,start,over) if gg.getResultsCount() == 0 then gg.toast("未搜索到主特征码") return false else local result = gg.getResults(gg.getResultsCount()) gg.clearResults() for i = 2,#search do local mtp = {} for w,r in ipairs(result) do mtp[#mtp + 1] = { address = r.address + search[i][2],flags = search[i][3] } end mtp = gg.getValues(mtp) local hook = {} for w,r in ipairs(mtp) do if r.value == search[i][1] then hook[#hook + 1] = result[w] end end result = hook end if #result > 0 then local tb = {{},{}} for i,v in ipairs(result) do --- 遍历每个结果 for _,vv in ipairs(write) do local p = {address = v.address + vv[2],flags = vv[3],value = vv[1],freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2],p) else table.insert(tb[1],p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast(name.."已解析\n共解析" .. (#tb[1] + #tb[2]) .. "条数据\n耗时"..os.clock()-time.."秒") else gg.toast("解析失败") end end end function gxjxjx(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,start,over) 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 ---⑦基址1 local ReadPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end ---⑧基址配置2 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 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 ---⑨Chainer v0.75基址配置 function getMapRanges() local ranges = {} local r_list = {} local _index = 1 local library = gg.getRangesList("^/data/*.so*$") for index, map in ipairs(library) do if map.type:sub(2, 2) == "w" or map.type == "r-xp" then local name = map.internalName local state = map.state local count = map.count if not r_list[name] then r_list[name] = {} end if not r_list[name][state] then r_list[name][state] = {0, _index} end r_list[name][state][1] = r_list[name][state][1] + 1 r_list[name][state][2] = _index map.count = r_list[name][state][1] table.insert(ranges, map) _index = _index + 1 end end return ranges, r_list end function staticstart(map) local ranges = getMapRanges() if not map[3] then map[3] = 1 end for index, value in ipairs(ranges) do local name = value.internalName:gsub("^.*/", "") if map[1] == name and map[2] == value.state and map[3] == value.count then return value.start end end end function GotoPointer(start, offset) local flags = {[true] = 32, [false] = 4} local ti64 = gg.getTargetInfo().x64 local type = flags[ti64] local addr = 0 if start then addr = start + offset[1] for index = 2, #offset do local pointer = gg.getValues({{address = addr, flags = type}}) if not ti64 then pointer[1].value = pointer[1].value & 0xFFFFFFFF end addr = pointer[1].value + offset[index] end end return addr end ---自制工具 function xyss(tzb,xgb,gnlx) gg.setRanges(tzb[1][3]) if tzb[1][4]==nil or tzb[1][5]==nil then tzb[1][4]=0 tzb[1][5]=-1 end gg.clearResults() gg.searchNumber(tzb[1][1],tzb[1][2], false, gg.SIGN_EQUAL, tzb[1][4], tzb[1][5]) local a=gg.getResultsCount() local k=gg.getResults(a) gg.clearResults() local ftz={} local xgb2={} local djb={} for v=1,a do for i=2,#tzb do ftz[#ftz+1]={address=k[v].address+tzb[i][3],flags=tzb[i][2]} end end local ftz=gg.getValues(ftz) for i=1,a do _sjj=0 for s=2,#tzb do if ftz[(#tzb-1)*(i-1)+s-1].value==tzb[s][1] then _sjj=_sjj+1 end if _sjj==#tzb-1 then for z=1,#xgb do if xgb[z][4]==true then table.insert(djb,{address=k[i].address+xgb[z][3],flags=xgb[z][2],value=xgb[z][1],freeze=true}) else table.insert(xgb2,{address=k[i].address+xgb[z][3],flags=xgb[z][2],value=xgb[z][1]}) end end end end end if gnlx=="修改" then gg.setValues(xgb2) gg.addListItems(djb) if #xgb2+#djb==0 then gg.toast("开启失败") else gg.toast("开启成功,共修改"..#xgb2..",冻结"..#djb.."个值") end elseif gnlx=="载入" then gg.loadResults(xgb2) gg.toast("共载入"..#xgb2.."个值") end end ---⑩GGBOX配置 local JCXX = gg.getTargetInfo(); local DJSFLB={}; local ZDYJLB={}; function NCZH(S) if(S==2)then return "Jh"; elseif(S==1)then return "Ch"; elseif(S==4)then return "Ca"; elseif(S==8)then return "Cd"; elseif(S==16)then return "Cb"; elseif(S==262144)then return "PS"; elseif(S==32)then return "A"; elseif(S==65536)then return "J"; elseif(S==64)then return "S"; elseif(S==524288)then return "As"; elseif(S==1048576)then return "V"; elseif(S==-2080896)then return "O"; elseif(S==131072)then return "B"; elseif(S==16384)then return "Xa"; elseif(S==32768)then return "Xs"; end end function QNCL(N) local x={}; local z=0; local n=gg.getRangesList(); for v,w in ipairs(n)do if w.state == N then x[#x+1]=w; x[#x].size=w["end"]-w["start"]; end end return x,#x; end function NCPX(nclb,sj) local nclc=#nclb; if(sj==1)then for i=1,nclc-1 do for j=1 ,nclc-1 do if(nclb[j].size>nclb[j+1].size)then local temp = nclb[j+1]; nclb[j + 1] = nclb[j]; nclb[j] = temp; end end end elseif(sj==2)then for i=1,nclc-1 do for j=1 ,nclc-1 do if(nclb[j].size0 or data.ncks>0 or data.ncjw<100)then local nclb,ncsl=QNCL(NCZH(data.ncfw)); if(ncsl==0)then gg.toast(data.gnm.."开启失败"); return false; end local nclb=NCPX(nclb,data.ncpx); local ks,GGBox=math.modf(#nclb*(data.ncks*0.01)); if(ks==0)then ks=1; end local jw,GGBox=math.modf(#nclb*(data.ncjw*0.01)); if(jw==0)then jw=#nclb; end for i=ks,jw do gg.clearResults(); gg.searchNumber(data.xss.sz, data.xss.lx, false, gg.SIGN_EQUAL, nclb[i]["start"], nclb[i]["end"], 0); gg.refineNumber(data.gs.sz, data.gs.lx); local sl=gg.getResultsCount(); if(sl>0)then local sj=gg.getResults(sl) for j=1,sl do sssl=sssl+1; sssj[sssl]=sj[j]; end end gg.clearResults(); end if(#sssj==0)then gg.toast(data.gnm.."开启失败"); return false; end; gg.loadResults(sssj); gg.getResults(sssl) else gg.clearResults(); gg.setRanges(data.ncfw); gg.searchNumber(data.xss.sz, data.xss.lx); gg.refineNumber(data.gs.sz, data.gs.lx); sssl=gg.getResultsCount(); if(sssl==0)then gg.toast(data.gnm.."开启失败"); return false; end; sssj=gg.getResults(sssl); end local xgz=data.xg.sz; if(data.zdyjl and ZDYJLB[data.md5])then xgz=ZDYJLB[data.md5]; end if(data.zdyxg)then local zdy=gg.prompt({data.zdybz},{xgz},{"number"}); if(zdy)then xgz=zdy[1]; if(data.zdyjl)then ZDYJLB[data.md5]=zdy[1]; end else gg.clearResults(); gg.toast(data.gnm.."取消开启"); return false; end; end; if(data.xgdj==false)then gg.editAll(xgz, data.xg.lx); gg.clearResults(); gg.toast(data.gnm.."开启成功"); return true; end; if(data.djsf)then if(DJSFLB[data.md5])then gg.removeListItems(DJSFLB[data.md5]); end; DJSFLB[data.md5]={}; for i, v in ipairs(sssj) do if v.flags == data.xg.lx then v.value = xgz; v.freeze = true; DJSFLB[data.md5][#DJSFLB[data.md5]+1]=v.address; end; end; else for i, v in ipairs(sssj) do if v.flags == data.xg.lx then v.value = xgz; v.freeze = true; end; end; end; gg.addListItems(sssj); gg.clearResults(); gg.toast(data.gnm.."开启成功"); return true; end; function PYXG(M,md5,S,G) local sfs=0; local sfl=0; if(DJSFLB[md5])then sfl=#DJSFLB[md5]; gg.removeListItems(DJSFLB[md5]); end; DJSFLB[md5]={}; local zdyjmsj={}; zdyjmsj.t={}; zdyjmsj.s={}; zdyjmsj.r={}; zdyjmsj.j={}; local zdyjl=0; for i,v in pairs(G) do if(v.zd)then zdyjl=zdyjl+1; zdyjmsj.t[zdyjl]=v.bz; if(v.jl and ZDYJLB[md5])then zdyjmsj.s[zdyjl]=ZDYJLB[md5][zdyjl]; else zdyjmsj.s[zdyjl]=v.sz; end zdyjmsj.r[zdyjl]="number"; zdyjmsj.j[zdyjl]=i end; end; if(zdyjl>0)then local zdy=gg.prompt(zdyjmsj.t,zdyjmsj.s,zdyjmsj.r); if(zdy)then ZDYJLB[md5]={}; for i=1,#zdyjmsj.j do ZDYJLB[md5][i]=zdy[i]; G[zdyjmsj.j[i]].sz=zdy[i]; end; else gg.toast(M.."取消开启"); return false; end; end; local xg,xgs,dj,djs={},0,{},0; for i,v in ipairs(S)do for I,V in ipairs(G)do local shuju={}; shuju["address"]=v.address+V.py; shuju["flags"]=V.lx; shuju["value"]=V.sz; if(V.dj)then shuju["freeze"]=true; djs=djs+1; dj[djs]=shuju; if(V.sf)then sfs=sfs+1; DJSFLB[md5][sfs]=v.address+V.py; end; else xgs=xgs+1; xg[xgs]=shuju; end; end; end; gg.setValues(xg); gg.addListItems(dj); gg.toast(M.."开启成功\n修改"..xgs.."|冻结"..djs.."|释放"..sfl); end; function TZMPT(ztz,ftz) local linshishuju; local xinshuju; local ftzs=#ftz for i=1,ftzs do linshishuju={}; xinshuju={}; for ii,v in ipairs(ztz)do linshishuju[ii]={}; linshishuju[ii].address=v.address+ftz[i].py; linshishuju[ii].flags=ftz[i].lx; end; for ii,v in ipairs(gg.getValues(linshishuju))do if(v.value==ftz[i].sz)then xinshuju[#xinshuju+1]=ztz[ii] end; end; if(#xinshuju==0)then return false; end; ztz=xinshuju; end; return ztz end; function PYSS(data) local sssl=0; local sssj={}; if(data.ncpx>0 or data.ncks>0 or data.ncjw<100)then local nclb,ncsl=QNCL(NCZH(data.ncfw)); if(ncsl==0)then gg.toast(data.gnm.."开启失败"); return false; end local nclb=NCPX(nclb,data.ncpx); local ks,GGBox=math.modf(#nclb*(data.ncks*0.01)); if(ks==0)then ks=1; end local jw,GGBox=math.modf(#nclb*(data.ncjw*0.01)); if(jw==0)then jw=#nclb; end for i=ks,jw do gg.clearResults(); gg.searchNumber(data.ztz.sz, data.ztz.lx, false, gg.SIGN_EQUAL, nclb[i]["start"], nclb[i]["end"], 0); local sl=gg.getResultsCount(); if(sl>0)then local sj=gg.getResults(sl) for j=1,sl do sssl=sssl+1; sssj[sssl]=sj[j]; end end gg.clearResults(); end if(#sssj==0)then gg.toast(data.gnm.."开启失败\n未找到主特征"); return false; end; gg.clearResults(); else gg.clearResults(); gg.setRanges(data.ncfw); gg.searchNumber(data.ztz.sz, data.ztz.lx); sssl=gg.getResultsCount(); if(sssl<1)then gg.toast(data.gnm.."开启失败\n未找到主特征"); return false; end; sssj=gg.getResults(sssl); gg.clearResults(); end sssj=TZMPT(sssj,data.ftz); if(sssj)then PYXG(data.gnm,data.md5,sssj,data.xgz); else gg.toast(data.gnm.."开启失败\n未找到副特征"); return false; end; end; function ZZTZ(mk,zzlt) local zzlts=#zzlt; if(zzlts==0)then return false; end local sjlx; if(JCXX.x64)then sjlx=32; else sjlx=4; end; local shuzu={}; shuzu[1] = {}; shuzu[1].address = mk.start + zzlt[1]; shuzu[1].flags = sjlx; if zzlts ~= 1 then for i = 2, zzlts do local dushuju = gg.getValues(shuzu); shuzu = {} for _ in pairs(dushuju) do if not JCXX.x64 then dushuju[_].value = dushuju[_].value & 0xFFFFFFFF end shuzu[1] = {} shuzu[1].address = dushuju[_].value + zzlt[i] shuzu[1].flags = sjlx end; end; end; return shuzu; end; function ZZSS(data) local mklb={}; local mklbs=0; local t = gg.getRangesList('^/data/*'..data.mkm..'*$'); for i,v in pairs(t) do if(v.type:sub(1, 1)=="r" and (v.state==NCZH(data.nclx)))then mklbs=mklbs+1; mklb[mklbs]=v; end; end; if(mklbs==0)then gg.toast(data.gnm.."开启失败\n没找到模块头"); return false; end local k,j; if(data.xh==0)then k=1; j=mklbs; else if(mklbs 0 then local tb = {{},{}} for i,v in ipairs(result) do --- 遍历每个结果 for _,vv in ipairs(write) do local p = {address = v.address + vv[2],flags = vv[3],value = vv[1],freeze = vv[4]} if vv[4] then --- true 就是冻结 table.insert(tb[2],p) else table.insert(tb[1],p) end end end gg.addListItems(tb[2]) gg.setValues(tb[1]) gg.toast(name.."已解析\n共解析" .. (#tb[1] + #tb[2]) .. "条数据\n耗时"..os.clock()-time.."秒") else gg.toast("解析失败") end end end --11快搜指针 function fastsearch(search,write)gg.setVisible(false)gg.clearResults()gg.setRanges(search[1][3])time=os.clock()gg.searchNumber(search[1][1],search[1][2],false,gg.SlGN_EQUAL,0,-1)if gg.getResultsCount()==0 then gg.toast("未搜索到主特征码")return false else local result = gg.getResults(gg.getResultsCount())gg.clearResults()for i = 2,#search do local mtp={}for w,r in ipairs(result)do mtp[#mtp+1]={address=r.address+search[i][2],flags=search[i][3]}end mtp=gg.getValues(mtp)local hook={}for w,r in ipairs(mtp)do if r.value==search[i][1]then hook[#hook+1]=result[w]end end result=hook end if #result>0 then local tb={{},{}}for i,v in ipairs(result)do for _,vv in ipairs(write)do local p={address=v.address+vv[2],flags=vv[3],value=vv[1],freeze=vv[4]}if vv[4]then table.insert(tb[2],p)else table.insert(tb[1],p)end end end gg.addListItems(tb[2])gg.setValues(tb[1])gg.toast(name.."已解析\n共解析" .. (#tb[1] + #tb[2]) .. "条数据\n耗时"..os.clock()-time.."秒")else gg.toast("解析失败")end end end function BaVal(add,type,name)return gg.getValues({[1]={address=add,flags=type,freeze=name}})[1]['value'] end function BaAdd(add)return gg.getValues({[1]={address=add,flags=32,freeze=name}})[1]['value']&0xFFFFFFFFFF end ---------------------------------------------------------上边是配置-------------------------------------------- --↑配置文件↑ ---感谢一直以来的陪伴-/没时间写了 ---作者小奈=<2448299433> ---二改拿功能请留名 ---能看懂的话你就去改成你自己的 --末世基址 ---顶端配置不懂别动 ------- ---- changan = {} local changan = changan local android = import('android.*') function write(fileName, content) if file.write(fileName, content) == false then balert("请给框架和修改器 文件储存权限\n否则无法正常运行") os.exit() end end if not resname then resname = "小奈宇宙服助手" end if not 悬浮窗图标 then 悬浮窗图标=((悬浮窗图标)) end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/sdcard/"..resname.."/配置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep --if gg.isHTTPdump()==true and panduan("/sdcard/"..resname.."/配置文件/vpn.txt") == false then balert("抓包?") os.exit() end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/"..resname.."/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/"..resname.."/配置文件/"..lujing) end function pmusic(x) if audiokg == "开" then tmp1 = 0 gg.playMusic(x) tmp1 = 1 end end if pdcf("audio") ~= true then wtcf("audio","开") end audiokg = rdcf("audio") function camusic(ress) tmp1 = 0 if audiokg == "开" then if panduan("/sdcard/"..resname.."/音频/"..ress) == true then pmusic("/sdcard/"..resname.."/音频/"..ress) tmp1 = 1 else download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..ress ,"/sdcard/"..resname.."/音频/"..ress) pmusic("/sdcard/"..resname.."/音频/"..ress) tmp1 = 1 end end end 开 = "开" 关 = "关" function checkimg(tmp) if panduan("/sdcard/"..resname.."/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download("https://escape2020-1303126286.cos.ap-shenzhen-fsi.myqcloud.com/"..tmp,"/sdcard/"..resname.."/图片/"..tmp) end end ckimg = { "check1", "check2", "wsbg", "back", "exit", "yzf1", "yzf2", "yzflogo", "yzfbt1", "yzfbt2", "yzfalt", "qq2" } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) end local Typeface = luajava.bindClass("android.graphics.Typeface") local fontPath = "/storage/emulated/0/阿沫幸福四叶草字体.ttf" local fontFile = luajava.newInstance("java.io.File", fontPath) typeface= Typeface:createFromFile(fontFile) local context = app.context local 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 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 getseekgra() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffC8E3FF,0x33a87DFF,0xffC7CBFC }) jianbians:setStroke(5,"0xdda87DFF")--边框宽度和颜色 return jianbians end function getseekgra2() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffD4F0FE,0xffC7CBFC }) jianbians:setStroke(2,"0xff000000")--边框宽度和颜色 return jianbians end slctb = luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfbt1") slct2a = luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 30 } slcta=luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfbt2") 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 = "#aa000000", cornerRadius = 12 } function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfbt2")) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfbt1")) -- 没点击的背景 return selector end function getSelector9() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfbt1")) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfbt2")) -- 没点击的背景 return selector end function getseekgras() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, getseekgra()) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed },getseekgra2()) -- 没点击的背景 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 function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian1 = luajava.new(GradientDrawable) jianbian1:setCornerRadius(30) jianbian1:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian3 = luajava.new(GradientDrawable) jianbian3:setCornerRadius(30) jianbian3:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian4 = luajava.new(GradientDrawable) jianbian4:setCornerRadius(30) jianbian4:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() changan.menu = function(stext,sview) if isswitch then return false end isswitch = true cebian = { LinearLayout, id = "侧边", visibility = "gone", layout_height = "match_parent", layout_width = "92dp", orientation = "vertical", background = { GradientDrawable, color = "#11ffffff", cornerRadius = 30 }, } for i = 1,5 do _ENV["jm"..i] = luajava.loadlayout { LinearLayout, id = "jm"..i, gravity = "center", layout_height = "33dp", layout_width = "88dp", layout_marginTop = "10dp", layout_marginBottom= "10dp", onTouch = hanshu, background=getSelector(), onClick = function() 切换(i) end, { TextView, id = "jm"..i.."tu", text = stab[i], textColor="#6A47FF", layout_height = "23dp", layout_width = "88dp", gravity = "center", onTouch = hanshu, onClick = function() 切换(i) end, }} cebian[#cebian+1] = _ENV["jm"..i] _ENV["layout"..i] = luajava.loadlayout({ LinearLayout, id = luajava.newId("lay"..i), visibility = "gone", gravity="center", layout_width = "wrap_content", layout_height = "fill_parent", { ScrollView, fillViewport = "true", padding = "10dp", --id = "layout"..i, --visibility = "visible", gravity="center", layout_width = "320dp", layout_height = "fill_parent", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, gravity = "top", layout_width = "300dp", orientation = "vertical", gravity = "center_horizontal", } }}) end cebian[#cebian+1] = { ImageView, id = "exit", src = "/sdcard/"..resname.."/图片/exit", layout_width = "88dp", layout_height = "20dp", layout_marginTop = "10dp", layout_marginLeft = "0dp", onTouch = hanshu, } cebian = luajava.loadlayout(cebian) ckou = luajava.loadlayout({ LinearLayout, id = "chuangk", visibility = "gone", layout_height = "match_parent", layout_width = "wrap_content", orientation = "horizontal", cebian, layout1,layout2,layout3,layout4,layout5, {LinearLayout, layout_height="fill_parent", layout_width="120dp", background=beij2 } }) title = luajava.loadlayout({ TextView, id = "title", visibility = "gone", text = stext, gravity = "center", textSize = "18sp", layout_marginLeft = "50dp", layout_width = "300dp", }) floatWindow = { LinearLayout, id = "motion", --padding="50dp", layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { ImageView, id="ctrl", visibility="gone", background = 悬浮窗图标, layout_width = "38dp", layout_height = "38dp", onTouch=hanshu, onClick=隐藏, }, { LinearLayout, id="mainbg", orientation = "vertical", layout_marginLeft = "60dp", layout_marginRight = "20dp", layout_marginBottom = "60dp", { LinearLayout, layout_width = "match_parent", layout_height = "48dp", orientation = "horizontal", gravity = "center_vertical", { LinearLayout, layout_width = "88dp", layout_height = "38dp", id = "control", background = { GradientDrawable, color = "#00000000", cornerRadius = 20 }, gravity = "center", { ImageView, background = 悬浮窗图标, layout_width = "38dp", layout_height = "38dp", }}, title, }, ckou }, } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for i = 1,#sview[1] do layoutm1:addView(sview[1][i]) end for i = 1,#sview[2] do layoutm2:addView(sview[2][i]) end if #sview >= 3 then for i = 1,#sview[3] do layoutm3:addView(sview[3][i]) end end if #sview >= 4 then for i = 1,#sview[4] do layoutm4:addView(sview[4][i]) end end if #sview >= 5 then for i = 1,#sview[5] do layoutm5:addView(sview[5][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = function() 隐藏() end jm1.onClick = function() 切换(1) end jm2.onClick = function() 切换(2) end jm3.onClick = function() 切换(3) end jm4.onClick = function() 切换(4) end exit.onClick = function() gg.toast("小奈宇宙服助手已退出") window:removeView(floatWindow) luajava.setFloatingWindowHide(false) bloc("end") end local isMove motion.onTouch = hanshu control.onTouch = hanshu exit.onTouch = hanshu jm1.onTouch = hanshu jm2.onTouch = hanshu jm3.onTouch = hanshu jm4.onTouch = hanshu --layout1.onTouch=hanshu --layout2.onTouch=hanshu end invoke() jm1:setBackground(slcta) function grad(rgb1,rgb2,rgb3,rgb4,step) for j = 1,step do rgb = {} for i = 1,3 do rgb[i] = rgb1[i] + (rgb2[i]-rgb1[i]) * j / step end endco = getcolor({ 100,rgb[1],rgb[2],rgb[3]}) --gg.sleep(50) rgb = {} for i = 1,3 do rgb[i] = rgb3[i] + (rgb4[i]-rgb3[i]) * j / step end endco2 = getcolor({ 100,rgb[1],rgb[2],rgb[3]}) jianbian:setColors({ endco,endco2 }) layout1:setBackground(jianbian) gg.sleep(80) end end gg.setVisible(false) luajava.setFloatingWindowHide(true) end changan.controlFlip = function(control,time) luajava.runUiThread(function() import "android.view.animation.Animation" import "android.animation.ObjectAnimator" xuanzhuandonghua = ObjectAnimator:ofFloat(control, "rotationY", { 0, 360 }) xuanzhuandonghua:setRepeatCount(0) xuanzhuandonghua:setRepeatMode(Animation.REVERSE) xuanzhuandonghua:setDuration(time) xuanzhuandonghua:start() end) end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,5 do _ENV["jm"..i]:setBackground(getSelector()) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) _ENV["jm"..当前ui]:setBackground(slcta) changan.controlFlip(_ENV["jm"..当前ui],600) --YoYoImpl:with("FadeIn"):duration(400):playOn(_ENV["layout"..当前ui]) end) end 显示 = 0 beij = luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/wsbg") beij2 = luajava.loadlayout({ GradientDrawable, color = "#00000000", cornerRadius = 30 }) function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*6.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 function 隐藏() luajava.runUiThread(function() --control:setBackground(luajava.getBitmapDrawable("/sdcard/"..resname.."/图片/ditf3")) if tonumber(tostring(cebian:getVisibility())) == 8.0 then chuangk:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) ctrl:setVisibility(View.GONE) mainbg:setVisibility(View.VISIBLE) title:setVisibility(View.VISIBLE) luajava.runUiThread(function() mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) end) YoYoImpl:with("SlideInDown"):duration(200):playOn(cebian) luajava.runUiThread(function() YoYoImpl:with("SlideInLeft"):duration(800):playOn(title) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) floatWindow:setBackground(beij) end) else luajava.runUiThread(function()mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) end) title:setVisibility(View.GONE) mainbg:setVisibility(View.GONE) ctrl:setVisibility(View.VISIBLE) floatWindow:setBackground(beij2) chuangk:setVisibility(View.GONE) cebian:setVisibility(View.GONE) _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end function balert(bltxt,bltxt1,bltxt2) result=0 local block = luajava.getBlock() if not bltxt then bltxt='By.AY' end if not bltxt1 then bltxt1='取消' end if not bltxt2 then bltxt2='确定' end bltxt=tostring(bltxt) bltxt1=tostring(bltxt1) bltxt2=tostring(bltxt2) local dialog = luajava.new(AlertDialog.Builder, app.context) local block = luajava.getBlock() local result local function exit() block('end') end layoutabc=luajava.loadlayout({ScrollView, {LinearLayout, background="#00000000", orientation="vertical", layout_width="match_parent", layout_height="match_parent", gravity = 'center', {ScrollView, gravity="center", layout_height="230dp", layout_width="fill_parent", padding="25dp", {LinearLayout, layout_marginTop="20dp", gravity="center", layout_height="220dp", layout_width="fill_parent", padding="25dp", {TextView, id = luajava.newId('弹窗文字'), textSize="18sp", text = bltxt, layout_height="wrap_content", layout_width="fill_parent", layout_gravity="center", gravity="center", },}}, {LinearLayout, gravity="center", layout_height="50dp", layout_width="fill_parent", orientation="horizontal", {LinearLayout, id="balt1", background=getSelector9(), layout_width="wrap_content", layout_marginRight="50dp", {TextView, gravity="center", text=bltxt1, layout_height="36dp", textSize="13sp", textColor="#7026FF", layout_width="wrap_content", layout_marginLeft="60dp", layout_marginRight="60dp", }}, {LinearLayout, id="balt2", background=getSelector3(), layout_width="wrap_content", layout_marginLeft="50dp", {TextView, gravity="center", text=bltxt2, layout_height="36dp", textSize="13sp", textColor="#7026FF", layout_width="wrap_content", layout_marginLeft="60dp", layout_marginRight="60dp", }} }}}) balt1.onClick = function() result = 1 dialog:dismiss() exit() end balt2.onClick = function() result = 2 dialog:dismiss() exit() end dialog:setView(layoutabc) dialog:setOnDismissListener(luajava.createProxy('android.content.DialogInterface$OnDismissListener', { onDismiss = function(view) block("end") end})) local function invoke() dialog = dialog:create() local window = dialog:getWindow() window:setType(Build.VERSION.SDK_INT >= 26 and 2038 or 2002) window:setBackgroundDrawable(luajava.getBitmapDrawable("/sdcard/小奈宇宙服助手/图片/yzfalt")) window:getDecorView():setPadding(0,0,0,0) dialog:show() window:setLayout(1500,900) YoYoImpl:with("FadeIn"):duration(300):playOn(layoutabc) end luajava.handlerPost(invoke) block('join') return result 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 function changan.switch(name,func1,func2,color) if not color then color="#7026FF" end local func = 开关(name,func1,func2) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "wrap_content", gravity="center", { LinearLayout, layout_width = '260dp', layout_hight = "wrap_content", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", background = getseekgra(), { TextView, gravity = "center", textColor = color, text = name, layout_width = '160dp', layout_marginLeft = "20dp", layout_marginTop = "10dp", layout_marginBottom = "10dp", }, { Switch, gravity = "top", layout_width = '50dp', layout_hight = "10dp", layout_marginRight = "30dp", --id=luajava.newId(tid), switchMinWidth = "20dp", onCheckedChange = function(Switch,var2,var3) if var2 == true then var2 = "开" else var2 = "关" end luajava.newThread(function() func() end):start() end, }} }) return rest end function changan.button(txt,func,color) if not color then color="#7026FF" end if not txt then txt = "未设置" end return luajava.loadlayout( { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", layout_height = "wrap_content", gravity = "center_horizontal", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "25dp", layout_marginRight = "25dp", background = getSelector3(), onClick = function() luajava.newThread(function() func() end):start() end, { TextView, layout_marginTop = "10dp", layout_marginBottom = "10dp", --id = luajava.newId(tid), text = txt, gravity="center", textColor = color, textSize = "15sp", layout_width = "180dp", }, }}) end function changan.button2(txt,func,color) if not color then color="#7026FF" end if not txt then txt = "未设置" end return luajava.loadlayout( { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", layout_height = "wrap_content", gravity = "center_horizontal", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "25dp", layout_marginRight = "25dp", background = getseekgras(), onClick = function() luajava.newThread(function() func() end):start() end, { TextView, layout_marginTop = "10dp", layout_marginBottom = "10dp", layout_marginLeft = "20dp", layout_marginRight = "20dp", --id = luajava.newId(tid), text = txt, gravity="center", textColor = color, textSize = "12sp", layout_width = "180dp", }, }}) end chazhi = {} chajv = {} function changan.seek(name,bian,smin,smax,nows,color) if not color then color="#7026FF" end _ENV[bian] = nows thum = getseekgra() thum:setSize(60, 60) smin = tonumber(smin) smax = tonumber(smax) chajv[bian] = smax-smin chazhi[bian] = 1-smin if smin == nil then smin = 1 smax = 10 end truesmin = 1 truesmax = truesmin+chajv[bian] if not nows then nows = smin tnows = (smin-nows) else tnows = (nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = '260dp', layout_hight = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", background = getseekgra(), { TextView, gravity = "top", textColor = color, text = name..":"..nows, id = luajava.newId(names), layout_width = '100dp', layout_marginLeft = "2dp", layout_marginRight = "0dp", layout_marginTop = "15dp", layout_marginBottom = "15dp", }, { SeekBar, layout_width = '160dp', min = truesmin, max = truesmax, progress = tnows, progressDrawable = { getseekgra2()}, thumb = thum, onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar = tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) return rest end function changan.edit(name) _ENV[name] = name..guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", { LinearLayout, layout_width = 'fill_parent', layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "20dp", layout_marginRight = "20dp", gravity = "center_vertical", background = getseekgra(), { EditText, gravity = "center", hint = name, textColor = "#7026FF", id = luajava.newId(_ENV[name]), layout_width = 'fill', layout_marginLeft = "10dp", layout_marginRight = "10dp", }} }) return rest end function changan.getedit(name) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function changan.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function changan.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical" } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1],textColor = "#000000", } end radios = { RadioGroup,background = luajava.loadlayout({ GradientDrawable, color = "#11000000", cornerRadius = 30 }),layout_width = 'fill_parent',layout_height = "wrap_content", } for i = 2,#radio do radios[#radios+1] = { RadioButton, layout_width = 'fill_parent', text = radio[i][1], onClick = function() luajava.newThread(function() radio[i][2]() end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function changan.check(cklist) rest = { LinearLayout, layout_width = 'match_parent', layout_height = "30dp", layout_marginTop = "10dp", gravity = "left" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if not name then name = "未设置" end nid = name..guid() local func = 开关2(nid,func1,func2,nid) rstt = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "30dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "0dp", layout_marginRight = "10dp", gravity = "center_vertical", { ImageView, id = luajava.newId(nid), layout_width = '20dp', layout_height = "20dp", background = "/sdcard/"..resname.."/图片/check1", onClick = function() luajava.newThread(function() func() end):start() end, }, { TextView, gravity = "top", text = name, textColor = "#000000", layout_width = 'wrap_content', layout_height = 'wrap_content', layout_marginLeft = "4dp", layout_marginRight = "5dp", }}) rest[#rest+1] = rstt end return luajava.loadlayout(rest) end function changan.text(txt,color) if not txt then txt = "未设置文字" end if not color then color = "#ffffff" end return luajava.loadlayout( { TextView, text = txt, textSize = "18sp", textColor = color, layout_width = "wrap_content", }) end corb = true 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/"..resname.."/图片/check2")) end) _ENV[name] = "开" func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/"..resname.."/图片/check1")) end) _ENV[name] = "关" func2() end end end end function 开关(name,func1,func2) 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 _ENV[name] = "开" func1() else _ENV[name] = "关" func2() end end end end function 功能图标1(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() jm1tu:setImageDrawable(luajava.getBitmapDrawable(txt)) end)---例子 end function 功能图标2(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() jm2tu:setImageDrawable(luajava.getBitmapDrawable(txt)) end)---例子 end function 功能图标3(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() jm3tu:setImageDrawable(luajava.getBitmapDrawable(txt)) end)---例子 end function 功能图标4(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() jm4tu:setImageDrawable(luajava.getBitmapDrawable(txt)) end)---例子 end function 功能图标5(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() jm5tu:setImageDrawable(luajava.getBitmapDrawable(txt)) end)---例子 end function 悬浮窗图标(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() control:setBackgroundDrawable(luajava.getBitmapDrawable(txt)) end)---例子 end function 功能背景1(txt) if type(txt) == "string" then ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() layout1:setBackgroundDrawable(luajava.getBitmapDrawable(txt)) end)---例子 else luajava.runUiThread(function() layout1:setBackgroundDrawable(txt) end)---例子 end end function 功能背景2(txt) if type(txt) == "string" then ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() layout2:setBackgroundDrawable(luajava.getBitmapDrawable(txt)) end)---例子 else luajava.runUiThread(function() layout2:setBackgroundDrawable(txt) end)---例子 end end function 功能背景3(txt) if type(txt) == "string" then ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() layout3:setBackgroundDrawable(luajava.getBitmapDrawable(txt)) end)---例子 else luajava.runUiThread(function() layout3:setBackgroundDrawable(txt) end)---例子 end end function 功能背景4(txt) if type(txt) == "string" then ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() layout4:setBackgroundDrawable(luajava.getBitmapDrawable(txt)) end)---例子 else luajava.runUiThread(function() layout4:setBackgroundDrawable(txt) end)---例子 end end function 功能背景5(txt) if type(txt) == "string" then ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/"..resname.."/图片/"..ntxt) == false then download(txt,"/sdcard/"..resname.."/图片/"..ntxt) end txt = "/sdcard/"..resname.."/图片/"..ntxt end luajava.runUiThread(function() layout5:setBackgroundDrawable(luajava.getBitmapDrawable(txt)) end)---例子 else luajava.runUiThread(function() layout5:setBackgroundDrawable(txt) end)---例子 end end tzid={} tzltt={} function 生成拓展(name,views) _ENV[name.."拓展"]=0 tzid[name] = "layout"..guid() tzltt[name] = luajava.loadlayout({ ScrollView, fillViewport = "true", --padding = "10dp", --id = "layout"..i, --visibility = "visible", gravity="center", layout_width = "320dp", layout_height = "fill_parent", orientation = "horizontal", { LinearLayout, id = luajava.newId(tzid[name]), background = getseekgra(), layout_width = "230dp", layout_marginRight="60dp", orientation = "vertical", gravity = "center_horizontal", } }) local tz = luajava.getIdValue(tzid[name]) local function invoke2() for i = 1,#views do tz:addView(views[i]) end end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function 拓展(lt,name) if _ENV[name.."拓展"]==nil or _ENV[name.."拓展"]==1 then return 0 end _ENV["layout"..lt] = luajava.getIdValue("lay"..lt) local function invoke2() _ENV["layout"..lt]:addView(tzltt[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) _ENV[name.."拓展"]=1 end function 取消拓展(i,j) if _ENV[j.."拓展"]==nil or _ENV[name.."拓展"]==0 then return 0 end _ENV["lay"..i] = luajava.getIdValue("lay"..i) local function invoke2() _ENV["lay"..i]:removeView(tzltt[j]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) _ENV[j.."拓展"]=0 end tupian = luajava.loadlayout( { LinearLayout, layout_height = "100dp", layout_width = "100dp", background="/sdcard/小奈宇宙服助手/图片/qq2" }) function getShape00(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ tmp1,tmp2 }) return jianbians end function huoqu(txt) return table.json(gg.makeRequest(wyyget.."song/url/v1?id="..txt.."&level=standard").content) end function souyy(txt) return table.json(gg.makeRequest("http://music.163.com/api/search/get?s="..txt.."&type=1&offset=0&total=true&limit=10").content) end function develo(tabb) gg.alert(tostring(tabb)) end function develo2(tabb) gg.copyText(tostring(tabb)) end function tablekIn(tbl, key) if tbl == nil then return false end for k, v in pairs(tbl) do if k == key then return true end end return false end function getbg() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(15) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x11000000,0x11000000}) jianbians:setStroke(4,"0xddffffff")--边框宽度和颜色 selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, jianbians) -- 没点击的背景 return selector end function searchmusic() if not lasttm then lasttm = os.time() else if os.time() - lasttm <= 5 then gg.alert("请在" .. (5 - (os.time() - lasttm)) .. "秒冷却后搜索") return 0 end end if not wryt then else runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):removeView(wyr) end) handler = luajava.getHandler() handler:post(runnable) end mustxt = luajava.getIdView("搜索"):getText() if string.len(tostring(mustxt)) <= 2 or tostring(mustxt) == nil then gg.alert("至少输入2个字符") return 0 end mustxt = tostring(mustxt) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.VISIBLE) luajava.getIdView("stxt"):setVisibility(View.GONE) end) lasttm = os.time() mustable = souyy(mustxt) mustable = mustable.result.songs -- print(mustable) musnames = {} musids = {} musarts = {} musictable = {} for k, v in pairs(mustable) do musictable[#musictable + 1] = v end -- gg.alert(tostring(mustable)) -- gg.alert(tostring(musictable)) -- gg.copyText(tostring(mustable)) -- gg.alert(#musictable) wrfun = {} wryt = { LinearLayout, id = luajava.newId("搜索结果"), layout_marginTop = "5dp", layout_marginBottom = "5dp", orientation = "vertical" } for i = 1, #musictable do musid = musictable[i].id -- print('musid',musid) -- musid = musictable[i].album.id -- print('musid',musid) musids[#musids + 1] = musid musname = musictable[i].name if tablekIn(musictable[i], "transNames") ~= false then musname = musname .. "\n(" .. musictable[i].transNames[0] .. ")" end musnames[#musnames + 1] = musname musart = musictable[i].artists[0].name musarts[#musarts + 1] = musart wryt[#wryt + 1] = { LinearLayout, orientation = "vertical", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = luajava.loadlayout{GradientDrawable,color=0xffffffff,cornerRadius=20}, id = luajava.newId("音" .. musid), onClick = function() thread = luajava.getThread(function() bofang(musname, musid) end) thread:start() end, { TextView, layout_marginTop = "5dp", textSize = "15sp", textColor = "#7026FF", layout_marginBottom = "0dp", text = musname, layout_hight = "10dp", layout_width = "228dp", gravity = "center" }, { TextView, layout_marginTop = "0dp", textColor = "#7026FF", textSize = "12sp", layout_marginBottom = "5dp", text = musart, layout_hight = "10dp", layout_width = "200dp", gravity = "center" } } -- gg.sleep(50) wryt[#wryt].onClick = function() -- (function() -- bofang(musnames[i] .. musarts[i], musids[i]) -- end):start() luajava.startThread(function() bofang(musnames[i] .. musarts[i], musids[i]) end) end end wyr = luajava.loadlayout(wryt) runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):addView(wyr) end) handler = luajava.getHandler() handler:post(runnable) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.GONE) luajava.getIdView("stxt"):setVisibility(View.VISIBLE) end) -- gg.alert(tostring(wrfun)) end function bofang(gqmz, gdmn) luajava.runUiThread(function() luajava.getIdView("搜索结果"):setVisibility(View.GONE) luajava.getIdView("加载"):setVisibility(View.VISIBLE) end) gg.playMusic("http://music.163.com/song/media/outer/url?id="..gdmn..".mp3" or huoqu(gdmn).data[0].url) -- gg.sleep(2000) luajava.runUiThread(function() luajava.getIdView("加载"):setVisibility(View.GONE) luajava.getIdView("搜索结果"):setVisibility(View.VISIBLE) end) end stxt = { TextView, text = "搜索", textColor="#161616", background=luajava.loadlayout{GradientDrawable,color=0xffffffff,cornerRadius=20}, layout_height="match_parent", visibility = "visible", gravity="center", layout_marginRight="10dp", id = luajava.newId("stxt"), layout_marginLeft = "3dp", textSize = "15sp", padding={"13.5dp","0dp","13.5dp","0dp"}, onClick = function() thread = luajava.getThread(function() searchmusic() end) thread:start() end } jzz = { TextView, text = "加载中", visibility = "gone", id = luajava.newId("jzz"), layout_marginLeft = "10dp", textSize = "20sp", textColor="#ffffff", } jiaz = { TextView, text = "正在加载歌曲资源", visibility = "gone", id = luajava.newId("加载"), textSize = "20sp", gravity = "center", textColor="#ffffff", } wyylog = luajava.loadlayout({ LinearLayout, orientation="vertical", layout_width = "match_parent", LayoutTransition=layoutTransitions, { ScrollView, layout_hight = "220dp", gravity="center_horizontal", layout_width = "match_parent", { LinearLayout, layout_width = "match_parent", {LinearLayout, padding="4dp", gravity="center", orientation="vertical", id=luajava.newId("固定音乐"), }, id = luajava.newId("搜索列表"), layout_hight = "300dp", orientation = "vertical", layout_width = "match_parent", gravity="center_horizontal", LayoutTransition=layoutTransitions, { LinearLayout, orientation = "horizontal", layout_width = "match_parent", padding={"10dp","0dp","10dp","0dp"}, { EditText, hint = "搜索歌曲名称", hintTextColor = "#161616", textColor="#7026FF", id = luajava.newId("搜索"), background = luajava.loadlayout{GradientDrawable,color=0xffffffff,cornerRadius=20}, focusableInTouch = "true", focusable = "true", selectAllOnFocus = "true", singleLine = "true", layout_weight=1, gravity="center", layout_width = "match_parent" }, stxt, jzz }, jiaz } } }) if loadingBox~=nil then loadingBox['关闭']() end