do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '陌路人内置', appid = '14946', appkey = 'y0GobGYb63c6Xhh6', rc4key = '8LUCP5I0iloDaqSC', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= 'b2c205ab324a7e3d99e733f6ec1f687b' then os.exit() return end end -- 把以上代码复制到你脚本最前面即可 gg.alert('陌路人内置') --[[ 【开关】开【开关】 【公告】这里填你的公告【公告】 ]] toMusic("欢迎使用陌路人内置") function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end draw.text('陌路人', 26,650) draw.setColor('#FFFFFF') local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end draw.text('欢迎使用内置', 26,600) draw.setColor('#FFFFFF') local floatingWindowManager = require('floatingWindowManager') floatingWindowManager:init() function interruptThread(thread) if thread then pcall(function() thread:interrupt() end) end end -- 获取异步线程回调 local function getASyncThreadCallbak(func) return function() luajava.startThread(function() return pcall(func) end) end end -- 获取同步线程回调, 涉及gg类库的回调只能使用这种,否则可能不稳定 local task local function getSyncThreadCallbak(func) return function() if task then gg.toast('正在运行其它任务,再稍后!') return end luajava.startThread(function() task = true pcall(func) task = nil end) end end -- 获取同步线程回调并执行 local function callSyncThreadCallbak(func) return getSyncThreadCallbak(func)() end -- 通过功能名称找 function 并获取同步线程回调 local function findFunctionByName(name) local func = _ENV[name] if not isFunction(func) then gg.alert(string.format('不存在 %q 功能', name)) return nil end return getSyncThreadCallbak(func) end -- 按钮工厂-生产“按钮布局” local function newButtonLayout(name) if not isString(name) then return end local layout = { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = name, textSize = '16sp', onClick = findFunctionByName(name) } return layout end -- 开关工厂-生产“开关布局” local function newSwitchLayout(openName, closeName) if not isString(openName) then return end local layout = { Switch, layout_width = 'match_parent', text = openName, onCheckedChange = function(CompoundButton, state) local func if state then -- 设置开关文本为“关闭”的文本 if isString(closeName) then CompoundButton:setText(closeName) end -- 找“打开”的功能函数 func = findFunctionByName(openName) else -- 设置开关文本为“打开”的文本 CompoundButton:setText(openName) if isString(closeName) then -- 找“关闭”的功能函数 func = findFunctionByName(closeName) end end if isFunction(func) then -- 通过 findFunctionByName 获取的函数已经是被多线程包裹的,所以直接执行就可以了 func() end end } return layout end function SignatureSearch(FirstCode,SecondCode,Get) gg.clearResults() gg.setRanges(FirstCode[6]) gg.setVisible(false) if FirstCode[1] then gg.searchNumber(FirstCode[1],FirstCode[5],false,gg.SIGN_EQUAL,FirstCode[3] or 0,FirstCode[4] or -1) end if FirstCode[2] then gg.searchAddress(FirstCode[2],-1,FirstCode[5],gg.SIGN_EQUAL,0,-1) end if gg.getResultsCount()>0 then local results1,results2,NewResults=gg.getResults(gg.getResultsCount()),gg.getResults(gg.getResultsCount()),{} gg.clearResults() if #SecondCode>0 then for i=1,#SecondCode do local Results={} if i%2==1 then for j,result in ipairs(results1) do Results[#Results+1]={} Results[#Results].address=result.address+SecondCode[i][2] Results[#Results].flags=SecondCode[i][3] end results2={} else for j,result in ipairs(results2) do Results[#Results+1]={} Results[#Results].address=result.address+SecondCode[i][2] Results[#Results].flags=SecondCode[i][3] end results1={} end Results=gg.getValues(Results) local value,code=nil,nil for k,result2 in ipairs(Results) do if result2.flags==16 or result2.flags==64 then value=tostring(result2.value):sub(1,6) code=tostring(SecondCode[i][1]):sub(1,6) else value=result2.value code=SecondCode[i][1] end if i%2==1 then if value==code then results2[#results2+1]=results1[k] end else if value==code then results1[#results1+1]=results2[k] end end end end end if #SecondCode%2==1 then NewResults=results2 else NewResults=results1 end local changeresults,keepresults,loadresults={},{},{} if #NewResults>0 then for i,result in ipairs(NewResults) do for j,conduct in ipairs(Get) do if conduct[1] then changeresults[#changeresults+1]={} changeresults[#changeresults].value=conduct[1] changeresults[#changeresults].address=result.address+conduct[2] changeresults[#changeresults].flags=conduct[3] else loadresults[#loadresults+1]={} loadresults[#loadresults].address=result.address+conduct[2] loadresults[#loadresults].flags=conduct[3] end if conduct[4] or conduct[5] then keepresults[#keepresults+1]={} if conduct[1] then keepresults[#keepresults].value=conduct[1] else keepresults[#keepresults].value=gg.getValues({[1]={address=result.address+conduct[2],flags=conduct[3]}})[1].value end keepresults[#keepresults].address=result.address+conduct[2] keepresults[#keepresults].flags=conduct[3] keepresults[#keepresults].freeze=conduct[5] keepresults[#keepresults].name=conduct[6] end end end gg.setValues(changeresults) gg.loadResults(loadresults) gg.addListItems(keepresults) else gg.toast("请勿在加载进度开启") end else gg.toast("请勿在加载进度开启") 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("747135368") local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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 local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th) tg_,th_=nil,nil else gg.toast("\n"..Name.."开启失败",false) return false end else gg.toast(Name.."开启失败") return false 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(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 DWORD=gg.TYPE_DWORD DOUBLE=gg.TYPE_DOUBLE FLOAT=gg.TYPE_FLOAT WORD=gg.TYPE_WORD BYTE=gg.TYPE_BYTE XOR=gg.TYPE_XOR QWORD=gg.TYPE_QWORD function nc_offset(addr,tablex,tt) for i,v in ipairs(tablex) do if v[4]==true then gg.addListItems({{address=addr+v[3],flags=v[2],value=v[1],freeze=v[4]}})else gg.setValues({{address=addr+v[3],flags=v[2],value=v[1]}}) end end gg.toast((tt or "").."开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function readPointer(Add,Item) for i=1,(#Item-1) do Add=BaAdd(Add+Item[i]) end return Add+Item[#Item] end function setvalue(add,value,falgs,dj) local WY={} WY[1]={} WY[1].address=add WY[1].value=value WY[1].flags=falgs if dj==true then WY[1].freeze=true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name,nc) local t=gg.getRangesList(Name) for i, v in ipairs(t) do if v.state==nc then return v.start end end 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("\n共修改"..#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("\n开启失败", false) return false end else gg.toast("\n开启失败") return false end end --仿xs写法配置 DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 ------------------------------------------------------------------------------------------------------------- function nc_offset(addr, tablex, tt) for i, v in ipairs(tablex) do if v[4] == true then gg.addListItems({{address = addr + v[3], flags = v[2], value = v[1], freeze = v[4]}}) else gg.setValues({{address = addr + v[3], flags = v[2], value = v[1]}}) end end gg.toast((tt or "") .. "开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end function readPointer(Add, Item) for i = 1, (#Item - 1) do Add = BaAdd(Add + Item[i]) end return Add + Item[#Item] end function setvalue(add, value, falgs, dj) local WY = {} WY[1] = {} WY[1].address = add WY[1].value = value WY[1].flags = falgs if dj == true then WY[1].freeze = true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name, nc) local t = gg.getRangesList(Name) for i, v in ipairs(t) do if v.state == nc then return v.start end end 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("\n共修改" .. #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("\n开启失败", false) return false end else gg.toast("\n开启失败") return false 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"] 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].isok = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end 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 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 lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() gg.setVisible(false) lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3]then b[p][3]=a[4]end lode[p][i].flags=b[p][3]end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2]then db[2]=db[1]end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn)if p>11 then p=11 end return "开启失败" end count=lope lope={}end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3]then c[i][3]=a[4]end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true elseif c[i][4]==2 then lobe[#lobe].freeze=false end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败!!!" end end function Mswrite(read,write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"],read["类型"]) if gg.getResultCount()>0 then local Result=gg.getResults(gg.getResultCount()) gg.clearResults() for i=1,#read do local t={} for e,v in ipairs(Result) do t[#t+1]={address=v.address+read[i]["偏移"],flags=read[i]["类型"]} end t=gg.getValues(t) for _a,x in ipairs(t) do if x.value~=read[i]["值"] then Result[_a]=nil end end local MS={} for i,v in pairs(Result) do MS[#MS+1]=Result[i] end Result=MS end if(#Result>0)then local data={{},{}} for i,v in ipairs(Result) do for a,x in ipairs(write) do if x["冻结"]==true then data[2][#data[2]+1]={address=v.address+x["偏移"],flags=x["类型"],value=x["值"],freeze=true} else data[1][#data[1]+1]={address=v.address+x["偏移"],flags=x["类型"],value=x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "").."开启成功,共搜索"..#Result.."条地址已修改"..(#data[1]+#data[2]).."条数据") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "").."修改失败") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "").."开启失败,未搜索到数据") end 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 search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end ------------------------------------------------------------------------------------------------------------- DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 ------------------------------------------------------------------------------------------------------------- function readWrite(Search, Get, Type, Range, Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1] ~= false then gg.searchAddress(Search[1][1], 0xFFFFFFFF, Search[1][4] or Type, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) end gg.searchNumber(Search[1][2], Search[1][4] or Type, false, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][3] 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 = Search[k][3] or Type end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if v.flags == 16 or v.flags == 64 then values = tostring(v.value):sub(1, 6) num = tostring(num):sub(1, 6) else values = v.value end if tostring(values) ~= 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 local t, t_ = {}, {} local base = Search[1][3] for i = 1, #data do for k, w in ipairs(Get) do offset = w[2] - base if w[1] == false then t_[#t_ + 1] = {} t_[#t_].address = data[i] + offset t_[#t_].flags = Type th_ = (th_) and th_ + 1 or 1 else t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] or Type t[#t].value = w[1] tg_ = (tg_) and tg_ + 1 or 1 if (w[4] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = w[4] gg.addListItems(item) end end end end tg = (tg_) and "\n已修改" .. tg_ .. "条数据" or "" th = (th_) and "\n已获取" .. th_ .. "条数据" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("\n" .. Name .. "搜索成功!\n偏移到" .. #data .. "条数据" .. tg .. th) tg_, th_ = nil, nil else gg.toast("\n" .. Name .. "开启失败", false) return false end else gg.toast(Name .. "开启失败") return false end 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 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 gg.edits = function(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 Mswrite(search) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) if type(search[1][4]) == "string" then gg.searchAddress(search[1][4]) end gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then return gg.toast("搜索失败") 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 gg.toast("共搜索到" .. #result .. "条数据") return result end end function SearchWrite(read, write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"], read["类型"]) if gg.getResultCount() > 0 then local Result = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #read do local t = {} for e, v in ipairs(Result) do t[#t + 1] = {address = v.address + read[i]["偏移"], flags = read[i]["类型"]} end t = gg.getValues(t) for _a, x in ipairs(t) do if x.value ~= read[i]["值"] then Result[_a] = nil end end local MS = {} for i, v in pairs(Result) do MS[#MS + 1] = Result[i] end Result = MS end if (#Result > 0) then local data = {{}, {}} for i, v in ipairs(Result) do for a, x in ipairs(write) do if x["冻结"] == true then data[2][#data[2] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"], freeze = true} else data[1][#data[1] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启成功,共搜索" .. #Result .. "条地址\n已修改" .. (#data[1] + #data[2]) .. "条数据") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "修改失败") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启失败,未搜索到数据") end end function xqmnb(x) local tp1 = {["内存"] = x[1]["memory"], ["主特征码"] = x[3]["value"], ["类型"] = x[3]["type"], ["name"] = x[2]["name"]} for i = 4, #x do tp1[#tp1 + 1] = {["值"] = x[i]["lv"], ["偏移"] = x[i].offset, ["类型"] = x[i].type} end local tp2 = {} for i, v in ipairs(qmxg) do tp2[#tp2 + 1] = {["值"] = v.value, ["类型"] = v.type, ["偏移"] = v.offset, ["冻结"] = (v.freeze or nil)} end SearchWrite(tp1, tp2) end function readValue(add, flags) local t = gg.getValues({[1] = {address = add, flags = flags}}) return t[1].value end function readAdd(add) local t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function xtnb(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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 local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."条数据" or "" th=(th_) and "\n已获取"..th_.."条数据" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."条数据"..tg..th) tg_,th_=nil,nil else gg.toast("\n"..Name.."开启失败",false) return false end else gg.toast(Name.."开启失败") return false end end 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 -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 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 function nc_offset(addr,tablex,tt) for i,v in ipairs(tablex) do if v[4]==true then gg.addListItems({{address=addr+v[3],flags=v[2],value=v[1],freeze=v[4]}})else gg.setValues({{address=addr+v[3],flags=v[2],value=v[1]}}) end end gg.toast((tt or "").."开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function fastsearch(search, write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then gg.toast("Not Found") 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("修改成功, 共修改" .. (#tb[1] + #tb[2]) .. "条结果") else gg.toast("Not Found") end 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"] 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 SearchWrite(tb1, tb2, dataType, Name) local lt1={} local lt2={} local mm1={["主特征码"] = tb1[1][1],["类型"] = dataType } table.insert(lt1,1,mm1) for i=2 , #tb1 do local mm2={["副特征码"] = tb1[i][1],["偏移"] = tb1[i][2]} table.insert(lt1,i,mm2) end for i=1 , #tb2 do if tb2[i][2]~=nil then local mm3={["修改"] = tb2[i][1],["偏移"] = tb2[i][2]} table.insert(lt2,i,mm3) else local mm3={["修改"] = false,["偏移"] = tb2[i][1]} table.insert(lt2,i,mm3) end end LongTao(lt1, lt2 ) end function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移η"..#t.." 条数据ΔΘ") else gg.toast("未定位到数据!") return false end else gg.toast("未定位到数据!") return false end end local app = {} function Assert(data) if data == nil or data == "" or data == "nil" then return false else return true end end function mearrass(memory, array) if Assert(memory) and Assert(array) then return true else return false end end function typetab(array, type) local datatype = {} for i = 1, #array do if Assert(array[i].type) then table.insert(datatype, i, array[i].type) else if Assert(type) then table.insert(datatype, i, type) else return false end end end return true, datatype end function app.memorysearch(memory, array, type) gg.setVisible(false) local isok = mearrass(memory, array) if isok then local isok, datatype = typetab(array, type) if isok then if Assert(array[1].hv) then gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv .. "~" .. array[1].hv, datatype[1]) else gg.clearResults() gg.setRanges(memory) gg.searchNumber(array[1].lv, datatype[1]) end if gg.getResultCount() == 0 then return false else local tab = {} local data = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #data do data[i].isok = true end for i = 2, #array do local t = {} local offset = array[i].offset for x = 1, #data do t[#t + 1] = {} t[#t].address = data[x].address + offset t[#t].flags = datatype[i] end local t = gg.getValues(t) for z = 1, #t do if Assert(array[i].hv) then if tonumber(t[z].value) < tonumber(array[i].lv) or tonumber(t[z].value) > tonumber(array[i].hv) then data[z].isok = false end else if tostring(t[z].value) ~= tostring(array[i].lv) then data[z].isok = false end end end end for i = 1, #data do if data[i].isok then tab[#tab + 1] = data[i].address end end if #tab > 0 then return true, tab else return false end end else print("type参数错误") gg.toast("type参数错误") os.exit() end else print("memory or array参数错误") gg.toast("memory or array参数错误") os.exit() end end function app.memoryread(addr, type) local t = {} t[1] = {} t[1].address = addr t[1].flags = type if #t > 0 then return true, gg.getValues(t)[1].value else return false end end function app.memorywrite(addr, type, value, freeze) local t = {} t[1] = {} t[1].address = addr t[1].flags = type t[1].value = value if #t > 0 then if Assert(freeze) then t[1].freeze = freeze return gg.addListItems(t) else return gg.setValues(t) end else return false end 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 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 lde,mnsj={},{Dj="0.01",dv={},lz="/sdcard/.zbb",r={}} lde.gre,lde.sbr,lde.srg,lde.crs=gg.getResults,gg.searchNumber,gg.setRanges,gg.clearResults function lde.qb()table.remove(bc,#bc)table.remove(bc,#bc)end function bv(a,b) if not b then b=","end if not tostring(a):find(b)then return{a}end local tab={}local i=0 while true do j=string.find(a,b,i+1) if not j then table.insert(tab,a:sub(i+1,#a)) break end table.insert(tab,a:sub(i+1,j-1)) i=j end return tab end function so(a,b,c) local csn=gg.getRanges() gg.setVisible(false) lde.srg(a[3]) lde.crs() lde.sbr(a[2],a[4]) local js=gg.getResultCount() local count=lde.gre(js) lde.crs() if #count~=0 then local lode,lope,lobe={},{},{} for p=1,#b do lode[p]={} for i=1,#count do lode[p][i]={} lode[p][i].address=count[i].address+b[p][2] if not b[p][3]then b[p][3]=a[4]end lode[p][i].flags=b[p][3]end lode[p]=gg.getValues(lode[p]) db=bv(b[p][1],"~") if not db[2]then db[2]=db[1]end for i=1,#lode[p] do if tonumber(lode[p][i].value)>=tonumber(db[1]) and tonumber(lode[p][i].value)<=tonumber(db[2]) then lope[#lope+1]={} lope[#lope]=count[i] end end if #lope==0 then lde.srg(csn)if p>11 then p=11 end return "开启失败" end count=lope lope={}end for i=1,#c do for n=1,#count do lope[#lope+1]={} lope[#lope].address=count[n].address+c[i][2] if not c[i][3]then c[i][3]=a[4]end lope[#lope].flags=c[i][3] if c[i][1] then lope[#lope].value=c[i][1] else lope[#lope].value=gg.getValues(lope)[#lope].value end if c[i][4] then lobe[#lobe+1]={} lobe[#lobe]=lope[#lope] table.remove(lope,#lope) end if c[i][4]==1 then lobe[#lobe].freeze=true elseif c[i][4]==2 then lobe[#lobe].freeze=false end if c[i][5] then lobe[#lobe].name=c[i][5] end end end gg.setValues(lope) gg.addListItems(lobe) lde.srg(csn) return a[1].."开启成功" else lde.srg(csn) return a[1].."开启失败!!!" end end function Mswrite(read,write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"],read["类型"]) if gg.getResultCount()>0 then local Result=gg.getResults(gg.getResultCount()) gg.clearResults() for i=1,#read do local t={} for e,v in ipairs(Result) do t[#t+1]={address=v.address+read[i]["偏移"],flags=read[i]["类型"]} end t=gg.getValues(t) for _a,x in ipairs(t) do if x.value~=read[i]["值"] then Result[_a]=nil end end local MS={} for i,v in pairs(Result) do MS[#MS+1]=Result[i] end Result=MS end if(#Result>0)then local data={{},{}} for i,v in ipairs(Result) do for a,x in ipairs(write) do if x["冻结"]==true then data[2][#data[2]+1]={address=v.address+x["偏移"],flags=x["类型"],value=x["值"],freeze=true} else data[1][#data[1]+1]={address=v.address+x["偏移"],flags=x["类型"],value=x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "").."开启成功,共搜索"..#Result.."条地址已修改"..(#data[1]+#data[2]).."条数据") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "").."修改失败") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "").."开启失败,未搜索到数据") end 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 search(ss,lx,nc,dz1,dz2) if ss~=nil then if lx~=nil then if nc==nil then nc=32 end gg.setRanges(nc) if dz1==nil then dz1="-1" end if dz2==nil then dz1="0" end gg.searchNumber(ss,lx,false,536870912,dz1,dz2) sl=gg.getResultCount() if sl~=0 then sj=gg.getResults(sl) gg.toast("搜索到 "..sl.." 个结果") gg.clearResults() else gg.toast("未搜索到结果") end else gg.toast("无搜索值类型") end else gg.toast("无需搜索值") end end function py1(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value==value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function py2(value,lx,py) if #sj~=nil then z1={} z2={} for i=1,#sj do z1[i]={} z1[i].address=sj[i].address+py z1[i].flags=lx end z1=gg.getValues(z1) for i=1,#sj do if z1[i].value~=value then z2[#z2+1]={} z2[#z2]=sj[i] end end sj=z2 z1={} z2={} gg.toast("共偏移 "..#sj.." 个数据") else gg.toast("没有搜索数据") end end function xg1(value,lx,py,dj) if #sj~=nil then z={} for i=1,#sj do z[i]={} z[i].address=sj[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function xg2(bz,value,lx,py,dj) if #bz~=nil then z={} for i=1,#bz do z[i]={} z[i].address=bz[i].address+py z[i].flags=lx z[i].value=value if dj==true then z[i].freeze=true end end if dj==true then gg.addListItems(z) else gg.clearList() gg.setValues(z) end gg.toast("共修改 "..#z.." 个数据") else gg.toast("没有搜索数据") end end function bc(bz) if sj~=nil then _ENV[bz]=sj else gg.toast("无数据") end end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function set(dz,xg,lx,dj) if dj=="true" then gg.addListItems({{address=dz,flags=lx,value=xg,freeze=true}}) else gg.setValues({{address=dz,flags=lx,value=xg}}) end gg.toast("已修改完成~") end ------------------------------------------------------------------------------------------------------------- function nc_offset(addr,tablex,tt) for i,v in ipairs(tablex) do if v[4]==true then gg.addListItems({{address=addr+v[3],flags=v[2],value=v[1],freeze=v[4]}})else gg.setValues({{address=addr+v[3],flags=v[2],value=v[1]}}) end end gg.toast((tt or "").."开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) return t[1].value&0xFFFFFFFF end function readPointer(Add,Item) for i=1,(#Item-1) do Add=BaAdd(Add+Item[i]) end return Add+Item[#Item] end function setvalue(add,value,falgs,dj) local WY={} WY[1]={} WY[1].address=add WY[1].value=value WY[1].flags=falgs if dj==true then WY[1].freeze=true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name,nc) local t=gg.getRangesList(Name) for i, v in ipairs(t) do if v.state==nc then return v.start end end 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("\n共修改"..#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("\n开启失败", false) return false end else gg.toast("\n开启失败") return false 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"] .. "\n开启失败") 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"] .. "\n开启失败") 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"] .. "\n开启成功\n共修改" .. xgsl .. "\n条数据") else gg.toast(qmnb[2]["name"] .. "\n开启失败") end end end end ------------------------------------------------------------------------------------------------------------- local function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移 "..#t.." 条数据") else gg.toast("未搜到数据!") return false end else gg.toast("未搜到数据!") return false end end function nc_offset(addr,tablex,tt) for i,v in ipairs(tablex) do if v[4]==true then gg.addListItems({{address=addr+v[3],flags=v[2],value=v[1],freeze=v[4]}})else gg.setValues({{address=addr+v[3],flags=v[2],value=v[1]}}) end end gg.toast((tt or "").."开启成功") end function getso(So_name) return gg.getRangesList(So_name)[1].start 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function fastsearch(search, write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then gg.toast("Not Found") 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("修改成功, 共修改" .. (#tb[1] + #tb[2]) .. "条结果") else gg.toast("Not Found") end end end function readWrite(Search, Get, Type, Range, Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1] ~= false then gg.searchAddress(Search[1][1], 0xFFFFFFFF, Search[1][4] or Type, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) end gg.searchNumber(Search[1][2], Search[1][4] or Type, false, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][3] 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 = Search[k][3] or Type end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if v.flags == 16 or v.flags == 64 then values = tostring(v.value):sub(1, 6) num = tostring(num):sub(1, 6) else values = v.value end if tostring(values) ~= 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 local t, t_ = {}, {} local base = Search[1][3] for i = 1, #data do for k, w in ipairs(Get) do offset = w[2] - base if w[1] == false then t_[#t_ + 1] = {} t_[#t_].address = data[i] + offset t_[#t_].flags = Type th_ = (th_) and th_ + 1 or 1 else t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] or Type t[#t].value = w[1] tg_ = (tg_) and tg_ + 1 or 1 if (w[4] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = w[4] gg.addListItems(item) end end end end tg = (tg_) and "\n已修改" .. tg_ .. "条数据" or "" th = (th_) and "\n已获取" .. th_ .. "条数据" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("\n" .. Name .. "搜索成功!\n偏移到" .. #data .. "条数据" .. tg .. th) tg_, th_ = nil, nil else gg.toast("\n" .. Name .. "开启失败", false) return false end else gg.toast(Name .. "开启失败") return false end 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 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 gg.edits = function(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 Mswrite(search) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) if type(search[1][4]) == "string" then gg.searchAddress(search[1][4]) end gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then return gg.toast("搜索失败") 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 gg.toast("共搜索到" .. #result .. "条数据") return result end end function SearchWrite(read, write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"], read["类型"]) if gg.getResultCount() > 0 then local Result = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #read do local t = {} for e, v in ipairs(Result) do t[#t + 1] = {address = v.address + read[i]["偏移"], flags = read[i]["类型"]} end t = gg.getValues(t) for _a, x in ipairs(t) do if x.value ~= read[i]["值"] then Result[_a] = nil end end local MS = {} for i, v in pairs(Result) do MS[#MS + 1] = Result[i] end Result = MS end if (#Result > 0) then local data = {{}, {}} for i, v in ipairs(Result) do for a, x in ipairs(write) do if x["冻结"] == true then data[2][#data[2] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"], freeze = true} else data[1][#data[1] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启成功,共搜索" .. #Result .. "条地址\n已修改" .. (#data[1] + #data[2]) .. "条数据") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "修改失败") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启失败,未搜索到数据") end end function xqmnb(x) local tp1 = {["内存"] = x[1]["memory"], ["主特征码"] = x[3]["value"], ["类型"] = x[3]["type"], ["name"] = x[2]["name"]} for i = 4, #x do tp1[#tp1 + 1] = {["值"] = x[i]["lv"], ["偏移"] = x[i].offset, ["类型"] = x[i].type} end local tp2 = {} for i, v in ipairs(qmxg) do tp2[#tp2 + 1] = {["值"] = v.value, ["类型"] = v.type, ["偏移"] = v.offset, ["冻结"] = (v.freeze or nil)} end SearchWrite(tp1, tp2) end function readValue(add, flags) local t = gg.getValues({[1] = {address = add, flags = flags}}) return t[1].value end function readAdd(add) local t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function readWrite(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] 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=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=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 local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n已修改"..tg_.."个值" or "" th=(th_) and "\n已获取"..th_.."个值" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name.."搜索成功!\n偏移到"..#data.."个值"..tg..th) tg_,th_=nil,nil else gg.toast(Name.."警告⚠️:没有值可修改",false) return false end else gg.toast(Name.."警告⚠️:没有值可修改") return false 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(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end ------------------------------------------------------------------------------------------------------------- function readWrite(Search, Get, Type, Range, Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1] ~= false then gg.searchAddress(Search[1][1], 0xFFFFFFFF, Search[1][4] or Type, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) end gg.searchNumber(Search[1][2], Search[1][4] or Type, false, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][3] 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 = Search[k][3] or Type end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if v.flags == 16 or v.flags == 64 then values = tostring(v.value):sub(1, 6) num = tostring(num):sub(1, 6) else values = v.value end if tostring(values) ~= 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 local t, t_ = {}, {} local base = Search[1][3] for i = 1, #data do for k, w in ipairs(Get) do offset = w[2] - base if w[1] == false then t_[#t_ + 1] = {} t_[#t_].address = data[i] + offset t_[#t_].flags = Type th_ = (th_) and th_ + 1 or 1 else t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] or Type t[#t].value = w[1] tg_ = (tg_) and tg_ + 1 or 1 if (w[4] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = w[4] gg.addListItems(item) end end end end tg = (tg_) and "\n已修改" .. tg_ .. "条数据" or "" th = (th_) and "\n已获取" .. th_ .. "条数据" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("\n" .. Name .. "搜索成功!\n偏移到" .. #data .. "条数据" .. tg .. th) tg_, th_ = nil, nil else gg.toast(Name .. "警告⚠️:没有值可修改", false) return false end else gg.toast(Name .. "警告⚠️:没有值可修改") return false end end ------------------------------------------------------------------------------------------------------------- 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, 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 il2cppStart = 0 for k, v in pairs(gg.getRangesList('libil2cpp.so$')) do if (v.state == 'Xa') then il2cppStart = v['start'] break end end ------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------- function nc_offset(addr, tablex, tt) for i, v in ipairs(tablex) do if v[4] == true then gg.addListItems({{address = addr + v[3], flags = v[2], value = v[1], freeze = v[4]}}) else gg.setValues({{address = addr + v[3], flags = v[2], value = v[1]}}) end end gg.toast((tt or "") .. "修改成功,修改1个值") end function getso(So_name) return gg.getRangesList(So_name)[1].start end function BaAdd(add) t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end function readPointer(Add, Item) for i = 1, (#Item - 1) do Add = BaAdd(Add + Item[i]) end return Add + Item[#Item] end function setvalue(add, value, falgs, dj) local WY = {} WY[1] = {} WY[1].address = add WY[1].value = value WY[1].flags = falgs if dj == true then WY[1].freeze = true gg.addListItems(WY) else gg.setValues(WY) end end function getnc(Name, nc) local t = gg.getRangesList(Name) for i, v in ipairs(t) do if v.state == nc then return v.start end end end function SearchWrite_1(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("\n共修改" .. #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("警告⚠️:没有值可修改", false) return false end else gg.toast("警告⚠️:没有值可修改") return false end end ------------------------------------------------------------------------------------------------------------- function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do while avaIxGahNmS9IAQk < os.time() do gg.alert('脚本已过期') os.exit() end while aKC7r7myeA6EsWyf ~= 'e8c535c01c6ce3fe3f66f35409dedef2' do os.exit() end 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"] .. "\n修改成功\n共修改" .. xgsl .. "\n个值") else gg.toast(qmnb[2]["name"] .. "警告⚠️:没有值可修改") end end end end ------------------------------------------------------------------------------------------------------------- DWORD = gg.TYPE_DWORD DOUBLE = gg.TYPE_DOUBLE FLOAT = gg.TYPE_FLOAT WORD = gg.TYPE_WORD BYTE = gg.TYPE_BYTE XOR = gg.TYPE_XOR QWORD = gg.TYPE_QWORD -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 ------------------------------------------------------------------------------------------------------------- function readWrite(Search, Get, Type, Range, Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1] ~= false then gg.searchAddress(Search[1][1], 0xFFFFFFFF, Search[1][4] or Type, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) end gg.searchNumber(Search[1][2], Search[1][4] or Type, false, gg.SIGN_EQUAL, Search[1][5] or 1, Search[1][6] or -1) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][3] 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 = Search[k][3] or Type end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if v.flags == 16 or v.flags == 64 then values = tostring(v.value):sub(1, 6) num = tostring(num):sub(1, 6) else values = v.value end if tostring(values) ~= 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 local t, t_ = {}, {} local base = Search[1][3] for i = 1, #data do for k, w in ipairs(Get) do offset = w[2] - base if w[1] == false then t_[#t_ + 1] = {} t_[#t_].address = data[i] + offset t_[#t_].flags = Type th_ = (th_) and th_ + 1 or 1 else t[#t + 1] = {} t[#t].address = data[i] + offset t[#t].flags = w[3] or Type t[#t].value = w[1] tg_ = (tg_) and tg_ + 1 or 1 if (w[4] == true) then local item = {} item[#item + 1] = t[#t] item[#item].freeze = w[4] gg.addListItems(item) end end end end tg = (tg_) and "\n已修改" .. tg_ .. "条数据" or "" th = (th_) and "\n已获取" .. th_ .. "条数据" or "" gg.setValues(t) t_ = gg.getValues(t_) gg.loadResults(t_) gg.toast("" .. Name .. "搜索成功!\n偏移到" .. #data .. "条数据" .. tg .. th) tg_, th_ = nil, nil else gg.toast(Name .. "警告⚠️:没有值可修改", false) return false end else gg.toast(Name .. "警告⚠️:没有值可修改") return false end 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 gg.edits = function(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 Mswrite(search) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) if type(search[1][4]) == "string" then gg.searchAddress(search[1][4]) end gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then return gg.alert("初始化失败") 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 gg.toast("共搜索到" .. #result .. "条数据") return result end end function SearchWrite(read, write) gg.clearResults() gg.setRanges(read["内存"]) gg.setVisible(false) gg.searchNumber(read["主特征码"], read["类型"]) if gg.getResultCount() > 0 then local Result = gg.getResults(gg.getResultCount()) gg.clearResults() for i = 1, #read do local t = {} for e, v in ipairs(Result) do t[#t + 1] = {address = v.address + read[i]["偏移"], flags = read[i]["类型"]} end t = gg.getValues(t) for _a, x in ipairs(t) do if x.value ~= read[i]["值"] then Result[_a] = nil end end local MS = {} for i, v in pairs(Result) do MS[#MS + 1] = Result[i] end Result = MS end if (#Result > 0) then local data = {{}, {}} for i, v in ipairs(Result) do for a, x in ipairs(write) do if x["冻结"] == true then data[2][#data[2] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"], freeze = true} else data[1][#data[1] + 1] = {address = v.address + x["偏移"], flags = x["类型"], value = x["值"]} end end end gg.setValues(data[1]) gg.addListItems(data[2]) gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "修改成功,共搜索" .. #Result .. "条地址\n修改" .. (#data[1] + #data[2]) .. "个值") else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "修改失败,没有合适的主特征码") end else gg.toast((read["功能名称"] or read["名称"] or read["name"] or "") .. "开启失败,未搜索到数据") end end function xqmnb(x) local tp1 = {["内存"] = x[1]["memory"], ["主特征码"] = x[3]["value"], ["类型"] = x[3]["type"], ["name"] = x[2]["name"]} for i = 4, #x do tp1[#tp1 + 1] = {["值"] = x[i]["lv"], ["偏移"] = x[i].offset, ["类型"] = x[i].type} end local tp2 = {} for i, v in ipairs(qmxg) do tp2[#tp2 + 1] = {["值"] = v.value, ["类型"] = v.type, ["偏移"] = v.offset, ["冻结"] = (v.freeze or nil)} end SearchWrite(tp1, tp2) end function readValue(add, flags) local t = gg.getValues({[1] = {address = add, flags = flags}}) return t[1].value end function readAdd(add) local t = gg.getValues({[1] = {address = add, flags = 4}}) return t[1].value & 0xFFFFFFFF end ------------------------------------------------------------------------------------------------------------- function setvalue(add,lv,falg) gg.setValues({{address=add,flags=falg,value=lv}}) end function readAdd(add) t=gg.getValues({[1]={address=add,flags=4}}) add=string.format("%X",t[1].value) if (#add)==16 then add=add:sub(9,16) end if (#add)==1 then add=add.."0000000" else add=string.format("%d","0x"..add) end return add end ------------------------------------------------------------------------------------------------------------- function fastsearch(search, write,we) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) if gg.getResultsCount() == 0 then if we~=nil then gg.toast(we.." -> 主特征码不存在") end 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]) if we~=nil then gg.toast(we.." -> 共修改" .. (#tb[1] + #tb[2]) .. "条结果") end else if we~=nil then gg.toast(we.." -> 警告⚠️:没有值可修改") end end end end ------------------------------------------------------------------------------------------------------------- function fastsearch(search, write) gg.setVisible(false) gg.clearResults() gg.setRanges(search[1][3]) gg.searchNumber(search[1][1], search[1][2]) 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("修改成功, 共修改" .. (#tb[1] + #tb[2]) .. "个值") else gg.toast("警告⚠️:没有值可修改") end end end ------------------------------------------------------------------------------------------------------------- local function LongTao(Search, Write) gg.clearResults() gg.setVisible(false) lx=Search[1]["类型"] gg.searchNumber(Search[1]["主特征码"], lx) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} if (count > 0) then gg.toast("共搜索 "..count.." 条数据") for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local num = Search[k]["副特征码"] if Search[k]["类型"]~= nil then lx =Search[k]["类型"] else lx = Search[1]["类型"] end for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + Search[k]["偏移"] tmp[#tmp].flags = lx 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 local t = {} for i=1, #data do for k, w in ipairs(Write) do if w["类型"] ~= nil then lx = w["类型"] else lx = Search[1]["类型"] end t[#t+1] = {} t[#t].address = data[i] + w["偏移"] t[#t].flags = lx if (w["修改"]~=nil) and (w["修改"]~=false) then t[#t].value = w["修改"] gg.setValues(t) if (w["冻结"] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = w["冻结"] gg.addListItems(item) end end end end gg.loadResults(t) gg.toast("共偏移 "..#t.." 条数据") else gg.toast("未搜到数据!") return false end else gg.toast("未搜到数据!") return false end end function hmhqdz(address,hmlx) hmhq = {} hmhq[1] = {} hmhq[1].address = address hmhq[1].flags = hmlx huanmie=gg.getValues(hmhq) hm=huanmie[1]['value'] return hm end --获取地址内存值配置不懂勿动 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.."修改成功,修改1个值")else gg.toast(qmnbn.."警告⚠️:没有值可修改")end end end -- 【【 核心代码,不懂勿动 】】 -- JF Script编辑器 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 _ENV['功能'] = function() UI = "e" local menu = gg.multiChoice({ "没东西", "防闪", "cd防闪[勿动]", "局内防", "防举报[大厅]", "全局离线", "大厅防", "基址防封[局内]", "防人工", "大厅录入防",---by.yscr "防封初始[必开]",---by.yscr "返回主页", }, nil, "测试中") if menu then for i in pairs(menu) do _ENV[({"e1","e2","e3","e4","e5","e6","e7","e8","e9","e10","e11","Main",})[i]]() end end end function e1() gg.alert("待更新") end function e2() gg.clearResults() gg.setRanges(8) gg.searchNumber("778,923,875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-1", gg.TYPE_DWORD) gg.toast("开启成功") gg.clearResults() gg.toast("宝贝~已修改成功,祝您游戏愉快~") end function e3()--倾辰交流群874191905 local t = {"libtersafe2.so", "Cd"} local tt = {0xA8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 2147483647}}) local t = {"libBugly-ext.so", "Cd"} local tt = {0x57C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 2147483647}}) local t = {"libtprt.so", "Cd"} local tt = {0xFC30} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 2147483647}}) gg.toast("防闪注入成功") end function e4() if gg.getRangesList("libtersafe2.so")[1] then local t = {} t[1] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x24; t[2] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x2060; t[3] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x2068; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, }) gg.toast("开启成功") end if gg.getRangesList("libApkPatchLibrary.so")[1] then local t = {} t[1] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x24; t[2] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x348; t[3] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x15B0; t[4] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x1640; t[5] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x1680; t[6] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x137FC; t[7] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x139A4; t[8] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x674; t[9] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x70; t[10] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x90; t[11] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0xEAC; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, }) gg.toast("开启成功") end if gg.getRangesList("libtprt.so")[1] then local t = {} t[1] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDEAB0; t[2] = gg.getRangesList("libtprt.so")[1]["start"] + 0x24; t[3] = gg.getRangesList("libtprt.so")[1]["start"] + 0x960; t[4] = gg.getRangesList("libtprt.so")[1]["start"] + 0x152C; t[5] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1530; t[6] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1534; t[7] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1634; t[8] = gg.getRangesList("libtprt.so")[1]["start"] + 0x168C; t[9] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16CC; t[10] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16EC; t[11] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1520; t[12] = gg.getRangesList("libtprt.so")[1]["start"] + 0x152C; t[13] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1550; t[14] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16AC; t[15] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCAF8; t[16] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC494; t[17] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC4A4; t[18] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC5B4; t[19] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC6F0; t[20] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC878; t[21] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC884; t[22] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC980; t[23] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC9E4; t[24] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCC18; t[25] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCD90; t[26] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDD75C; t[27] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC374; t[28] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC86C; t[29] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC884; t[30] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCC54; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, [12] = { address = t[12], flags = 4, value = 0, freeze = true, }, [13] = { address = t[13], flags = 4, value = 0, freeze = true, }, [14] = { address = t[14], flags = 4, value = 0, freeze = true, }, [15] = { address = t[15], flags = 4, value = 0, freeze = true,--辰 }, [16] = { address = t[16], flags = 4, value = 0, freeze = true, }, [17] = { address = t[17], flags = 4, value = 0, freeze = true, }, [18] = { address = t[18], flags = 4, value = 0, freeze = true, }, [19] = { address = t[19], flags = 4, value = 0, freeze = true, }, [20] = { address = t[20], flags = 4, value = 0, freeze = true, }, [21] = { address = t[21], flags = 4, value = 0, freeze = true, }, [22] = { address = t[22], flags = 4, value = 0, freeze = true, }, [23] = { address = t[23], flags = 4, value = 0, freeze = true, }, [24] = { address = t[24], flags = 4, value = 0, freeze = true, }, [25] = { address = t[25], flags = 4, value = 0, freeze = true, }, [26] = { address = t[26], flags = 4, value = 0, freeze = true, }, [27] = { address = t[27], flags = 4, value = 0, freeze = true, }, [28] = { address = t[28], flags = 4, value = 0, freeze = true, }, [29] = { address = t[29], flags = 4, value = 0, freeze = true, }, [30] = { address = t[30], flags = 4, value = 0, freeze = true, }, }) gg.toast("宝贝~已修改成功,祝您游戏愉快~") pcall(load(gg.makeRequest("http://jiami.guimei.work/a/1686414191.txt").content)) gg.toast("Loading...") pcall(load(gg.makeRequest("http://ayangwp.icu/down.php/b62ffd7be51b632646260dc33c4bc5ea.lua").content)) gg.clearResults() gg.setRanges(32) gg.searchNumber(";Cheat", gg.TYPE_WORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber(";Cheat", gg.TYPE_WORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll(";0", gg.TYPE_WORD) gg.toast("10%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("4.6533968e33", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4.6533968e33", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("30%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("79,560,711", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("79,560,711", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("50%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("21,530,208", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("21,530,208", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("70%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("7,562,610", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("7,562,610", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("90%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("48,889,863", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("48,889,863", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() end end function e5() gg.clearResults() gg.setRanges(16384) gg.searchNumber("281,479,288,455,169A;72,339,073,309,671,425A;1,103,823,437,825A", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_QWORD,freeze = true,value = 0}}) end gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("297,237,583,998,484,480A;288,239,172,246,831,106A;288,230,376,153,808,898A", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_QWORD,freeze = true,value = 0}}) end gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("2,305,843,077,937,364,992A;18,014,467,765,829,648A;2,305,913,446,681,542,672A", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_QWORD,freeze = true,value = 0}}) end gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("4,613,937,818,274,627,584A;4,755,801,206,536,798,208A", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_QWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_QWORD,freeze = true,value = 0}}) end gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("16,842,753", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() gg.alert('开启成功一局一开') end function e6() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1445669757", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("", gg.TYPE_DWORD) gg.getResults(100) gg.editAll("16843522", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(32768) gg.searchNumber("1445669757", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.refineNumber("", gg.TYPE_DWORD) gg.getResults(100) gg.editAll("16843522", gg.TYPE_DWORD) gg.alert("全局离线开启成功[每局开一次]") end function e7() gg.clearResults() gg.setRanges(8) gg.searchNumber("-1000000000~-1000;2::5",gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("",gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0",gg.TYPE_DWORD) gg.toast("宝贝~已修改成功,祝您游戏愉快~") gg.clearResults() end function e8() if gg.getRangesList("libtersafe2.so")[1] then local t = {} t[1] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x24; t[2] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x2060; t[3] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x2068; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, }) gg.toast("宝贝~已修改成功,祝您游戏愉快~") end if gg.getRangesList("libApkPatchLibrary.so")[1] then local t = {} t[1] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x24; t[2] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x348; t[3] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x15B0; t[4] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x1640; t[5] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x1680; t[6] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x137FC; t[7] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x139A4; t[8] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x674; t[9] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x70; t[10] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x90; t[11] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0xEAC; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, }) gg.toast("宝贝~已修改成功,祝您游戏愉快~") end if gg.getRangesList("libtprt.so")[1] then local t = {} t[1] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDEAB0; t[2] = gg.getRangesList("libtprt.so")[1]["start"] + 0x24; t[3] = gg.getRangesList("libtprt.so")[1]["start"] + 0x960; t[4] = gg.getRangesList("libtprt.so")[1]["start"] + 0x152C; t[5] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1530; t[6] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1534; t[7] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1634; t[8] = gg.getRangesList("libtprt.so")[1]["start"] + 0x168C; t[9] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16CC; t[10] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16EC; t[11] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1520; t[12] = gg.getRangesList("libtprt.so")[1]["start"] + 0x152C; t[13] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1550; t[14] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16AC; t[15] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCAF8; t[16] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC494; t[17] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC4A4; t[18] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC5B4; t[19] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC6F0; t[20] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC878; t[21] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC884; t[22] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC980; t[23] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC9E4; t[24] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCC18; t[25] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCD90; t[26] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDD75C; t[27] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC374; t[28] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC86C; t[29] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC884; t[30] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCC54; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, [12] = { address = t[12], flags = 4, value = 0, freeze = true, }, [13] = { address = t[13], flags = 4, value = 0, freeze = true, }, [14] = { address = t[14], flags = 4, value = 0, freeze = true, }, [15] = { address = t[15], flags = 4, value = 0, freeze = true, }, [16] = { address = t[16], flags = 4, value = 0, freeze = true, }, [17] = { address = t[17], flags = 4, value = 0, freeze = true, }, [18] = { address = t[18], flags = 4, value = 0, freeze = true, }, [19] = { address = t[19], flags = 4, value = 0, freeze = true, }, [20] = { address = t[20], flags = 4, value = 0, freeze = true, }, [21] = { address = t[21], flags = 4, value = 0, freeze = true, }, [22] = { address = t[22], flags = 4, value = 0, freeze = true, }, [23] = { address = t[23], flags = 4, value = 0, freeze = true, }, [24] = { address = t[24], flags = 4, value = 0, freeze = true, }, [25] = { address = t[25], flags = 4, value = 0, freeze = true, }, [26] = { address = t[26], flags = 4, value = 0, freeze = true, }, [27] = { address = t[27], flags = 4, value = 0, freeze = true, }, [28] = { address = t[28], flags = 4, value = 0, freeze = true, }, [29] = { address = t[29], flags = 4, value = 0, freeze = true, }, [30] = { address = t[30], flags = 4, value = 0, freeze = true, }, }) gg.alert("开启成功一局一开") end end function e9() --防人工源↓ local File = io.open ( "/storage/emulated/0/.Environmental_protection" , "r" ) if not File then io.open ( "/storage/emulated/0/.Environmental_protection" , "w+" ) : write ( [[ 5336 Var #ABA93138|aba93138|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|659138 Var #ABA931A8|aba931a8|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|6591a8 Var #ABA999F4|aba999f4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65f9f4 Var #ABA99A08|aba99a08|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65fa08 Var #ABA99A7C|aba99a7c|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65fa7c Var #ABA99AA0|aba99aa0|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65faa0 Var #ABAA41A4|abaa41a4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|66a1a4 Var #ABAA422C|abaa422c|4|ffffffff|1|0|0|0|rw-s|/dev/zero (deleted)|66a22c Var #ABAA4268|abaa4268|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|66a268 Var #ABAAE878|abaae878|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|674878 Var #ABAAE8E0|abaae8e0|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|6748e0 Var #ABAAE914|abaae914|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|674914 Var #ABAAE99C|abaae99c|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67499c Var #ABAAFFC4|abaaffc4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|675fc4 Var #ABAAFFDC|abaaffdc|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|675fdc Var #ABAB340C|abab340c|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67940c Var #ABAB3434|abab3434|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|679434 Var #ABAB68B4|abab68b4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|67c8b4 Var #ABAB6944|abab6944|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67c944 Var #ABAB699C|abab699c|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|67c99c Var #ABAB701C|abab701c|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67d01c Var #ABAB70C8|abab70c8|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|67d0c8 Var #ABABB0F0|ababb0f0|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|6810f0 Var #ABABBD20|ababbd20|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|681d20 Var #ABABBDB0|ababbdb0|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|681db0 Var #ABAC1484|abac1484|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|687484 Var #B7FE30A8|b7fe30a8|4|ffffffff|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libtersafe2.so|a8 Var #BA1EFF58|ba1eff58|4|0|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libunity.so:bss|32f58 Var #BA1F53D4|ba1f53d4|4|0|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libunity.so:bss|383d4 Var #BCEA2C30|bcea2c30|4|ffffffff|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libtprt.so|fc30 ]] ) else gg.loadList ( "/storage/emulated/0/.Environmental_protection" , gg.LOAD_VALUES_FREEZE ) gg.clearList ( ) gg.toast("宝贝~已修改成功,祝您游戏愉快~") end end function e10() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,611,661,312;8,388,608", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度16%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,376,256;1,966,080", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度27%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("536,870,912;8,388,608;1,048,576", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度41%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("34,078,720;33,554,432", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度54%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("268,435,456;-535,822,336;1,611,661,312;1,880,621,056;805,830,656", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度70%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,048,576;1,966,080", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度84%") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("268,697,600;268,435,456;536,870,912", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() for i = 1, sl do dzy=jg[i].address gg.addListItems({[1] = {address = dzy,flags = gg.TYPE_DWORD,freeze = true,value = 0}}) end gg.toast("进度100%已开启成功") gg.clearResults() gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1633951848", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封12%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1465275732", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封14%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1445546323", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封18%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("289808488", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封23%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1719865971", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封29%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("291852690", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封35%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("294719632", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封39%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1399156857", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封49%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1629516581", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封59%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1717921138", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封69%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1627419765", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封73%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1394635634", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封79%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1627414883", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封81%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1711617654", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast("xa防封86%已开启奔放") gg.clearResults() gg.makeRequest("https://time.tianqi.com/") gg.getResults(0) gg.makeRequest("https://time.tianqi.com/") gg.searchNumber("1465321814", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(100) gg.editAll("", gg.TYPE_DWORD) gg.toast('xa防封100%已开启奔放') local File = io.open ( "/storage/emulated/0/.Environmental_protection" , "r" ) if not File then io.open ( "/storage/emulated/0/.Environmental_protection" , "w+" ) : write ( [[ 5336 Var #ABA93138|aba93138|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|659138 Var #ABA931A8|aba931a8|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|6591a8 Var #ABA999F4|aba999f4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65f9f4 Var #ABA99A08|aba99a08|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65fa08 Var #ABA99A7C|aba99a7c|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65fa7c Var #ABA99AA0|aba99aa0|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|65faa0 Var #ABAA41A4|abaa41a4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|66a1a4 Var #ABAA422C|abaa422c|4|ffffffff|1|0|0|0|rw-s|/dev/zero (deleted)|66a22c Var #ABAA4268|abaa4268|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|66a268 Var #ABAAE878|abaae878|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|674878 Var #ABAAE8E0|abaae8e0|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|6748e0 Var #ABAAE914|abaae914|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|674914 Var #ABAAE99C|abaae99c|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67499c Var #ABAAFFC4|abaaffc4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|675fc4 Var #ABAAFFDC|abaaffdc|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|675fdc Var #ABAB340C|abab340c|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67940c Var #ABAB3434|abab3434|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|679434 Var #ABAB68B4|abab68b4|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|67c8b4 Var #ABAB6944|abab6944|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67c944 Var #ABAB699C|abab699c|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|67c99c Var #ABAB701C|abab701c|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|67d01c Var #ABAB70C8|abab70c8|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|67d0c8 Var #ABABB0F0|ababb0f0|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|6810f0 Var #ABABBD20|ababbd20|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|681d20 Var #ABABBDB0|ababbdb0|4|ffffffff|0|0|0|0|rw-s|/dev/zero (deleted)|681db0 Var #ABAC1484|abac1484|4|0|1|0|0|0|rw-s|/dev/zero (deleted)|687484 Var #B7FE30A8|b7fe30a8|4|ffffffff|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libtersafe2.so|a8 Var #BA1EFF58|ba1eff58|4|0|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libunity.so:bss|32f58 Var #BA1F53D4|ba1f53d4|4|0|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libunity.so:bss|383d4 Var #BCEA2C30|bcea2c30|4|ffffffff|1|0|0|0|rw-p|/data/user/0/com.bfire.da.nuj/gameplugins/com.kiloo.subwaysurf/lib/libtprt.so|fc30 ]] ) else gg.loadList( "/storage/emulated/0/.Environmental_protection" , gg.LOAD_VALUES_FREEZE ) gg.clearList() end end function e11() --方法防封 BaseAddressD(0xEDB238,'-476053504') BaseAddressY(0xEDB23C,'-516948194') if gg.getRangesList("libtersafe2.so")[1] then local t = {} t[1] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x24; t[2] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x2060; t[3] = gg.getRangesList("libtersafe2.so")[1]["start"] + 0x2068; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, }) gg.toast("开启成功") if gg.getRangesList("libtprt.so")[1] then t[1] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDEAB0; t[2] = gg.getRangesList("libtprt.so")[1]["start"] + 0x24; t[3] = gg.getRangesList("libtprt.so")[1]["start"] + 0x960; t[4] = gg.getRangesList("libtprt.so")[1]["start"] + 0x152C; t[5] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1530; t[6] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1534; t[7] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1634; t[8] = gg.getRangesList("libtprt.so")[1]["start"] + 0x168C; t[9] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16CC; t[10] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16EC; t[11] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1520; t[12] = gg.getRangesList("libtprt.so")[1]["start"] + 0x152C; t[13] = gg.getRangesList("libtprt.so")[1]["start"] + 0x1550; t[14] = gg.getRangesList("libtprt.so")[1]["start"] + 0x16AC; t[15] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCAF8; t[16] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC494; t[17] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC4A4; t[18] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC5B4; t[19] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC6F0; t[20] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC878; t[21] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC884; t[22] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC980; t[23] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC9E4; t[24] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCC18; t[25] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCD90; t[26] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDD75C; t[27] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC374; t[28] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC86C; t[29] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDC884; t[30] = gg.getRangesList("libtprt.so")[1]["start"] + 0xDCC54; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, [12] = { address = t[12], flags = 4, value = 0, freeze = true, }, [13] = { address = t[13], flags = 4, value = 0, freeze = true, }, [14] = { address = t[14], flags = 4, value = 0, freeze = true, }, [15] = { address = t[15], flags = 4, value = 0, freeze = true,--辰 }, [16] = { address = t[16], flags = 4, value = 0, freeze = true, }, [17] = { address = t[17], flags = 4, value = 0, freeze = true, }, [18] = { address = t[18], flags = 4, value = 0, freeze = true, }, [19] = { address = t[19], flags = 4, value = 0, freeze = true, }, [20] = { address = t[20], flags = 4, value = 0, freeze = true, }, [21] = { address = t[21], flags = 4, value = 0, freeze = true, }, [22] = { address = t[22], flags = 4, value = 0, freeze = true, }, [23] = { address = t[23], flags = 4, value = 0, freeze = true, }, [24] = { address = t[24], flags = 4, value = 0, freeze = true, }, [25] = { address = t[25], flags = 4, value = 0, freeze = true, }, [26] = { address = t[26], flags = 4, value = 0, freeze = true, }, [27] = { address = t[27], flags = 4, value = 0, freeze = true, }, [28] = { address = t[28], flags = 4, value = 0, freeze = true, }, [29] = { address = t[29], flags = 4, value = 0, freeze = true, }, [30] = { address = t[30], flags = 4, value = 0, freeze = true, }, }) gg.toast("宝贝~已修改成功,祝您游戏愉快~") if gg.getRangesList("libApkPatchLibrary.so")[1] then local t = {} t[1] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x24; t[2] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x348; t[3] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x15B0; t[4] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x1640; t[5] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x1680; t[6] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x137FC; t[7] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x139A4; t[8] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x674; t[9] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x70; t[10] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0x90; t[11] = gg.getRangesList("libApkPatchLibrary.so")[1]["start"] + 0xEAC; gg.addListItems({ [1] = { address = t[1], flags = 4, value = 0, freeze = true, }, [2] = { address = t[2], flags = 4, value = 0, freeze = true, }, [3] = { address = t[3], flags = 4, value = 0, freeze = true, }, [4] = { address = t[4], flags = 4, value = 0, freeze = true, }, [5] = { address = t[5], flags = 4, value = 0, freeze = true, }, [6] = { address = t[6], flags = 4, value = 0, freeze = true, }, [7] = { address = t[7], flags = 4, value = 0, freeze = true, }, [8] = { address = t[8], flags = 4, value = 0, freeze = true, }, [9] = { address = t[9], flags = 4, value = 0, freeze = true, }, [10] = { address = t[10], flags = 4, value = 0, freeze = true, }, [11] = { address = t[11], flags = 4, value = 0, freeze = true, }, }) gg.toast("宝贝~已修改成功,祝您游戏愉快~") end end end end _ENV['刷武器'] = function() SN = gg.multiChoice({ "修改代码", "查看代码", "茶几测试", "返回上页", }, nil, "请修改武器刷新没用") if SN == nil then else if SN[1]==true then WQ1() end if SN[2]==true then WQ2() end if SN[3]==true then WQ3() end if SN[4]==true then Main() end end FX1=0 end function WQ1() qf=gg.prompt({"武器代码","刷新武器"},nil,{"number","checkbox"}) if qf~= nil then if qf[1] then fastsearch({{808464942,4,32},{1701667150,-4,4},{1601069388,-8,4},{250,4,4}},{{qf[1],12,4,false}}) end if qf[2] then local t = {"libil2cpp.so", "Cd"} local tt = {0x216964, 0x5C, 0x10, 0x5C, 0xA4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 1}}) end end end function WQ2() gg.alert([[ 常规武器: 火箭筒:一级100 二级101 三级102 迫击炮:一级110 二级111 三级112 冲锋枪:一级130 二级131 三级132 能量剑:一级140 二级141 三级142 蹦蹦枪:一级150 二级151 三级152 能量炮:一级180 二级181 三级182 霰弹枪:一级190 二级191 三级192 唤风镖:一级200 二级201 三级202 霸天斧:一级210 二级211 三级212 聚合弓: 一级220 二级221 三级222 特殊武器: 加血枪:10100 霰弹枪:10130 蹦蹦枪:11150 像素剑:10140 回旋镖:10150 电球枪:10160 滋水枪:11130 自动枪:12130 最新武器: 毁灭手炮:50008 战意狂怒:50007 震卡手雷:50004 隐身:50005 霸主护盾:90005 金刚武器: 热破-90100 威震天-90200 红蜘蛛-90300]]) end function WQ3() qmnb = { {["memory"] = 32}, {["name"] = "666"}, {["value"] = 5.0, ["type"] = 16}, } qmxg={ {["value"] = 5.0, ["offset"] = 0, ["type"] = 16, ["freeze"] = true}, } xqmnb(qmnb) end _ENV['配置功能'] = function() UI = "w" local menu = gg.multiChoice({ "道具品质", "移动开物[修复]", "跳高耐久", "穿墙", "亮透", "云朵进化", "人物上色[指针]",--寒岗 "奥博进化[修复]", "嘲讽动作", "视角", "3倍移速", "10倍移速", "星耀动作", "自调动作", "boos影忍", "跳跃飞[没修]", "失忆者招手改引体向上", "无视炸锁", "失忆者招手改应援boy", "秒上白银", "41吸人", "82吸人", "解锁全皮[7723]", "无限放狗", "星辰少女进化", "秒任务", "全图秒开", "️返回主页️", }, nil, "配置功能") if menu then for i in pairs(menu) do _ENV[({"w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","w19","w20","w21","w22","w23","w24","w25","w26","w27","Main",})[i]]() end end end function w1() fastsearch({ {26222, 2, 32}, {-28646, 2, 2} }, { {26143, 0, 2, false}, {-32768, 2, 2, false}, },"普通卡") fastsearch({ {31232, 2, 32}, {26377, 2, 2} }, { {26143, 0, 2, false}, {-32768, 2, 2, false}, },"稀有卡") fastsearch({ {21490, 2, 32}, {-29737, 2, 2} }, { {26143, 0, 2, false}, {-32768, 2, 2, false}, },"史诗卡") end function w2() local Search_array = { {167772172, 4, 16384, "移动开物"}, {-481296384, 172, 4}, {436207629, 176, 4}, {-442564028, 180, 4} } local Modifythe_array = { {-476052716,144, 4, false}, {-516948194,148,4,false} } LSQ_pointer(Search_array, Modifythe_array)gg.clearResults() end function w3() gg.clearResults() gg.setRanges(32) gg.searchNumber("1017D;4.3;13D::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4.3", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("999999", gg.TYPE_FLOAT) gg.clearResults() end function w4() qmnb = { {["memory"] = 32}, {["name"] = "穿墙"}, {["value"] = -10.0, ["type"] = 16}, {["lv"] = 49.0, ["offset"] = 20, ["type"] = 16}, } qmxg = { {["value"] = 999999, ["offset"] = 0, ["type"] = 16}, } xqmnb(qmnb) end function w5() qmnb = { {["memory"] = 32}, {["name"] = "全图亮透"}, {["value"] = 8.0, ["type"]=16}, {["lv"] = 4,["offset"]=-4, ["type"]=4}, {["lv"] = 1,["offset"]=8, ["type"]=4}, {["lv"] = 8,["offset"]=12, ["type"]=4}, } qmxg = { {["value"] = 1, ["offset"] = 46, ["type"] = 4, ['freeze'] = true}, } xqmnb(qmnb) end function w6() readWrite({{false,40.0,352,16,nil,nil},{5.0,364,16},{16.0,368,16}},{{0,0,16,false},{0,4,16,false},{1.39989717e-42,120,16,false},{0,124,16,false},{0,128,16,false},{1314520,324,16,false}},16,32,"云朵吸人") end function w7() fastsearch({{1.2000000476837158, 16, 32}, {0.19999998807907104, -4, 16}}, {{9, 0, 16, false}}) end function w8() gg.clearResults() gg.setRanges(32) gg.searchNumber("0.5;1.0;3.0;0.30000001192;3.79999995232;2.5;0.5;0.5;0.5::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("3", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("160", gg.TYPE_FLOAT) gg.toast("汽车人技能全图闪电") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("0.5;1.0;0.30000001192;3.79999995232;2.5;0.5;0.5;0.5::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("7.2", gg.TYPE_FLOAT) gg.toast("增长闪电时长") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("8.0;0.5;0.30000001192;3.79999995232;2.5;0.5;0.5;8.0;0.5::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("8", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("1.5", gg.TYPE_FLOAT) gg.toast("技能冷却") gg.clearResults() end function w9() fastsearch--嘲讽动作 ({ {950001,4,32}, {6,-4,4}, {0,8,4}, {0,12,4}, {0,16,4}, {0,20,4}, {0,-8,4}, {0,-12,4} }, {{960271,0,4}, {960251,4,4}, {950671,8,4}, {950661,12,4}, {950141,16,4}, {962331,20,4,false}}) gg.toast("\n \n \n \n") end function w10() aa=gg.prompt({"请输入视角大小,恢复填12"},{},{"number"}) fastsearch({ {55.00000762939453, 16, 32}, {30.0, -40, 16}, }, { {aa[1], -28, 16, false}, },"人物视角") end function w11() fastsearch({{7.0,16,32},{-0.75,8,16}},{{0.3,8,16,false}}) gg.alert("3倍移速开启成功") end function w12() qmnb = { {["memory"] = 32}, {["name"] = "人物加速"}, {["value"] = 7.0, ["type"]=16}, {["lv"] = -0.75,["offset"]=0x8, ["type"]=16}, } qmxg = { {["value"] = 3.8, ["offset"] =0x8, ["type"] = 16, ['freeze'] = true}, } xqmnb(qmnb) end function w13() fastsearch ({ {950001,4,32}, {6,-4,4}, {0,8,4}, {0,12,4}, {0,16,4}, {0,20,4}, {0,-8,4}, {0,-12,4} }, {{961731,0,4}, {961711,4,4}, {961721,8,4}, {961361,12,4}, {961191,16,4}, {961351,20,4,false}})---星耀动作 end function w14() _ENV["gg"]["clearResults"]() _ENV["gg"]["setRanges"](32) a = _ENV["gg"]["prompt"]({"招手:\n960001 雇佣兵·招手\n960011 失忆者·招手\n960021 女特工·招手\n960031 小学妹·招手\n960041 机器人·招手\n960051 魔术师·招手\n960571 发明家·招手\n\n嘲讽:\n960061 雇佣兵嘲讽\n960071 失忆者嘲讽\n960081 女鬼嘲讽\n960101 小学妹嘲讽\n960101 机器人嘲讽\n960111 魔术师嘲讽\n\n一个真正的鳗:\n960241 雇佣兵·打篮球\n960251 失忆者·打篮球\n960261 雇佣兵·篮球之舞\n960271 失忆者·篮球之舞\n\n星耀动作加引体向上:\n961351 洛杰星耀\n963561 洛杰星轮[大厅]\n961191 学妹星耀1\n961201 艾克星耀\n961211 狐狸星耀\n961361 雇佣兵星耀\n963571 雇佣兵星轮[大厅]\n961371 女鬼星耀\n961711 梦魇星耀\n961721 发明家星耀\n961731 学妹星耀2\n962701 引体向上\n963781 大黄蜂出场\n\n电摇动作:\n960691 失忆者·应援boy\n960701 女特工·演唱女王\n960681 雇佣兵·摇滚贝斯\n960731 发明家·我为歌狂\n961881 关起来\n961041 贵族风度\n960921 来口西瓜\n960431 花式倒立\n960441 侧滑拳击\n960461 滑步登场\n960491 独轮车\n960551 闪耀登场\n962901 终极闪耀赛罗变身\n962331 怪兽登场\n961941 海上豪杰\n962931 贝利亚变身\n962491 月兔奔月\n960931 冲浪达人\n\n涂鸦:\n950001 我爱DMM\n950141 陷阱夹子\n950331 伪装宝盒\n950661 DMM战队\n950671 DMM奖杯\n\n变身道具:\n长椅100\n床101\n箱子102\n仙人掌103\n凳子104\n马桶105\n电脑106\n抽屉107\n花108109\n桌子110\n路障115\n牌116\n鼓117\n绿色垃圾桶118\n蓝色垃圾桶119\n120球", "↑修改前\n↓修改后"}, {"", ""}, {"text", "text"}) if a == nil then _ENV["gg"]["alert"]("有数值为空") end if a[1] == nil then _ENV["gg"]["alert"]("有数值为空") end if a[2] == nil then _ENV["gg"]["alert"]("有数值为空") end _ENV["gg"]["searchNumber"](a[1], gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) b = _ENV["gg"]["getResultCount"]() _ENV["gg"]["getResults"](b) _ENV["gg"]["editAll"](a[2], gg.TYPE_DWORD) end function w15() xtnb({{false,0.20000000298023224,144,16,nil,nil},{5.0,148,16},{2.5,152,16}},{{1,0,16,false},{0,16,16,false},{0,20,16,false}},16,32,"影之忍者无限技能+免费") local xt=gg.prompt({"忍者冲刺距离"}, {[1] = 5}, {[1] = "text"}) xtnb({{false,2147483647,0,4,nil,nil},{4.0,56,16},{4.0,64,16},{9.183549615799121E-41,100,16},{0.36000001430511475,200,16},{0.36000001430511475,204,16},{0.4000000059604645,208,16}},{{xt[1],60,16,false}},16,32,"忍者冲刺距离") end function w16() if gg.alert("","开","关")==1 then gg.clearResults() gg.setRanges(32) gg.searchNumber("2.79999995232;20;20;900;", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4.90000009537", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("999", gg.TYPE_FLOAT) gg.toast("飞天") gg.clearResults() else gg.clearResults() gg.setRanges(32) gg.searchNumber("2.79999995232;20;20;900;999::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("999", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("4.90000009537", gg.TYPE_FLOAT) gg.toast("恢复") gg.clearResults() end end function w17() if gg.alert("","引体向上","恢复")==1 then gg.clearResults() gg.setRanges(32) gg.searchNumber("960011", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("962701", gg.TYPE_DWORD) gg.toast("引体向上") gg.clearResults() else gg.clearResults() gg.setRanges(32) gg.searchNumber("962701", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("960011", gg.TYPE_DWORD) gg.toast("恢复") gg.clearResults() end end function w18() BaseAddressY(0x1be8f5c,'-516948194') --方法yqjKcdTFpnQayGZAudp gg.toast("防止炸锁") end function w19() if gg.alert("","失忆者·应援boy","恢复")==1 then gg.clearResults() gg.setRanges(32) gg.searchNumber("960011", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("960691", gg.TYPE_DWORD) gg.toast("失忆者·应援boy") gg.clearResults() else gg.clearResults() gg.setRanges(32) gg.searchNumber("960691", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("960011", gg.TYPE_DWORD) gg.toast("恢复") gg.clearResults() end end function w20() nc_offset(getso("libil2cpp.so"),{{482082000,4,0xC54E3C},}) nc_offset(getso("libil2cpp.so"),{{-369093590,4,0xC6D314},}) --方法名:public Single get_GameTime() { } --类名:InGameScene --方法:public override Void BatchUpdate() { } --操作码~A B 0x地址 --跳转方法:private Void ShowGameOverUI() { } end function w21() if gg.alert("","开","关")==1 then qmnb = { {["memory"] = 32}, {["name"] = "41吸人"}, {["value"] = 80, ["type"] = 4}, {["lv"] = 1.0,["offset"] =8, ["type"] = 16}, {["lv"] = 30,["offset"] =4, ["type"] = 4}, } qmxg = { {["value"] = 0,["offset"] =8, ["type"] = 16}, } xqmnb(qmnb) else qmnb = { {["memory"] = 32}, {["name"] = "41吸人"}, {["value"] = 80, ["type"] = 4}, {["lv"] = 0,["offset"] =8, ["type"] = 16}, {["lv"] = 30,["offset"] =4, ["type"] = 4}, } qmxg = { {["value"] = 1.0,["offset"] =8, ["type"] = 16}, } xqmnb(qmnb) end end function w22() if gg.alert("","开","关")==1 then qmnb = { {["memory"] = 32}, {["name"] = "82吸人"}, {["value"] = 39, ["type"] = 4}, {["lv"] = 1.0,["offset"] =4, ["type"] = 16}, {["lv"] = 88,["offset"] =-4, ["type"] = 4}, } qmxg = { {["value"] = 0,["offset"] =4, ["type"] = 16}, } xqmnb(qmnb) else qmnb = { {["memory"] = 32}, {["name"] = "82吸人"}, {["value"] = 39, ["type"] = 4}, {["lv"] = 0,["offset"] =4, ["type"] = 16}, {["lv"] = 88,["offset"] =-4, ["type"] = 4}, } qmxg = { {["value"] = 1.0,["offset"] =4, ["type"] = 16}, } xqmnb(qmnb) end end function w23() if gg.alert("","道具","角色")==1 then --方法OwnCardSkin操作码~A Mov r0, #1 ~A bx lr gg.toast("Loading...") nc_offset(getso("libil2cpp.so"),{{-476053503,2,0x1818134},}) nc_offset(getso("libil2cpp.so"),{{-516948194,6,0x1818134},}) gg.toast("宝贝~已修改成功,祝您游戏愉快~") else --方法OwnSkinPart操作码~A Mov r0, #1 ~A bx lr gg.toast("Loading...") nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x1839A0C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1839A0C+4},}) gg.toast("宝贝~已修改成功,祝您游戏愉快~") end end function w24() BaseAddressD(0x1911400,'-476052999') BaseAddressD(0x20db7a8,'-476052999') BaseAddressD(0x153fc04,'-476052999') BaseAddressD(0x123ea28,'-476052999') BaseAddressD(0x1196300,'-476052999') BaseAddressD(0x177e6a0,'-476052999') BaseAddressD(0x20db674,'-476053503') end function w25() readWrite({{false,0.6000000238418579,84,16,nil,nil},{4.0,96,16}},{{0,0,16,true},{0,12,16,false},{0,16,16,false},{0,24,16,false},{0,28,16,false},{250,88,16,false},{1314,92,16,false},{5.60519386e-45,128,16,true},{0,84,16,false}},16,32,"圣女进化") end function w26() SN = gg.choice({ "秒等级", "关", "返回" }, 2023, "HJSY") if SN == 1 then a() end if SN == 2 then b() end if SN == 3 then Main() end XGCK = -1 end --[[ get_Feature get_Progress get_RoundCount get_Increment ]] function a() BaseAddressD(0x17dccc0,'-482343961') BaseAddressD(0x17dcd18,'-482343961') BaseAddressD(0x17db684,'-482343961') BaseAddressD(0x17dcd70,'-482343961') gg.toast("任务秒完开启成功") end function b() BaseAddressA(0x17dccc0,'-382908368') BaseAddressA(0x17dcd18,'-382908368') BaseAddressA(0x17db684,'-382908368') BaseAddressA(0x17dcd70,'-382908368') gg.toast("关闭成功") end function w27() BaseAddressY(0x1BE04D0,'-369098381') BaseAddressY(0x1BE04D0,'-382907408') --邻里 end _ENV['强力武器'] = function() UI = "r" local menu = gg.multiChoice({ "强力斧子", "能量炮范围", "强力能量剑", "迫击炮范围", "️返回主页️", }, nil, "打榜用的") if menu then for i in pairs(menu) do _ENV[({"r1","r2","r3","r4","Main",})[i]]() end end end function r1() local xt=gg.prompt({"斧头伤害"}, {[1] = 100}) qmnb = { {["memory"] = 32}, {["name"] = "斧头伤害"}, {["value"] = 5.0, ["type"] = 16}, {["lv"] = 60.0, ["offset"] = -104, ["type"] = 16}, } qmxg = { {["value"] = xt[1], ["offset"] = -104, ["type"] = 16, ["freeze"] = false}, {["value"] = xt[1], ["offset"] = 24, ["type"] = 16, ["freeze"] = false}, } xqmnb(qmnb) BaseAddressD(0x200c928,'-476053504') gg.toast("宝贝~已修改成功,祝您游戏愉快~") end function r2() a=gg.prompt({"能量腕炮范围"},{[1]= 3}) fastsearch({ {5,16,32}, {1,4,16}, {0,8,16}}, {{a[1],4,16, false}}) gg.toast("能量腕炮范围"..a[1]) end function r3() a=gg.prompt({"能量剑距离"},{[1]= 3}) fastsearch({ {66,16,32}, {240,8,4}}, {{a[1],48,16, false}}) gg.toast("能量剑距离修改为"..a[1]) a=gg.prompt( {"伤害[1;1000] "}, {[1] = "23"} ,{"number"} ) if a==nil then Main(gg.alert("你点击了取消")) end qmnb = { {["memory"] = 32}, {["name"] = "能量剑伤害"}, {["value"] = 1115947008, ["type"] = 32}, {["lv"] = 1066192077, ["offset"] = 76, ["type"] = 4}, {["lv"] = -1, ["offset"] = 96, ["type"] = 4}, } qmxg = { {["value"] = a[1], ["offset"] = 0, ["type"] = 16}, } xqmnb(qmnb) end function r4() local xt=gg.prompt({"迫机炮攻击范围"}, {[1] = 10}, {[1] = "text"}) xtnb({{false,0.05999999865889549,4,16,nil,nil},{0.009999999776482582,16,16}},{{xt[1],0,16}},16,32,"迫机炮") fastsearch ({ {1086324736,4,32}, {1031127695,4,4}, {1008981770,16,4} }, {{0.025,16,16}, {0.025,20,16}, {0.025,24,16}, {550,0,16,false}}) fastsearch({{99.0, 16, 32}, {0.20000000298023224, -32, 16}, {0.4000000059604645, -24, 16}, {0.15000000596046448, -20, 16}, {1.0, -16, 16}, {0.8500000238418579, -12, 16}, {2.5, 12, 16}}, {{20, -36, 16, false}})--射程 gg.toast("宝贝~已修改成功,祝您游戏愉快~") end _ENV['自调'] = function() SN = gg.multiChoice({ "迫击射程",--1 "腕炮范围",--2 "人物移速",--3 "返回脚本", }, nil, "陌路人\n功能不能用请反馈") if SN == nil then else if SN[1]==true then QT1() end if SN[2]==true then QT2() end if SN[3]==true then QT3() end if SN[4]==true then HOME() end end FX1=0 end function QT1() yw=gg.prompt({"输入迫击炮射程"},{[1]=""}) fastsearch({{1031127695, 4, 32}, {1008981770, 12, 4}, {1008981770, 16, 4}, {1008981770, 20, 4}, {1028443341, 28, 4}, {0, 40, 4}, {0, 48, 4}, {0, 60, 4}}, {{yw[1], -4, 16, false}}) end function QT2() yw=gg.prompt({"输入腕炮范围"},{[1]=""}) fastsearch({ {5,16,32}, {1,4,16}, {0,8,16}}, {{yw[1],4,16, false}}) end function QT3() yw=gg.prompt({"输入人物加速"},{[1]=""}) qmnb = { {["memory"] = 32}, {["name"] = "人物加速"}, {["value"] = 7.0, ["type"]=16}, {["lv"] = -0.75,["offset"]=0x8, ["type"]=16}, } qmxg = { {["value"] = yw[1], ["offset"] =0x8, ["type"] = 16, ['freeze'] = true}, } xqmnb(qmnb) end function HOME() Main() end _ENV['音乐'] = function() UI = "t" local menu = gg.multiChoice({ "偶像", "你看到了我", "江南style", "杨戬擒悟空", "烧酒歌", "雪dj", "心做", "男刀", "停止音乐", "返回主页",--23 }, nil, os.date("音乐区")) if menu then for i in pairs(menu) do _ENV[({"t1","t2","t3","t4","t5","t6","t7","t8","t9","Main",})[i]]() end end end function t1()--加功能 gg.playMusic("http://jsjs.xn--n6q058g.tk/view.php/1716b285b220a593c62e34232fce26d9.mp3") end function t2() gg.playMusic("http://music.163.com/song/media/outer/url?id=1377530437.mp3") end function t3() gg.playMusic("http://music.163.com/song/media/outer/url?id=27490912.mp3") end function t4() gg.playMusic("http://music.163.com/song/media/outer/url?id=29999128.mp3") end function t5() gg.playMusic("http://music.163.com/song/media/outer/url?id=1927948807.mp3") end function t6() gg.playMusic("http://music.163.com/song/media/outer/url?id=2027757465.mp3") end function t7() gg.playMusic("http://music.163.com/song/media/outer/url?id=2029645370.mp3") end function t8() gg.playMusic("http://music.163.com/song/media/outer/url?id=563129860.mp3") end function t9() gg.toast("正在停止音乐") gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end ---------------------------------------分界线------------- ----------------------------- floatingWindowManager:newWindow(('陌路人内置'):format(floatingWindowManager.version), { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_margin = '10dp', background="https://cccimg.com/view.php/47d5e9dd0609fbb6374dabf38a44be91.png", layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '选择进程', textSize = '16sp', onClick = function() gg.setProcessX() end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '游戏设置', textSize = '16sp', onClick = function() floatingWindowManager:start('游戏设置') end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '功能区3', textSize = '16sp', onClick = function() floatingWindowManager:start('功能区3') end }, { Button, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_margin = '5dp', text = '功能区2', textSize = '16sp', onClick = function() floatingWindowManager:start('功能区2') end }, } }) end, onDestroy = function() gg.alert('陌路人提示:您已退出本辅助') end }) floatingWindowManager:newWindow('游戏设置', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', newSwitchLayout('功能'), newSwitchLayout('刷武器'), } }) end }) floatingWindowManager:newWindow('功能区2', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', newSwitchLayout('配置功能'), newSwitchLayout('强力武器'), } }) end }) floatingWindowManager:newWindow('功能区3', { onCreate = function(floatingWindow) floatingWindow:addlayout({ ScrollView, layout_width = 'match_parent', layout_height = 'match_parent', { LinearLayout, background = floatingWindowManager:getStateListDrawable(), layout_width = 'match_parent', layout_height = 'match_parent', orientation = 'vertical', padding = '10dp', newSwitchLayout('自调'), newSwitchLayout('音乐'), } }) end }) -- 运行悬浮窗 floatingWindowManager:run()