--[[ 【开关】开【开关】 【公告】这里填你的公告【公告】 ]] toMusic("欢迎使用逸泽内置,群:829396320") 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 = "pa" local menu = gg.multiChoice({ "删除日志", "防封初始化", "Xa代码清理", "防封(内外都开)", "防检测(内外都开)", "奔放防(恶心的不行)", "返回主页", }, nil, os.date("晴天")) if menu then for i in pairs(menu) do _ENV[({"pa1","pa2","pa3","pa4","pa5","pa6","Main",})[i]]() end end end function pa1() os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/tombstone_02") --删除4399版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/tombstone_02") --删除OPPO版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/tombstone_02") --删除好游快爆版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/tombstone_02") --删除华为版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/tombstone_02") --删除小米版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/tombstone_02") --删除vivo版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/tombstone_02") --删除九游版本日志 os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/tombstone_02") --删除应用宝版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/tombstone_02") --删除233版本日志 os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/game_log.txt") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/tombstone_00") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/tombstone_01") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/tombstone_02") --删除360版本日志 os.remove("/storage/emulated/0/Android/data/com.nxkj.gybb13/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/game_log.txt") os.remove("/storage/emulated/0/Android/data/com.nxkj.gybb13/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/tombstone_00") os.remove("/storage/emulated/0/Android/data/com.nxkj.gybb13/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/tombstone_01") os.remove("/storage/emulated/0/Android/data/com.bfire.da.nui/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/game_log.txt") gg.alert("清除成功") end function pa2() gg.clearResults() gg.setRanges(gg.REGION_C_HEAP | gg.REGION_C_DATA | gg.REGION_ANONYMOUS | gg.REGION_JAVA_HEAP | gg.REGION_C_BSS | gg.REGION_PPSSPP | gg.REGION_C_ALLOC) gg.searchNumber("54545", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("455445", gg.TYPE_DWORD) gg.toast("晴天提醒您:防封初始化开启成功") gg.clearResults() end function pa3() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,060,864", 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("20%开启成功") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("2,359,296", 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("35%开启成功") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("2,097,152", 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("56%开启成功") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("2,621,440", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("72%开启成功") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("8,650,752", 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("80%开启成功") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("4,194,304", 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("100%开启成功") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,835,008", 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("晴天提醒您:代码锁定成功\n正在清理代码") gg.clearResults() gg.clearResults() gg.setRanges(8) end function pa4() gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1572864;6291456", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1572864", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("0", gg.TYPE_DWORD) gg.clearResults() gg.setRanges(gg.REGION_CODE_APP) gg.searchNumber("1572864;6291456", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("6291456", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll("0", gg.TYPE_DWORD) gg.toast("晴天提醒您:防封开启成功") gg.clearResults() end function pa5() 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("查找") 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("删除") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("4.6533968e33", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4.6533968e33", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_FLOAT) gg.toast("晴天提醒您:防检测开启成功") gg.clearResults() end function pa6() gg.clearResults() gg.setRanges(32) gg.searchNumber("535146", 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("开启13%成功") gg.clearResults() gg.clearResults()--A内存防 gg.setRanges(32) gg.searchNumber("672568", 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("开启43%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("312228", 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("开启53%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("656220", 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("开启67%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("139884", 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("开启79%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("311138", 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("开启86%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("147876", 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("开启95%") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("731622", 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("晴天提醒您:开启100%成功奔放") gg.clearResults() end _ENV['功能'] = function() UI = "e" local menu = gg.multiChoice({ "过环境", "防闪", "防注入", "局内防", "防举报[大厅]", "奔放防", "xa防", "基址防封[局内]", "防人工", "大厅录入防",---仙沫 "防封初始[必开]",---by.yscr "过检", "返回主页", }, nil, "测试中") if menu then for i in pairs(menu) do _ENV[({"e1","e2","e3","e4","e5","e6","e7","e8","e9","e10","e11","e12","Main",})[i]]() end end end function e1() local libtersafe2 = 0 for k, v in pairs(gg.getRangesList('libunity.so$')) do if (v.state == 'Cd') then libtersafe2 = v['start'] break end end k={{address=libtersafe2+303392,flags=4,value=-1,freeze=true},{address=libtersafe2+303400,flags=4,value=-1,freeze=true},{address=libtersafe2+303472,flags=4,value=-1,freeze=true},{address=libtersafe2+303496,flags=4,value=-1,freeze=true},{address=libtersafe2+303512,flags=4,value=-1,freeze=true},{address=libtersafe2+303640,flags=4,value=-1,freeze=true},{address=libtersafe2+303648,flags=4,value=-1,freeze=true},{address=libtersafe2+303684,flags=4,value=-1,freeze=true},{address=libtersafe2+303704,flags=4,value=-1,freeze=true},{address=libtersafe2+303832,flags=4,value=-1,freeze=true},{address=libtersafe2+303840,flags=4,value=-1,freeze=true},{address=libtersafe2+303924,flags=4,value=-1,freeze=true},{address=libtersafe2+303944,flags=4,value=-1,freeze=true},{address=libtersafe2+304080,flags=4,value=-1,freeze=true},{address=libtersafe2+304168,flags=4,value=-1,freeze=true},{address=libtersafe2+304232,flags=4,value=-1,freeze=true},{address=libtersafe2+304360,flags=4,value=-1,freeze=true},{address=libtersafe2+304368,flags=4,value=-1,freeze=true},{address=libtersafe2+304420,flags=4,value=-1,freeze=true},{address=libtersafe2+304460,flags=4,value=-1,freeze=true},{address=libtersafe2+304504,flags=4,value=-1,freeze=true},{address=libtersafe2+304520,flags=4,value=-1,freeze=true},{address=libtersafe2+304600,flags=4,value=-1,freeze=true},{address=libtersafe2+304740,flags=4,value=-1,freeze=true},{address=libtersafe2+304832,flags=4,value=-1,freeze=true},{address=libtersafe2+304856,flags=4,value=-1,freeze=true},{address=libtersafe2+304992,flags=4,value=-1,freeze=true},{address=libtersafe2+305040,flags=4,value=-1,freeze=true},{address=libtersafe2+305076,flags=4,value=-1,freeze=true},{address=libtersafe2+305088,flags=4,value=-1,freeze=true},{address=libtersafe2+305128,flags=4,value=-1,freeze=true},{address=libtersafe2+305180,flags=4,value=-1,freeze=true},{address=libtersafe2+305224,flags=4,value=-1,freeze=true},{address=libtersafe2+305232,flags=4,value=-1,freeze=true},{address=libtersafe2+305316,flags=4,value=-1,freeze=true},{address=libtersafe2+305328,flags=4,value=-1,freeze=true},{address=libtersafe2+305460,flags=4,value=-1,freeze=true},{address=libtersafe2+305520,flags=4,value=-1,freeze=true},{address=libtersafe2+305556,flags=4,value=-1,freeze=true},{address=libtersafe2+305568,flags=4,value=-1,freeze=true},{address=libtersafe2+305616,flags=4,value=-1,freeze=true},{address=libtersafe2+305812,flags=4,value=-1,freeze=true},{address=libtersafe2+585024,flags=4,value=-1,freeze=true},{address=libtersafe2+585028,flags=4,value=-1,freeze=true},{address=libtersafe2+655008,flags=4,value=-1,freeze=true},{address=libtersafe2+655012,flags=4,value=-1,freeze=true},{address=libtersafe2+655016,flags=4,value=-1,freeze=true},{address=libtersafe2+655020,flags=4,value=-1,freeze=true},{address=libtersafe2+655024,flags=4,value=-1,freeze=true},{address=libtersafe2+655028,flags=4,value=-1,freeze=true},{address=libtersafe2+655032,flags=4,value=-1,freeze=true},{address=libtersafe2+655036,flags=4,value=-1,freeze=true},{address=libtersafe2+655040,flags=4,value=-1,freeze=true},{address=libtersafe2+655044,flags=4,value=-1,freeze=true},{address=libtersafe2+655048,flags=4,value=-1,freeze=true},{address=libtersafe2+655052,flags=4,value=-1,freeze=true},{address=libtersafe2+655056,flags=4,value=-1,freeze=true},{address=libtersafe2+655060,flags=4,value=-1,freeze=true},{address=libtersafe2+655064,flags=4,value=-1,freeze=true},{address=libtersafe2+655068,flags=4,value=-1,freeze=true},{address=libtersafe2+655072,flags=4,value=-1,freeze=true},{address=libtersafe2+655076,flags=4,value=-1,freeze=true},{address=libtersafe2+655080,flags=4,value=-1,freeze=true},{address=libtersafe2+655084,flags=4,value=-1,freeze=true},{address=libtersafe2+655088,flags=4,value=-1,freeze=true},{address=libtersafe2+655092,flags=4,value=-1,freeze=true},{address=libtersafe2+655096,flags=4,value=-1,freeze=true},{address=libtersafe2+655100,flags=4,value=-1,freeze=true},{address=libtersafe2+655104,flags=4,value=-1,freeze=true},{address=libtersafe2+655108,flags=4,value=-1,freeze=true},{address=libtersafe2+655112,flags=4,value=-1,freeze=true},{address=libtersafe2+655116,flags=4,value=-1,freeze=true},{address=libtersafe2+655120,flags=4,value=-1,freeze=true},{address=libtersafe2+655124,flags=4,value=-1,freeze=true},{address=libtersafe2+655128,flags=4,value=-1,freeze=true},{address=libtersafe2+655132,flags=4,value=-1,freeze=true},{address=libtersafe2+655136,flags=4,value=-1,freeze=true},{address=libtersafe2+655140,flags=4,value=-1,freeze=true},{address=libtersafe2+655144,flags=4,value=-1,freeze=true},{address=libtersafe2+655148,flags=4,value=-1,freeze=true},{address=libtersafe2+655152,flags=4,value=-1,freeze=true},{address=libtersafe2+655156,flags=4,value=-1,freeze=true},{address=libtersafe2+655160,flags=4,value=-1,freeze=true},{address=libtersafe2+655164,flags=4,value=-1,freeze=true},{address=libtersafe2+655168,flags=4,value=-1,freeze=true},{address=libtersafe2+655172,flags=4,value=-1,freeze=true},{address=libtersafe2+655176,flags=4,value=-1,freeze=true},{address=libtersafe2+655180,flags=4,value=-1,freeze=true},{address=libtersafe2+655184,flags=4,value=-1,freeze=true},{address=libtersafe2+655188,flags=4,value=-1,freeze=true},{address=libtersafe2+655192,flags=4,value=-1,freeze=true},{address=libtersafe2+655196,flags=4,value=-1,freeze=true},{address=libtersafe2+655200,flags=4,value=-1,freeze=true},{address=libtersafe2+655204,flags=4,value=-1,freeze=true},{address=libtersafe2+655208,flags=4,value=-1,freeze=true},{address=libtersafe2+655212,flags=4,value=-1,freeze=true},{address=libtersafe2+655216,flags=4,value=-1,freeze=true},{address=libtersafe2+655220,flags=4,value=-1,freeze=true},{address=libtersafe2+655224,flags=4,value=-1,freeze=true},{address=libtersafe2+655228,flags=4,value=-1,freeze=true},{address=libtersafe2+655232,flags=4,value=-1,freeze=true},{address=libtersafe2+655236,flags=4,value=-1,freeze=true},{address=libtersafe2+655240,flags=4,value=-1,freeze=true},{address=libtersafe2+655244,flags=4,value=-1,freeze=true},{address=libtersafe2+655248,flags=4,value=-1,freeze=true},{address=libtersafe2+655252,flags=4,value=-1,freeze=true},{address=libtersafe2+655256,flags=4,value=-1,freeze=true},{address=libtersafe2+655260,flags=4,value=-1,freeze=true},{address=libtersafe2+655264,flags=4,value=-1,freeze=true},{address=libtersafe2+655268,flags=4,value=-1,freeze=true},{address=libtersafe2+655272,flags=4,value=-1,freeze=true},{address=libtersafe2+655276,flags=4,value=-1,freeze=true},{address=libtersafe2+655280,flags=4,value=-1,freeze=true},{address=libtersafe2+655284,flags=4,value=-1,freeze=true},{address=libtersafe2+655288,flags=4,value=-1,freeze=true},{address=libtersafe2+655292,flags=4,value=-1,freeze=true},{address=libtersafe2+655296,flags=4,value=-1,freeze=true},{address=libtersafe2+655300,flags=4,value=-1,freeze=true},{address=libtersafe2+655304,flags=4,value=-1,freeze=true},{address=libtersafe2+655308,flags=4,value=-1,freeze=true},{address=libtersafe2+655312,flags=4,value=-1,freeze=true},{address=libtersafe2+655316,flags=4,value=-1,freeze=true},{address=libtersafe2+655320,flags=4,value=-1,freeze=true},{address=libtersafe2+655324,flags=4,value=-1,freeze=true},{address=libtersafe2+655328,flags=4,value=-1,freeze=true},{address=libtersafe2+655332,flags=4,value=-1,freeze=true},{address=libtersafe2+655336,flags=4,value=-1,freeze=true},{address=libtersafe2+655340,flags=4,value=-1,freeze=true},{address=libtersafe2+655344,flags=4,value=-1,freeze=true},{address=libtersafe2+655348,flags=4,value=-1,freeze=true},{address=libtersafe2+655352,flags=4,value=-1,freeze=true},{address=libtersafe2+655356,flags=4,value=-1,freeze=true},{address=libtersafe2+655360,flags=4,value=-1,freeze=true},{address=libtersafe2+655364,flags=4,value=-1,freeze=true},{address=libtersafe2+655368,flags=4,value=-1,freeze=true},{address=libtersafe2+655372,flags=4,value=-1,freeze=true},{address=libtersafe2+655376,flags=4,value=-1,freeze=true},{address=libtersafe2+655380,flags=4,value=-1,freeze=true},{address=libtersafe2+655384,flags=4,value=-1,freeze=true},{address=libtersafe2+655388,flags=4,value=-1,freeze=true},{address=libtersafe2+655392,flags=4,value=-1,freeze=true},{address=libtersafe2+655396,flags=4,value=-1,freeze=true},{address=libtersafe2+655400,flags=4,value=-1,freeze=true},{address=libtersafe2+655404,flags=4,value=-1,freeze=true},{address=libtersafe2+655408,flags=4,value=-1,freeze=true},{address=libtersafe2+655412,flags=4,value=-1,freeze=true},{address=libtersafe2+655416,flags=4,value=-1,freeze=true},{address=libtersafe2+655420,flags=4,value=-1,freeze=true},{address=libtersafe2+655424,flags=4,value=-1,freeze=true},{address=libtersafe2+655428,flags=4,value=-1,freeze=true},{address=libtersafe2+655432,flags=4,value=-1,freeze=true},{address=libtersafe2+655436,flags=4,value=-1,freeze=true},{address=libtersafe2+655440,flags=4,value=-1,freeze=true},{address=libtersafe2+655444,flags=4,value=-1,freeze=true},{address=libtersafe2+655448,flags=4,value=-1,freeze=true},{address=libtersafe2+655452,flags=4,value=-1,freeze=true},{address=libtersafe2+655456,flags=4,value=-1,freeze=true},{address=libtersafe2+655460,flags=4,value=-1,freeze=true},{address=libtersafe2+655464,flags=4,value=-1,freeze=true},{address=libtersafe2+655468,flags=4,value=-1,freeze=true},{address=libtersafe2+655472,flags=4,value=-1,freeze=true},{address=libtersafe2+655476,flags=4,value=-1,freeze=true},{address=libtersafe2+655480,flags=4,value=-1,freeze=true},{address=libtersafe2+655484,flags=4,value=-1,freeze=true},{address=libtersafe2+655488,flags=4,value=-1,freeze=true},{address=libtersafe2+655492,flags=4,value=-1,freeze=true},{address=libtersafe2+655496,flags=4,value=-1,freeze=true},{address=libtersafe2+655500,flags=4,value=-1,freeze=true},{address=libtersafe2+655504,flags=4,value=-1,freeze=true},{address=libtersafe2+655508,flags=4,value=-1,freeze=true},{address=libtersafe2+655512,flags=4,value=-1,freeze=true},{address=libtersafe2+655516,flags=4,value=-1,freeze=true},{address=libtersafe2+655520,flags=4,value=-1,freeze=true},{address=libtersafe2+655524,flags=4,value=-1,freeze=true},{address=libtersafe2+655528,flags=4,value=-1,freeze=true},{address=libtersafe2+655532,flags=4,value=-1,freeze=true},{address=libtersafe2+655536,flags=4,value=-1,freeze=true},{address=libtersafe2+655540,flags=4,value=-1,freeze=true},{address=libtersafe2+655544,flags=4,value=-1,freeze=true},{address=libtersafe2+655548,flags=4,value=-1,freeze=true},{address=libtersafe2+655552,flags=4,value=-1,freeze=true},{address=libtersafe2+655556,flags=4,value=-1,freeze=true},{address=libtersafe2+655560,flags=4,value=-1,freeze=true},{address=libtersafe2+655564,flags=4,value=-1,freeze=true},{address=libtersafe2+655568,flags=4,value=-1,freeze=true},{address=libtersafe2+655572,flags=4,value=-1,freeze=true},{address=libtersafe2+655576,flags=4,value=-1,freeze=true},{address=libtersafe2+655580,flags=4,value=-1,freeze=true},{address=libtersafe2+655584,flags=4,value=-1,freeze=true},{address=libtersafe2+655588,flags=4,value=-1,freeze=true},{address=libtersafe2+655592,flags=4,value=-1,freeze=true},{address=libtersafe2+655596,flags=4,value=-1,freeze=true},{address=libtersafe2+655600,flags=4,value=-1,freeze=true},{address=libtersafe2+655604,flags=4,value=-1,freeze=true},{address=libtersafe2+655608,flags=4,value=-1,freeze=true},{address=libtersafe2+655612,flags=4,value=-1,freeze=true},{address=libtersafe2+656036,flags=4,value=-1,freeze=true},{address=libtersafe2+656312,flags=4,value=-1,freeze=true},{address=libtersafe2+656344,flags=4,value=-1,freeze=true},{address=libtersafe2+656392,flags=4,value=-1,freeze=true},{address=libtersafe2+656472,flags=4,value=-1,freeze=true},{address=libtersafe2+656504,flags=4,value=-1,freeze=true},} gg.addListItems(k) b={"sdkoptedge.chinanetcenter.com","81.70.228.10","ocsp.usertrust.com","106.55.150.175","43.138.9.148","update.ss.igreatdream.com","update.version.brmyx.com","update.test.brmyx.com","dmm-test-cdn.brmyx.cn","schemas.android.com","crl.usertrust.com","140.143.221.238","aia.crlocsp.cn","http.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.test.base.jar:/system/framework/featurelayer-widget.jar:/system/framework/hwEmui.jar:/system/framework/hwPartBasicplatform.jar:/system/framework/telephony-separated.jar:/system/framework/hwTelephony-common.jar:/system/framework/hwPartTelephony.jar:/system/framework/hwPartTelephonyVSim.jar:/system/framework/hwPartTelephonyCust.jar:/system/framework/hwPartTelephonyFullnetworkOpt.jar:/system/framework/hwPartTelephonyTimezoneOpt.jar:/system/framework/hwPartTelephonyOpt.jar:/system/framework/hwPartSecurity.jar:/system/framework/hwPartSecurityFaceId.jar:/system/framework/hwIms-common.jar:/system/framework/hwPartMedia.jar:/system/framework/hwPartConnectivity.jar:/system/framework/hwPartPowerOffice.jar:/system/framework/hwPartDeviceVirtualization.jar:/system/framework/hwPartAirSharing.jar:/system/framework/hwPartDefaultDFR.jar:/system/framework/hwPartDFR.jar:/system/framework/hwPartMagicWindow.jar:/system/framework/hwPartIaware.jar:/system/framework/hwPartMdm.jar:/system/framework/hwPartVr.jar:/system/framework/hwframework.jar:/system/framework/com.huawei.nfc.jar:/system/framework/org.ifaa.android.manager.jar:/system/framework/hwperf.jar:/system/framework/hwcustEmui.jar:/system/framework/hwcustframework.jar:/system/framework/servicehost.jar:/system/framework/hwcustIms-common.jar:/system/framework/hwcustTelephony-common.jar:/system/framework/hwIAwareAL.jar:/system/framework/zframework.z.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar","www.d-trust.net","www.firmaprofesional.com","www.quovadisglobal.com","www.accv.es","www.catcert.net"}for i, v in pairs(b) do gg.setVisible(false)gg.clearResults()gg.setRanges(gg.REGION_C_ALLOC )gg.searchNumber(":"..v, gg.TYPE_BYTE, false, gg.SIGN_EQUAL, 0, -1, 0)revert = gg.getResults(100000, nil, nil, nil, nil, nil, nil, nil, nil)gg.editAll("0", gg.TYPE_BYTE)gg.clearResults()gg.setVisible(false)end 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() toMusic("开启成功") gg.alert('开启成功') end function e3() function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [true] = 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 --libtersafe2.so:bss + 0x81F8 local addr = readPointer("libtersafe2.so:bss", {33272}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x8038 local addr = readPointer("libtersafe2.so:bss", {32824}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x9798 local addr = readPointer("libtersafe2.so:bss", {38808}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x49FC local addr = readPointer("libtersafe2.so:bss", {18940}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x913C local addr = readPointer("libtersafe2.so:bss", {37180}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x7FCC local addr = readPointer("libtersafe2.so:bss", {32716}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x37C8 local addr = readPointer("libtersafe2.so:bss", {14280}, 1) gg.edits(addr, {{-1, 4, 0, true}}) --libtersafe2.so:bss + 0x4B1C local addr = readPointer("libtersafe2.so:bss", {19228}, 1) gg.edits(addr, {{-1, 4, 0, true}}) 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(32) gg.searchNumber("535146", 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("开启13%成功") gg.clearResults() gg.clearResults()--A内存防 gg.setRanges(32) gg.searchNumber("672568", 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("开启43%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("312228", 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("开启53%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("656220", 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("开启67%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("139884", 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("开启79%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("311138", 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("开启86%成功") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("147876", 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("开启95%") gg.clearResults() gg.clearResults() gg.setRanges(32) gg.searchNumber("731622", 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("开启100%成功奔放") gg.clearResults() end function e7() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,885,692,792;1,852,795,252;1,752,459,118", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1,885,692,792;1,852,795,252;1,752,459,118", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("xa防第一步") gg.clearResults() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1,885,692,792;1,852,795,252;1,752,459,118", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("1,885,692,792;1,852,795,252;1,752,459,118", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_DWORD) gg.toast("xa防第二步\n注入成功") 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() local Table,Table2,Table3 = {'libbrms.so',},{'Xa',},{{0x145B54,0x145B60,0x145B64,0x145B68,0x145B70,0x145B78,0x145B7C,0x145B84,0x145B94,0x145B98,0x145B9C,0x145BAC,0x145BB0,0x145BC0,0x145BC4,0x145BC8,0x145BDC,0x145BE8,0x145BF4,0x145BFC,0x145C00,0x145C04,0x145C08,0x145C10,0x145C18,0x145C20,0x145C24,0x145C28,0x145C2C,0x145C34,0x145C4C,0x145C50,0x145C54,0x145C58,0x145C60,0x145C64,0x145C6C,0x145C74,0x145C80,0x145C88,0x145C8C,0x145C9C,0x145CA8,0x145CB0,0x145CB4,0x145CC0,0x145CCC,0x145CD0,0x145CD4,0x145CDC,0x145CE4,0x145CF0,0x145CF8,0x145CFC,0x145D04,0x145D08,0x145D10,0x145D18,0x145D20,},} local L0_02,L0_03 = {},{} local r = gg.getRangesList('.so') for k,v in pairs(Table) do for kk, vv in pairs(r) do if v == vv.internalName:gsub('^.*/', '') and Table2[1] == vv.state then for i = 1, #Table3[k] do L0_02[#L0_02+1] = vv.start + Table3[k][i] end break end end end for k=1,#L0_02 do L0_03[#L0_03+1] = { ['address'] = L0_02[k], ['flags'] = 4, ['value'] = 0, ['freeze'] = true } end gg.addListItems(L0_03) gg.toast('开启成功') 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 function e12() xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end local qmnb= { {['memory']=8}, {['name']='逃跑过检测'}, {['value']=234881024, ['type']=4}, {['lv']=1478430208,['offset']=24, ['type']=4}, {['lv']=1565934162,['offset']=32, ['type']=4}, } local qmxg= { {['value']=8320,['offset']=44,['type']=4}, {['value']=8320,['offset']=216,['type']=4}, {['value']=8320,['offset']=4356,['type']=4}, } xqmnb(qmnb,qmxg) local qmnb= { {['memory']=8}, {['name']='逃跑过检测'}, {['value']=-1918738857, ['type']=4}, {['lv']=1498003603,['offset']=24, ['type']=4}, {['lv']=1057784729,['offset']=264, ['type']=4}, } local qmxg= { {['value']=1883,['offset']=-5300,['type']=4}, {['value']=1883,['offset']=-5296,['type']=4}, {['value']=1883,['offset']=-5264,['type']=4}, {['value']=1883,['offset']=-5256,['type']=4}, {['value']=1883,['offset']=-5164,['type']=4}, {['value']=1883,['offset']=-4808,['type']=4}, {['value']=1883,['offset']=-4804,['type']=4}, {['value']=1883,['offset']=-4800,['type']=4}, {['value']=1883,['offset']=-4796,['type']=4}, {['value']=1883,['offset']=-4276,['type']=4}, {['value']=1883,['offset']=-2052,['type']=4}, {['value']=1883,['offset']=-2048,['type']=4}, {['value']=1883,['offset']=-1160,['type']=4}, {['value']=1883,['offset']=-988,['type']=4}, {['value']=1883,['offset']=0,['type']=4}, {['value']=1883,['offset']=24,['type']=4}, {['value']=1883,['offset']=44,['type']=4}, {['value']=1883,['offset']=68,['type']=4}, {['value']=1883,['offset']=80,['type']=4}, {['value']=1883,['offset']=92,['type']=4}, {['value']=1883,['offset']=104,['type']=4}, {['value']=1883,['offset']=116,['type']=4}, {['value']=1883,['offset']=128,['type']=4}, {['value']=1883,['offset']=140,['type']=4}, {['value']=1883,['offset']=152,['type']=4}, {['value']=1883,['offset']=164,['type']=4}, {['value']=1883,['offset']=176,['type']=4}, {['value']=1883,['offset']=188,['type']=4}, {['value']=1883,['offset']=212,['type']=4}, {['value']=1883,['offset']=260,['type']=4}, {['value']=1883,['offset']=264,['type']=4}, {['value']=1883,['offset']=284,['type']=4}, {['value']=1883,['offset']=288,['type']=4}, {['value']=1883,['offset']=296,['type']=4}, {['value']=1883,['offset']=308,['type']=4}, {['value']=1883,['offset']=320,['type']=4}, {['value']=1883,['offset']=332,['type']=4}, {['value']=1883,['offset']=344,['type']=4}, {['value']=1883,['offset']=356,['type']=4}, {['value']=1883,['offset']=368,['type']=4}, {['value']=1883,['offset']=380,['type']=4}, {['value']=1883,['offset']=392,['type']=4}, {['value']=1883,['offset']=404,['type']=4}, {['value']=1883,['offset']=428,['type']=4}, {['value']=1883,['offset']=452,['type']=4}, {['value']=1883,['offset']=476,['type']=4}, {['value']=1883,['offset']=500,['type']=4}, {['value']=1883,['offset']=524,['type']=4}, {['value']=1883,['offset']=548,['type']=4}, {['value']=1883,['offset']=620,['type']=4}, {['value']=1883,['offset']=644,['type']=4}, {['value']=1883,['offset']=668,['type']=4}, {['value']=1883,['offset']=680,['type']=4}, {['value']=1883,['offset']=1040,['type']=4}, {['value']=1883,['offset']=1056,['type']=4}, {['value']=1883,['offset']=1148,['type']=4}, {['value']=1883,['offset']=1172,['type']=4}, {['value']=1883,['offset']=1328,['type']=4}, {['value']=1883,['offset']=1352,['type']=4}, {['value']=1883,['offset']=1376,['type']=4}, {['value']=1883,['offset']=1400,['type']=4}, {['value']=1883,['offset']=1416,['type']=4}, {['value']=1883,['offset']=1580,['type']=4}, {['value']=1883,['offset']=1604,['type']=4}, {['value']=1883,['offset']=1700,['type']=4}, {['value']=1883,['offset']=1768,['type']=4}, {['value']=1883,['offset']=1792,['type']=4}, {['value']=1883,['offset']=1800,['type']=4}, {['value']=1883,['offset']=1816,['type']=4}, {['value']=1883,['offset']=1840,['type']=4}, {['value']=1883,['offset']=1848,['type']=4}, {['value']=1883,['offset']=1864,['type']=4}, {['value']=1883,['offset']=1968,['type']=4}, {['value']=1883,['offset']=2096,['type']=4}, {['value']=1883,['offset']=2116,['type']=4}, {['value']=1883,['offset']=2128,['type']=4}, {['value']=1883,['offset']=2136,['type']=4}, {['value']=1883,['offset']=2152,['type']=4}, {['value']=1883,['offset']=2176,['type']=4}, {['value']=1883,['offset']=2200,['type']=4}, {['value']=1883,['offset']=2224,['type']=4}, {['value']=1883,['offset']=2232,['type']=4}, {['value']=1883,['offset']=2336,['type']=4}, {['value']=1883,['offset']=2360,['type']=4}, {['value']=1883,['offset']=2384,['type']=4}, {['value']=1883,['offset']=2660,['type']=4}, {['value']=1883,['offset']=2684,['type']=4}, {['value']=1883,['offset']=2708,['type']=4}, {['value']=1883,['offset']=2732,['type']=4}, {['value']=1883,['offset']=2756,['type']=4}, {['value']=1883,['offset']=2776,['type']=4}, {['value']=1883,['offset']=2800,['type']=4}, {['value']=1883,['offset']=2824,['type']=4}, {['value']=1883,['offset']=2848,['type']=4}, {['value']=1883,['offset']=3320,['type']=4}, {['value']=1883,['offset']=3344,['type']=4}, {['value']=1883,['offset']=3572,['type']=4}, {['value']=1883,['offset']=3596,['type']=4}, {['value']=1883,['offset']=3620,['type']=4}, {['value']=1883,['offset']=3644,['type']=4}, {['value']=1883,['offset']=3668,['type']=4}, {['value']=1883,['offset']=3692,['type']=4}, {['value']=1883,['offset']=3716,['type']=4}, {['value']=1883,['offset']=6506980,['type']=4}, } xqmnb(qmnb,qmxg) 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影忍", "火箭筒无间隔", "子弹数量", "道具冷却", "开物加速", "后座", "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","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() BaseAddressD(0x18B7B1C,'-476053504') --public Boolean get_Disabled第三个 end function w3() BaseAddressY(0x1ad11c8,'-369098381') BaseAddressY(0x1ad11c8,'-382907408') 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() fastsearch({{8.0,16,32},{4,-4,4},{1,8,4},{8,12,4}},{{1,46,4}}) 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() BaseAddressD(0x1fd64dc,'-369096972') BaseAddressD(0x1fd80b4,'-368946868') gg.sleep(10) BaseAddressD(0x1fd80b4,'-382907280') BaseAddressD(0x1fd64dc,'-382908176') 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() gg.clearResults() gg.setRanges(32) gg.searchNumber("2.5F;0.98000001907F;-1,824,822,528D", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("2.5;0.98000001907", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("0", gg.TYPE_FLOAT) gg.toast("开启成功") gg.clearResults() end function w17() fastsearch({{0.05000000074505806,16,32},{1067869798,-52,4},{1067869798,-56,4},{2.5,320,16},},{{150,352,4},},"子弹数量") end function w18() field = classSearch("InGameStore", 0x10) editerObject(field, {0, 4, false}) gg.toast("道具冷却开启成功") end function w19() field = classSearch("TalentProperties", 0x20) editerObject(field, {3, 16, false}) field = classSearch("TalentProperties", 0x10) editerObject(field, {3, 16, false}) field = classSearch("TalentProperties", 0x28) editerObject(field, {3, 16, false}) field = classSearch("TalentProperties", 0x18) editerObject(field, {3, 16, false}) field = classSearch("TalentProperties", 0x8) editerObject(field, {3, 16, false}) end function w20() local a=ReadPointer('libil2cpp.so',{0xE83A4,0x5C,0x40,0x5C,0x50},5) gg.edits(a,{{0,16,0,true}}) gg.toast("武器后座开启成功") 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() BaseAddressY(0x21da744,'-352321597') 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 _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() menu1 = gg.multiChoice({ "武器无间隔", "武器锁子弹", "武器无后坐力", "武器秒换弹", "武器间隔", "️返回主页️", }, nil, os.date("其他功能")) if menu1 == nil then else if menu1[1] == true then d1() end if menu1[2] == true then d2() end if menu1[3] == true then d3() end if menu1[4] == true then d4() end if menu1[5] == true then d5() end if menu1[6] == true then HOME() end end GLWW=-1 end ------------------------------------------------------------------------------------------------------------- function d1() --Cb: libil2cpp.so:bss[1] + 0x18D1C(3B1D1C) -> + 0x44 -> + 0xA8 -> + 0x5C = 0.0, 0xA3F3F61C local t = {"libil2cpp.so", "Cd"} local tt = {0x3B1D1C, 0x44, 0xA8, 0x5C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) gg.toast("武器无间隔开启成功") end function d2() local t = {"libil2cpp.so", "Cd"} local tt = {0x3B1D1C, 0x44, 0xA8, 0x5C+0x1C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x3B1D1C, 0x44, 0xA8, 0x5C+0x1C+4} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) gg.toast("武器锁子弹开启成功") end function d3() local t = {"libil2cpp.so", "Cd"} local tt = {0x3B1D1C, 0x44, 0xA8, 0x5C+0x28} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) gg.toast("武器无后坐力开启成功") end function d4() local t = {"libil2cpp.so", "Cd"} local tt = {0x3B1D1C, 0x44, 0xA8, 0x5C+0x4} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) gg.toast("武器秒换弹开启成功") end function d5() local t = {"libil2cpp.so", "Cd"} local tt = {0x3B1D1C, 0x44, 0xA8, 0x5C+0x8} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 0.62, freeze = true}}) gg.toast("武器间隔开启成功") end _ENV['上分功能'] = function() UI = "f" local menu = gg.multiChoice({ "跳高移速", "移动开物[大厅]", "视野范围", "0概率触发开锁 ", "皮卡加速", "82锁赚钱", "82锁赚米", "手雷+医疗箱范围", "人物穿墙", "无限金币【游戏开】", "无视夹子", "免费购物", "人物爬墙", "返回主页", }, nil, os.date("打榜")) if menu then for i in pairs(menu) do _ENV[({"f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","f13","Main",})[i]]() end end end function f1() qmnb = { {["memory"] = 32}, {["name"] = "高跳移速"}, {["value"] = 4453159313486957773, ["type"] = 32}, {["lv"] = 900.0,["offset"] =-4, ["type"] = 16}, {["lv"] = 20.0,["offset"] =-8, ["type"] = 16}, } qmxg = { {["value"] = 7,["offset"] =0, ["type"] = 16}, {["value"] = 3.3,["offset"] =-16, ["type"] = 16}, } xqmnb(qmnb) end function f2() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x17C0AF0},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x17C0AF4},}) end function f3() qmnb = { {["memory"] = 32}, {["name"] = "视野范围"}, {["value"] = 40.0, ["type"] = 16}, {["lv"] = 12.0,["offset"] =0x1C, ["type"] = 16}, } qmxg = { {["value"] = 15,["offset"] =0x1C, ["type"] = 16}, } xqmnb(qmnb) end function f4() qmnb = { {["memory"] = 32}, {["name"] = "3.8倍移速"}, {["value"] = 2.79999995232, ["type"] = 16}, {["lv"] = 20.0,["offset"] =4, ["type"] = 16}, {["lv"] = 900.0,["offset"] =12, ["type"] = 16}, } qmxg = { {["value"] = 3.8,["offset"] =0, ["type"] = 16}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["name"] = "3倍开锁"}, {["value"] = 1.5, ["type"] = 16}, {["lv"] = 1.0,["offset"] =-4, ["type"] = 16}, {["lv"] = 2.0,["offset"] =4, ["type"] = 16}, {["lv"] = 2.5,["offset"] =8, ["type"] = 16}, } qmxg = { {["value"] = 3,["offset"] =-4, ["type"] = 16}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["name"] = "0概率触发开锁"}, {["value"] = 59.0, ["type"] = 16}, {["lv"] = 2.0,["offset"] =20, ["type"] = 16}, } qmxg = { {["value"] = 99999,["offset"] =20, ["type"] = 16}, } xqmnb(qmnb) end function f5() gg.clearResults() gg.setRanges(32) gg.searchNumber("4.59999990463;3.0;200.0;5.0;0.10000000149;0.80000001192::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4.6", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("7", gg.TYPE_FLOAT) gg.toast("皮卡加速") gg.clearResults() end function f6() 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 f7() qmnb = { {["memory"] = 32}, {["name"] = "82锁赚米"}, {["value"] = 4489188110532608000, ["type"] = 32}, {["lv"] = 256, ["offset"] = 20, ["type"] = 4}, {["lv"] = 100, ["offset"] = 24, ["type"] = 4}, } qmxg = { {["value"] = 1, ["offset"] = 88, ["type"] = 4, ["freeze"] = true}, {["value"] = 184319, ["offset"] = 92, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) end function f8() qmnb = { {["memory"] = 32}, {["name"] = "手雷范围"}, {["value"] = 1107558400, ["type"] = 32}, {["lv"] = 1045220557, ["offset"] = -116, ["type"] = 4}, {["lv"] = 1075838976, ["offset"] = -120, ["type"] = 4}, {["lv"] = 1073741824, ["offset"] = -124, ["type"] = 4}, } qmxg = { {["value"] = 4, ["offset"] = -124, ["type"] = 16}, {["value"] = 50, ["offset"] = 0, ["type"] = 16}, } xqmnb(qmnb) qmnb = { {["memory"] = 32}, {["name"] = "医疗箱范围"}, {["value"] = 1128792064, ["type"] = 32}, {["lv"] = 1067030938, ["offset"] = 8, ["type"] = 4}, } qmxg = { {["value"] = 1082130432, ["offset"] = 8, ["type"] = 4}, } xqmnb(qmnb) end function f9() 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 f10() gg.clearResults() gg.setRanges(32) gg.searchNumber("70F;444444", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("444444", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("999999999", gg.TYPE_DWORD) gg.toast("无限金币开启成功") gg.clearResults() end function f11() fastsearch({ {25.0, 16, 32}, {1.0, -4, 16}, {0.5, -8, 16}, {2.5, -12, 16} }, { {0.0, -4, 16, false}, },"无视夹子") end function f12() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-3.68935022e20;-2.02910561e20;-8.74019344e22;-7.4363437e19;-7.16031585e24;-1.30928164e25;-1.30683765e21;-9.40422939e22;-3.69511342e20;-8.26140755e19;-1.25733008e23;-3.83692277e21;-1.50171254e24;-1.50171254e24::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("-1.30928164e25;-1.30683765e21", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-5.90295867e21;-2.02910209e20", gg.TYPE_FLOAT) gg.toast("免费购物") gg.clearResults() end function f13() qmnb = { {memory = 16384}, {name = "爬墙"}, {value = -321.125, type = 16}, { lv = 0.949999988079071, offset = 140, type = 16 } } qmxg = { { value = -1, offset = 140, type = 16 } } xqmnb(qmnb) gg.clearResults() 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 _ENV['BUG'] = function() menu1 = gg.multiChoice({ "皮卡跳跃", "禁闭防烧", "解锁角色皮肤", "解锁道具皮肤", "解锁全模式", "追捕禁止拖人", "暗透", "去除迷雾", "移动开物", "上帝视角", "逃生一直跳", "屏蔽指针", "解锁锁位", "金币翻倍", "人物移速", "无视爆炸", "秒上白银", "", "", "", "", "", "", "", "", "️返回主页", }, nil, os.date("CS功能")) if menu1 == nil then else if menu1[1] == true then c1() end if menu1[2] == true then c2() end if menu1[3] == true then c3() end if menu1[4] == true then c4() end if menu1[5] == true then c5() end if menu1[6] == true then c6() end if menu1[7] == true then c7() end if menu1[8] == true then c8() end if menu1[9] == true then c9() end if menu1[10] == true then c10() end if menu1[11] == true then c11() end if menu1[12] == true then c12() end if menu1[13] == true then c13() end if menu1[14] == true then c14() end if menu1[15] == true then c15() end if menu1[16] == true then c16() end if menu1[17] == true then c17() end if menu1[18] == true then c18() end if menu1[19] == true then c19() end if menu1[20] == true then c20() end if menu1[21] == true then c21() end if menu1[22] == true then c22() end if menu1[23] == true then c53() end if menu1[24] == true then c24() end if menu1[25] == true then c25() end if menu1[26] == true then HOME() end end GLWW=-1 end ------------------------------------------------------------------------------------------------------------- function c1() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1C0A1FC setvalue(addr,-476053504,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1C0A1FC+4 setvalue(addr,-516948194,4) gg.toast("皮卡跳跃开启成功") end function c2() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1FBBF04 setvalue(addr,-476053504,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1FBBF04+4 setvalue(addr,-516948194,4) gg.toast("禁闭防烧开启成功") end function c3() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x172ACE4 setvalue(addr,-476053503,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x172ACE4+4 setvalue(addr,-516948194,4) gg.toast("解锁角色皮肤开启成功") end function c4() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x170940C setvalue(addr,-476053503,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x170940C+4 setvalue(addr,-516948194,4) gg.toast("解锁道具皮肤开启成功") end function c5() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x16CBA98 setvalue(addr,-476053503,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x16CBA98+4 setvalue(addr,-516948194,4) gg.toast("解锁全模式开启成功") end function c6() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1FC6374 setvalue(addr,-476053503,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1FC6374+4 setvalue(addr,-516948194,4) gg.toast("追捕禁止拖人开启成功") end function c7() local addr=gg.getRangesList("libil2cpp.so")[1].start+0xF3CA5C setvalue(addr,-481949320,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0xF3CA5C+4 setvalue(addr,-516948194,4) gg.toast("暗透开启成功") end function c8() --类名InGameFogOfWar --方法名UpdateFogOfWar local addr=gg.getRangesList("libil2cpp.so")[1].start+0xF3954C setvalue(addr,-476053504,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0xF3954C+4 setvalue(addr,-516948194,4) gg.toast("去除迷雾开启成功") end function c9() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1AD9150 setvalue(addr,-476053504,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1AD9150+4 setvalue(addr,-516948194,4) gg.toast("移动开物开启成功") end function c10() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x205956C setvalue(addr,-482082220,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x205956C+4 setvalue(addr,-516948194,4) gg.toast("上帝视角开启成功") end function c11() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1fbdadc setvalue(addr,-357610937,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1fbdadc+4 setvalue(addr,-516948194,4) gg.toast("逃生一直跳开启成功") end function c12() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x21F495C setvalue(addr,-352321597,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x21F495C+4 setvalue(addr,-516948194,4) gg.toast("屏蔽指针开启成功") end function c13() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x24ca554 setvalue(addr,-476053504,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x24ca554+4 setvalue(addr,-516948194,4) gg.toast("解锁锁位开启成功") end function c14() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x16cad74 setvalue(addr,-476052411,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x16cad74+4 setvalue(addr,-516948194,4) gg.toast("金币翻倍开启成功") end function c15() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1fc69cc setvalue(addr,-476052716,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1fc69cc+4 setvalue(addr,-516948194,4) gg.toast("人物移速开启成功") end function c16() local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1ad98fc setvalue(addr,-476053504,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1ad98fc+4 setvalue(addr,-516948194,4) gg.toast("无视爆炸开启成功") end function c17() local addr=gg.getRangesList("libil2cpp.so")[1].start+0xBD56E8 setvalue(addr,-482082000,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0xBD56E8+4 setvalue(addr,-516948194,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0xBE9A6C setvalue(addr,-369092481,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x16C7278 setvalue(addr,-476053496,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x16C7278+4 setvalue(addr,-516948194,4) local addr=gg.getRangesList("libil2cpp.so")[1].start+0x1FBB16C setvalue(addr,-369094356,4) gg.toast('秒上白银开启成功') end _ENV['其它'] = function() SN =gg.multiChoice({ "登录防闪",--1 "武器间隔",--2 "实体子弹",--3 "武器后座",--4 "刷新武器",--5 "防止闪退",--6 "退出脚本",--7 }, nil, "飞鸟") if SN == nil then else if SN[1] == true then b1() end if SN[2] == true then b2() end if SN[3] == true then b3() end if SN[4] == true then b4() end if SN[5] == true then b5() end if SN[6] == true then gg.clearList() end if SN[7] == true then Exit() end end XGCK = -1 end function b1() fastsearch({{778923875,4,8},{8277688,-28,4}},{{1,0,4,false}},"游戏防闪") end function b2() fastsearch({{1065017672,4,32},{0,-8,4},{1075838976,-4,4}},{{0,-8,4,true}}) end function b3() fastsearch({{1065017672,4,32},{1075838976,-4,4},{1,28,4}},{{-1,20,4,true},{0,24,4,true},{550,28,4,true}}) end function b4() fastsearch({{1065017672,4,32},{1.0,-20,16},{1075838976,-4,4}},{{0,-20,16,true}}) end function b5() fastsearch({{1065017672,4,32},{1075838976,-4,4},{0,44,4}},{{1,44,4}}) end function Exit() os.exit() end _ENV['自调'] = function() SN =gg.multiChoice({ "迫击炮射程",--1 "腕炮范围",--2 "医疗箱范围",--3 "疾跑buff",--4 "医疗改物",--5 "人物移速",--6 "退出脚本",--7 }, nil, "自调") if SN == nil then else if SN[1] == true then b1() end if SN[2] == true then b2() end if SN[3] == true then b3() end if SN[4] == true then b4() end if SN[5] == true then b5() end if SN[6] == true then gg.clearList() end if SN[7] == true then Exit() end end XGCK = -1 end function b1() 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 b2() yw=gg.prompt({"输入腕炮范围"},{[1]=""}) fastsearch({ {5,16,32}, {1,4,16}, {0,8,16}}, {{yw[1],4,16, false}}) end function b3() ty=gg.prompt({"范围"},{},{"number"}) qmnb = { {["memory"] = 32}, {["name"] ="医疗箱范围"}, {["value"] =4608083138725491507, ["type"] = 32}, {["lv"] = 3689348813882916864, ["offset"] = -4, ["type"] = 32}, } qmxg = { {["value"] =ty[1], ["offset"] = 0, ["type"] = 64}, } xqmnb(qmnb) end function b4() zll=[[ 100 暴怒 101 夹子 102 跳杆 103 疾跑 105 手雷 107 追捕无敌 108 针 109 学妹 110 学妹2 111 持续暴走 112 变羊术 113 雷达 114 天降正义 300 酒桶 201 毒液 202 加速 203 狗 204 魔法墙正面 205 魔法墙负面 206 护盾 300 boss护盾 301 吸血 302 bodd眩晕 400 机器人 401 学妹3 402 幽灵 403 缴械 404 天降正义2 405 减速 501 水 502 应力场 505 超级加速 506 加速 508 减速 509 boss攻速 510 boss吸血 511 boss盾 512 解控 520 梦魇泡泡 521 梦魇 522 梦魇无敌 528 缴械 529 缈 530 缈2 531 缈3 532 缈4 533 缈和圣女 534 圣女2 535 圣女3 537 盾位 538 盾位2 539 盾位3 540 盾位4 542 狮子吸血 543 泷 544 泷2 543 泷 547 时光机 548 狮子视野 549 狮子冷却 550 毒 551 命石 552 命石2 553 命石3 554 命石4 557 减血 558 眩晕 559 无敌 560 永久加速 561 超级加速 564 团子 566 团子2 567 机器人 568 恐龙 570 奥博 571 眩晕 572 护盾 573 疾跑 575 狮子视野 577 指绘师 578 指绘师2 70110 全体护盾 70109 竞速掉血 70108 - 70103 恐龙护盾 70102 竞速减速 70101 竞速夹子 10509 红方旗子 10508 蓝方旗子 10203 减血 10600 电球枪buff 11201 针 10201 毒 10103 狂暴 ]] tj=gg.prompt({""..zll..""},{},{"number"}) local qmnb= { {['memory']=32}, {['name']='疾跑buff'}, {['value']=26112, ['type']=2}, {['lv']=13312,['offset']=-272, ['type']=2}, {['lv']=26880,['offset']=20, ['type']=2}, } local qmxg= { {['value']=tj[1],['offset']=-94,['type']=2}, } xqmnb(qmnb,qmxg) end function b5() a=gg.prompt( {"道具卡:\n\n200 疾跑\n201 跳高\n111 皮卡\n300 侦查眼\n301 阻挡箱\n400 手雷\n401 医疗箱\n500 护盾\n700 狗\n701 针\n800 酒桶\n801 飞爪\n900 传送门\n901 自走球\n1000 毒液\n1001 滑板\n1002 魔法墙\n1003 引力场\n1004 治疗球\n1005 气垫\n1006 导弹\n1007 追踪雷\n1008 震荡波\n1009 小灰机\n1010 时光机\n1011 跳杆\n1012 拳套\n1016 吼吼号"}, {[1] = "401"} ,{"number"} ) if a==nil then Main() end fastsearch({{51252,4,32},{808529509,-4,4},},{{a[1]*256,8,4,false}},"医疗改物") end function b6() 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 Exit() os.exit() end _ENV['防封'] = function() SN =gg.multiChoice({ "大厅1",--1 "登录1",--2 "登录2",--3 "大厅2",--4 "登录3",--5 "登录4",--6 "退出脚本",--7 }, nil, "防") if SN == nil then else if SN[1] == true then b1() end if SN[2] == true then b2() end if SN[3] == true then b3() end if SN[4] == true then b4() end if SN[5] == true then b5() end if SN[6] == true then gg.clearList() end if SN[7] == true then Exit() end end XGCK = -1 end function b1() gg.alert("必须在大厅开启") gg.toast("获取文件中") gg.searchNumber("131,072;65536;65536;917504;131,072", gg["TYPE_DWORD"], false, gg["SIGN_EQUAL"], 0, -1) gg.setRanges(32) gg.sleep(1500) gg.toast("获取成功,文件名为game_log.txt") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/VirtualUniqueDeviceID.txt") gg.sleep(800) gg.toast("删除封号残留文件成功") gg.sleep(500) gg.toast("获取追封文件中") gg.searchNumber("131,072;65536;65536;917504;131,072", gg["TYPE_DWORD"], false, gg["SIGN_EQUAL"], 0, -1) gg.setRanges(32) os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399") gg.toast("获取成功,已删除追封文件") gg.clearResults() gg.setRanges(32) gg.searchNumber("131,072;65536;65536;917504;131,072", gg["TYPE_DWORD"], false, gg["SIGN_EQUAL"], 0, -1) gg.searchNumber("65536", gg["TYPE_DWORD"], false, gg["SIGN_EQUAL"], 0, -1) jg=gg.getResults(100) sl=gg.getResultCount() if sl>100 then sl=100 end 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("清理防追封成功") toMusic("开启成功") gg.alert('开启成功') end function b2() qmnb = { {["memory"] = 16384}, {["name"] = "去除ace检测"}, {["value"] = 0.00048828148, ["type"]=16}, {["lv"] = 184549345,["offset"]=-608, ["type"]=4}, } qmxg = { {["value"] = -476053504, ["offset"] = 37613628, ["type"] = 4, ["freeze"] = true}, {["value"] = -516948194, ["offset"] = 37613632, ["type"] = 4, ["freeze"] = true}, {["value"] = -476053504, ["offset"] = 37610268, ["type"] = 4, ["freeze"] = true}, {["value"] = -516948194, ["offset"] = 37610272, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) toMusic("开启成功") gg.alert('开启成功') end function b3() fastsearch({{778923875,4,8},{1919508834,4,4}},{{999999,0,4,false}},'登录防闪开启成功') end function b4() gg.clearResults() gg.setRanges(gg.REGION_C_ALLOC) gg.searchNumber('311,040',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.searchNumber('311,040',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1) gg.getResults(150) gg.editAll('839123713',gg.TYPE_DWORD) gg.toast("大厅防封") toMusic("开启成功") gg.alert('开启成功') end function b5() os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.m4399/files/tombstone_02") --删除4399版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.nearme.gamecenter/files/tombstone_02") --删除OPPO版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz/files/tombstone_02") --删除好游快爆版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.huawei/files/tombstone_02") --删除华为版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.mi/files/tombstone_02") --删除小米版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.vivo/files/tombstone_02") --删除vivo版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.uc/files/tombstone_02") --删除九游版本日志 os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.tencent.tmgp.bairimeng.dmmdzz/files/tombstone_02") --删除应用宝版本日志 os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/game_log.txt") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/tombstone_00") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/tombstone_01") os.remove("storage/emulated/0/Android/data/com.bairimeng.dmmdzz.meta/files/tombstone_02") --删除233版本日志 os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/game_log.txt") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/tombstone_00") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/tombstone_01") os.remove("/storage/emulated/0/Android/data/com.bairimeng.dmmdzz.qihoo/files/tombstone_02") --删除360版本日志 os.remove("/storage/emulated/0/Android/data/com.nxkj.gybb13/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/game_log.txt") os.remove("/storage/emulated/0/Android/data/com.nxkj.gybb13/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/tombstone_00") os.remove("/storage/emulated/0/Android/data/com.nxkj.gybb13/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/tombstone_01") os.remove("/storage/emulated/0/Android/data/com.bfire.da.nui/gameplugins/com.bairimeng.dmmdzz.m7723.bazhang/files/game_log.txt") gg.alert("侵入成功,祝你稳定奔放") end function b6() local addr = readPointer("libtersafe2.so:bss", {14280}, 1) gg.edits(addr, {{-1, 4, 0, true}}) end function Exit() os.exit() 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('逸泽提示:您已退出本辅助群号829396320') 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('刷武器'), 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('上分功能'), 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('BUG'), newSwitchLayout('其它'), newSwitchLayout('音乐'), newSwitchLayout('防封'), } }) end }) -- 运行悬浮窗 floatingWindowManager:run()