draw.text(' 123', 193,300,200) draw.text('', 30 ,550) draw.setColor('#FF0000FF') draw.text('顶尖科技', 170,355,250 ) draw.setColor('#FF0000FF') draw.circle(265, 300, 130)--圆1 draw.circle(265, 300, 170)--圆2 jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({0x33000000,0x33000000}) jianbian6:setStroke(4,"0xdd282F4B")--边框宽度和颜色 jianbian7 = luajava.new(GradientDrawable) jianbian7:setCornerRadius(40) jianbian7:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian7:setColors({0x6600FF76,0x9900A5FF}) jianbian7:setStroke(8,"0xdd282F4B") jianbian8 = luajava.new(GradientDrawable) jianbian8:setCornerRadius(40) jianbian8:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian8:setColors({0x66FF2C22,0x998600FF}) jianbian8:setStroke(8,"0xdd282F4B") jianbian9 = luajava.new(GradientDrawable) jianbian9:setCornerRadius(4) jianbian9:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian9:setColors({0xddC70100,0x99000000}) jianbian9:setStroke(4,"0x44000000") function balert(bltxt,bltxt1,bltxt2) result=0 if not bltxt then bltxt='这里写正文\n测试\n测试' end if not bltxt1 then bltxt1='取消' end if not bltxt2 then bltxt2='确定' end bltxt=tostring(bltxt) bltxt1=tostring(bltxt1) bltxt2=tostring(bltxt2) local dialog = luajava.new(AlertDialog.Builder, app.context) local block = luajava.getBlock() local result local function exit() block('end') end layoutabc=luajava.loadlayout({ScrollView, {LinearLayout, background="#00000000", orientation="vertical", layout_width="match_parent", layout_height="match_parent", gravity = 'center', {ScrollView, gravity="center", layout_height="230dp", layout_width="fill_parent", padding="25dp", {LinearLayout, layout_marginTop="20dp", gravity="center", layout_height="220dp", layout_width="fill_parent", padding="25dp", {TextView, id = luajava.newId('弹窗文字'), textSize="18sp", text = bltxt, layout_height="wrap_content", layout_width="fill_parent", layout_gravity="center", gravity="center", },}}, {LinearLayout, gravity="center", layout_height="90dp", layout_width="fill_parent", orientation="horizontal", {Button, id="balt1", gravity="center", background=jianbian7, text=bltxt1, layout_height="40dp", layout_width="wrap_content", layout_marginRight="70dp", }, {Button, id="balt2", gravity="center", background=jianbian8, text=bltxt2, layout_height="40dp", layout_width="wrap_content", layout_marginLeft="70dp", } }}}) balt1.onClick = function() result = 1 dialog:dismiss() exit() end balt2.onClick = function() result = 2 dialog:dismiss() exit() end dialog:setView(layoutabc) dialog:setOnDismissListener(luajava.createProxy('android.content.DialogInterface$OnDismissListener', { onDismiss = function(view) exit() end})) local function invoke() dialog = dialog:create() local window = dialog:getWindow() window:setType(Build.VERSION.SDK_INT >= 26 and 2038 or 2002) window:setBackgroundDrawable(jianbian6) window:getDecorView():setPadding(0,0,0,0) dialog:show() --window:setLayout(1400,1000) YoYoImpl:with("FadeIn"):duration(300):playOn(layoutabc) end luajava.handlerPost(invoke) block('join') return result end function 花神提示(text) text = tostring(text) local block = luajava.getBlock() local layout = luajava.loadlayout({ LinearLayout, background=jianbian7, gravity='center', layout_height='match_parent', layout_width='match_parent', layout_wight='1', { TextView, id = luajava.newId('TextView'), text = text, textSize = '18sp', textColor = "#ffffffff", margins = {'20dp', '10dp', '20dp', '10dp'} } }) local function invoke() if toaa==nil then toaa = Toast:makeText(app.context, '', 1) end toaa:setView(layout) toaa:show() end luajava.handlerPost(invoke) end ----------------------------------------------------------------------------------------- function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/storage/emulated/0/ml/配置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep --if gg.isHTTPdump()==true and panduan("/storage/emulated/0/ml/配置文件/vpn.txt") == false then gg.alert("\n抓包?") os.exit() end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/storage/emulated/0/ml/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/storage/emulated/0/ml/配置文件/"..lujing) end function checkimg(tmp) if panduan("/sdcard/ml/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download(""..tmp,"/sdcard/ml/图片/"..tmp) end end -----------功能放上面或者放哪都行只要不在ml.menu后面 layoutcolor = "#aa000000" ml = {} local ml = ml local android = import('android.*') function write(fileName, content) --f = assert( io.open( fileName, 'w')) f:write( content ) f:close() if file.write(fileName, content) == false then gg.alert("请给框架和修改器 文件储存权限\n否则无法正常运行") os.exit() end end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function pdcf(lujing) rec = "/sdcard/ml/配置文件/"..lujing fille,err = io.open(rec) if fille == nil then return false else return true end end sleep = gg.sleep --if gg.isHTTPdump()==true and panduan("/sdcard/ml/配置文件/vpn.txt") == false then gg.alert("\n抓包?") os.exit() end function read(fileName) f = assert(io.open(fileName, 'r')) content = f:read("*all") f:close() return content end function wtcf(lujing,neirong) write("/sdcard/ml/配置文件/"..lujing,neirong) end function rdcf(lujing) return read("/sdcard/ml/配置文件/"..lujing) end function pmusic(x) if audiokg == "开" then tmp1 = 0 gg.playMusic(x) tmp1 = 1 end end if pdcf("audio") ~= true then wtcf("audio","开") end audiokg = rdcf("audio") function camusic(ress) tmp1 = 0 if audiokg == "开" then if panduan("/sdcard/ml/音频/"..ress) == true then pmusic("/sdcard/ml/音频/"..ress) tmp1 = 1 else download(""..ress ,"/sdcard/ml/音频/"..ress) pmusic("/sdcard/ml/音频/"..ress) tmp1 = 1 end end end 开 = "开" 关 = "关" function checkimg(tmp) if panduan("/sdcard/ml/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") download(""..tmp,"/sdcard/ml/图片/"..tmp) end end file.getdirs("/sdcard/ml/状态读取/") ckimg = { "imgui", "pink", "blue", "check2", "check1", "exit", "qq2", "ditf3", "checkon2", "checkof", "qiufeng", } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) end gg.toast("资源下载完毕") local context = app.context local window = context:getSystemService("window") -- 获取窗口管理器 function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams.gravity = Gravity.TOP|Gravity.RIGHT -- 重力设置 layoutParams.width = LayoutParams.WRAP_CONTENT -- 布局宽度 layoutParams.height = LayoutParams.WRAP_CONTENT -- 布局高度 return layoutParams 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---久久演戏内置是由SL制造 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==Tp then return v.start end end end function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(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 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 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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "宝~已修改" .. #Table .. "个值,祝您游戏愉快~") end --仿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 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宝~已修改" .. xgsl .. "\n个值,祝您游戏愉快~") else gg.toast(qmnb[2]["name"] .. "\n宝~修改失败,请重新尝试~") 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("\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 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 "") .. "宝~已修改成功,祝您游戏愉快~\n共搜索" .. #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 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 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 X(Ranges,Search,Write,Type,Name) gg.setRanges(Ranges) 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 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) gg.toast("提示:".."\n"..Name.."\n".."宝~已修改成功,祝您游戏愉快~") else gg.toast("提示:".."\n"..Name.."\n".."宝~修改失败,请重新尝试~",false) return false end else gg.toast("提示:".."\n"..Name.."\n".."宝~修改失败,请重新尝试~") return false end end ---------------------------------------------------------------------------------------------------- function nh(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 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 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 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 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(0x83A2A3F) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address print(string.char(231,190,164,58).._Q) end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end local il2cppStart = 0 for k, v in pairs(gg.getRangesList('libil2cpp.so$')) do if (v.state == 'Xa') then il2cppStart = v['start'] break end 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 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.alert("请进入游戏再开启此功能!") 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 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 ------------------------------------------------------------------------------------------------------------- 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 ------------------------------------------------------------------------------------------------------------- --偏移配置 local json =json local g = {} g.file = gg.getFile() g.sel = nil gqlb={"请先搜索歌曲",} idb={"1010"} SN,gc=1,nil g.config = gg.getFile():gsub("%lua$", "").."cfg" function bei() g.data = loadfile("-- WSG PRO 1.0.9(109)\n"..g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"请输入歌曲名","10"} end end bei() --搜索歌曲 function start(name,sl) fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl) return fw end --歌词 --播放音乐 function play(id,name) gg.toast("正在播放音乐:"..name,true) gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") end --停止播放 function stop() gg.toast("正在停止音乐") for i=1,100 do gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end end ---- function Play(gqlb,idb) SN = gg.choice(gqlb,nil,ts) if SN == nil then XGCK =-1 else sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN]) if sn == nil then end if sn == 1 then play(idb[SN],gqlb[SN]) end if sn == 2 then local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3" io.open(XEY1,"w"):write(XEY) gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end function zjson(jsonr) local str = jsonr -- 匹配Json Key的正则表达式 local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str local res = load(data)() return res end function json(con) res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id end --print(idb) end function YY998() Obtain=gg.makeRequest("https://api.uomg.com/api/rand.music?sort=热歌榜&format=json").content muchen=Obtain:match('url":"(.-)","picurl') gg.playMusic(muchen) end function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do while aRgFgbYKu5mhyvGS < os.time() do gg.alert('脚本已过期') os.exit() end while aejJdBsorLDUTkBR ~= '0ae69265fa4ef6d6e4f0814a1f292421' do os.exit() end while checktrue ~= (imei .. aPKTWzxQiHE1Xh3O.user_time .. api_time..we591cf8d0c789cecbfa46c08d34a6210_19347..aFnQNhprKTUiEwNn) do os.exit() end while aho5LwvHAlW9pwlh < os.time() do gg.alert('脚本已过期') os.exit() end while aHWlmLOtlwHiFBQV ~= '0ae69265fa4ef6d6e4f0814a1f292421' do os.exit() end while checktrue ~= (imei .. adwDqpm6oxBMp2PP.user_time .. api_time..we591cf8d0c789cecbfa46c08d34a6210_19347..aiDZp8XxNmclDfR8) do os.exit() end while auxoHD2yGDHopaTH < os.time() do gg.alert('脚本已过期') os.exit() end while aw4tZkp9CvHwnV7m ~= '0ae69265fa4ef6d6e4f0814a1f292421' do os.exit() end while checktrue ~= (imei .. a4jkQ2AGMj04HjE8.user_time .. api_time..we591cf8d0c789cecbfa46c08d34a6210_19347..az95CUpeiqcrF8DT) 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"] 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 while aRgFgbYKu5mhyvGS < os.time() do gg.alert('脚本已过期') os.exit() end while aejJdBsorLDUTkBR ~= '0ae69265fa4ef6d6e4f0814a1f292421' do os.exit() end while checktrue ~= (imei .. aPKTWzxQiHE1Xh3O.user_time .. api_time..we591cf8d0c789cecbfa46c08d34a6210_19347..aFnQNhprKTUiEwNn) do os.exit() end while aho5LwvHAlW9pwlh < os.time() do gg.alert('脚本已过期') os.exit() end while aHWlmLOtlwHiFBQV ~= '0ae69265fa4ef6d6e4f0814a1f292421' do os.exit() end while checktrue ~= (imei .. adwDqpm6oxBMp2PP.user_time .. api_time..we591cf8d0c789cecbfa46c08d34a6210_19347..aiDZp8XxNmclDfR8) do os.exit() end while auxoHD2yGDHopaTH < os.time() do gg.alert('脚本已过期') os.exit() end while aw4tZkp9CvHwnV7m ~= '0ae69265fa4ef6d6e4f0814a1f292421' do os.exit() end while checktrue ~= (imei .. a4jkQ2AGMj04HjE8.user_time .. api_time..we591cf8d0c789cecbfa46c08d34a6210_19347..az95CUpeiqcrF8DT) do os.exit() end 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. 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 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(" ") 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 ----------------------------------------------------------------------------- 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 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 readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true] = 32, [false] = 4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address = addr, flags = va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr + v[3], value = v[1], flags = v[2], freeze = v[4]} if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) gg.toast((name or "") .. "宝~已修改成功,祝您游戏愉快~ 共修改" .. #Table .. "个值") end ----------------------------------------------------------------------------- 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 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 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 kq1_offset(addr, tablex, tt) local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -516948194}}) end end gg.toast((tt or "") .. "宝~已修改成功,祝您游戏愉快~") end function nn_offset(addr, tablex, tt) local g=os.clock() 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 gb1_offset(addr, tablex, tt) local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030832}}) end end gg.toast((tt or "") .. "宝~已修改成功,祝您游戏愉快~") end function gb2_offset(addr, tablex, tt) local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030820}}) end end gg.toast((tt or "") .. "宝~已修改成功,祝您游戏愉快~") end function gb3_offset(addr, tablex, tt) local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030842}}) end end gg.toast((tt or "") .. "宝~已修改成功,祝您游戏愉快~") end function gb4_offset(addr, tablex, tt) local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030840}}) end end gg.toast((tt or "") .. "宝~已修改成功,祝您游戏愉快~") end function gb4_offset(addr, tablex, tt) local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030824}}) 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 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 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 kq1_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -516948194}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function kqorgb_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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 "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb1_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030832}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb2_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030820}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb3_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030842}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb4_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030840}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb5_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030824}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function getso(So_name) return gg.getRangesList(So_name)[1].start end cnm={"别拿曾经讲故事谁也不是曾经的那个自己.","每到晚上睡不着的时候我总喜欢看快手刷文案总会反反复复怀疑.","没说出口的话乱七八糟的心情和凌晨的心事都藏在我的心底.","我没有忘记谁只是在我最难的时候也没有人记住过我.","后来熬夜成瘾也习惯了没人关心我没有那么坚强.","其实那边风景也不错可惜我回不了头了.","苦而不严喜而不语或许才是生活中最好的状况.","既然幸福不了 那就做幸福的旁观者咯.","永远不成熟但永远真诚的做自己.","世界之大为何我们相遇.","花开花落缘聚缘散谁又能记得谁几年.","所有的承诺最后变成了一句对不起.","不要赌天意不要猜人心天意赌不起人心猜不透.","要开始好好努力啦.","你是朵花才会觉得春天离开你如果你是春天就永远有花."} function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end function gotoPointer(addr) return gg.getValues({{address=addr, flags=4}})[1].value & 0xFFFFFFFF end a = function(Address, length, useChineseLoad) local jump = 0 local chars, char = {}, { address = Address, flags = gg.TYPE_BYTE } if not length then repeat local _nextchar, _2nextchar _char = gg.getValues({char})[1].value if (useChineseLoad) then if (_char > -28 and _char < -23) then _nextchar = gg.getValues({{address = char.address + 0x1, flags=gg.TYPE_BYTE}})[1].value if (_nextchar > -128 and _nextchar < -65) then _2nextchar = gg.getValues({{address = char.address + 0x2, flags=gg.TYPE_BYTE}})[1].value jump = 3 chars[#chars + 1] = string.char(_char & 0xFF, _nextchar & 0xFF, _2nextchar & 0xFF) end end end if (jump > 0) then jump = jump - 1 goto continue end chars[#chars + 1] = string.char(_char & 0xFF) ::continue:: char.address = char.address + 0x1 until _char == 0 return table.concat(chars, "", 1, #chars - 1), char.address else for i = 1, length do local _nextchar, _2nextchar local _char = gg.getValues({char})[1].value if (useChineseLoad) then if (_char > -28 and _char < -23) then _nextchar = gg.getValues({address = char.address + 0x1, flags=gg.TYPE_BYTE}) if (_nextchar > -128 and _nextchar < -65) then _2nextchar = gg.getValues({address = char.address + 0x2, flags=gg.TYPE_BYTE}) jump = 3 chars[i] = utf8.char(_char & 0xFF, _nextchar & 0xFF, _2nextchar & 0xFF) end end end if (jump > 0) then jump = jump - 1 goto continue end chars[i] = utf8.char(_char & 0xFF) ::continue:: char.address = char.address + 0x1 end return table.concat(chars), char.address end end function classSearch(className, offset) gg.clearResults() gg.setRanges(gg.REGION_OTHER | gg.REGION_C_ALLOC) gg.searchNumber("Q 00 '" .. className .. "' 00", gg.TYPE_BYTE) if (gg.getResultsCount() == 0) then print('没有发现类\n请确认是否初始化') end gg.searchPointer(0) gg.setRanges(32) local object = {} for k, v in pairs(gg.getResults(gg.getResultsCount())) do if (a(gotoPointer(gotoPointer(v.address - 8))):match(string.char(46, 100, 108, 108))) then v.address = v.address - 8 object[1] = v gg.loadResults(object) break end end gg.searchPointer(0) gg.searchPointer(0) local item = gg.getResults(gg.getResultsCount()) for k, v in pairs(item) do v.address = gotoPointer(v.address) + offset end return item end function editerObject(valObject, editerVal) for k, v in pairs(valObject) do v.value = editerVal[1] v.flags = editerVal[2] v.freeze = editerVal[3] end gg.setValues(valObject) gg.toast('开启成功\n共修改: ' .. gg.getResultsCount() .. '个结果') gg.clearResults() end function LL(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 slctb = luajava.loadlayout { GradientDrawable, color = "#bb000000", cornerRadius = 12 } slcta = luajava.loadlayout { GradientDrawable, color = "#ff333e", cornerRadius = 12 } slctc = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 8 } slctd = luajava.loadlayout { GradientDrawable, color = "#55ffffff", cornerRadius = 8 } slcte = luajava.loadlayout { GradientDrawable, color = "#11ffffff", cornerRadius = 12 } slctf = luajava.loadlayout { GradientDrawable, color = "#aa272327", cornerRadius = 12 } function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#bbffffff", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#feff333e", cornerRadius = 12 }) -- 没点击的背景 return selector end function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctb) -- 没点击的背景 return selector end function getSelector6() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#bbffffff", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#ff333e", cornerRadius = 12 }) -- 没点击的背景 return selector end function getSelector7() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#000000", cornerRadius = 12 }) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, luajava.loadlayout { GradientDrawable, color = "#ff333e", cornerRadius = 12 }) -- 没点击的背景 return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) -- 点击时候的背景 selector:addState({ -android.R.attr.state_pressed }, slctc) -- 没点击的背景 return selector end jianbian = luajava.new(GradientDrawable) jianbian:setCornerRadius(30) jianbian:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian2 = luajava.new(GradientDrawable) jianbian2:setCornerRadius(30) jianbian2:setGradientType(GradientDrawable.LINEAR_GRADIENT) local isswitch YoYoImpl = luajava.getYoYoImpl() ml.menu = function(stext,sview) if isswitch then return false end isswitch = true cebian = luajava.loadlayout({ LinearLayout, id = "侧边", visibility = "gone", layout_height = "200dp", layout_width = "88dp", orientation = "vertical", background = { GradientDrawable, color = "#00ffffff", cornerRadius = 10 }, { LinearLayout, id = "jm1", layout_height = "28dp", layout_width = "88dp", gravity = "center", layout_marginTop = "2dp", layout_marginBottom = "2dp", { TextView, text = stab[1], gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "jm2", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = getSelector(), { TextView, text = stab[2], layout_height = "28dp", layout_width = "88dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "jm3", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", background = getSelector(), onClick = function() end, { TextView, text = stab[3], layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "jm4", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", onClick = function() end, background = getSelector(), { TextView, text = stab[4], layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }},{ LinearLayout, id = "jm5", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "4dp", layout_marginBottom = "4dp", onClick = function() end, background = getSelector(), { TextView, text = stab[5], layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, { LinearLayout, id = "exit", gravity = "center", layout_height = "28dp", layout_width = "88dp", layout_marginTop = "2dp", layout_marginBottom = "0dp", onClick = function() end, background = getSelector(), { TextView, text = "退出/Exit", layout_height = "28dp", layout_width = "68dp", gravity = "center", layout_marginLeft = "10dp", layout_marginRight = "10dp", }}, }) layout1 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout1", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layouta", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), gravity = "top", layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout2 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout2", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutb", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout3 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout3", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutc", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout4 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout4", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoutd", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) layout5 = luajava.loadlayout({ ScrollView, fillViewport = "true", padding = "7dp", id = "layout5", visibility = "gone", layout_width = "230dp", layout_height = "250dp", orientation = "horizontal", { LinearLayout, id = "layoute", background = luajava.loadlayout({ GradientDrawable, color = layoutcolor, cornerRadius = 20 }), layout_width = "210dp", orientation = "vertical", gravity = "center_horizontal", } }) title = luajava.loadlayout({ LinearLayout, layout_width = "wrap_content", layout_height = "48dp", id = "title", --visibility = "gone", gravity = "center", { TextView, id = "titlet", layout_width = "90dp", layout_height = "wrap_content", text = stitle, background = "", textColor = "#ff333e", gravity = "center", textSize = "13sp", }}) ckou = luajava.loadlayout({ LinearLayout, id = "chuangk", visibility = "visible", layout_width = "wrap_content", layout_height = "match_parent", orientation = "horizontal", background = { GradientDrawable, color = "#00272327", cornerRadius = 10 }, layout1,layout2,layout3,layout4,layout5, { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation = "vertical", { LinearLayout, layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", background = { GradientDrawable, color = "#aa000000", cornerRadius = 16 }, gravity = "center_vertical", { LinearLayout, id = "control", layout_width = "wrap_content", layout_height = "wrap_content", layout_marginLeft = "0dp", layout_marginTop = "2dp", layout_marginBottom = "2dp", gravity = "center", title, }, }, cebian, } }) floatWindow = { LinearLayout, id = "motion", layout_width = "230dp", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", ckou } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for i = 1,#sview[1] do layouta:addView(sview[1][i]) end for i = 1,#sview[2] do layoutb:addView(sview[2][i]) end for i = 1,#sview[3] do layoutc:addView(sview[3][i]) end for i = 1,#sview[4] do layoutd:addView(sview[4][i]) end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = function() 隐藏() end jm1.onClick = function() luajava.newThread(function() end):start() 切换(1) end jm2.onClick = function() 切换(2) end jm3.onClick = function() 切换(3) end jm4.onClick = function() 切换(4) end jm5.onClick = function() 切换(5) end exit.onClick = function() for k,v in pairs(floattable) do if v~=0 then ml.rmvfloat(k) floattable[k]=0 end end gg.toast("悬浮窗已退出") for k,v in pairs(titletable) do if v~=0 then ml.rmvtitle(k) titletable[k]=0 end end window:removeView(floatWindow) luajava.setFloatingWindowHide(false) luajava.newThread(function() os.exit() end):start() bloc("end") end local isMove hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) - (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end motion.onTouch = hanshu control.onTouch = hanshu exit.onTouch = hanshu jm1.onTouch = hanshu jm2.onTouch = hanshu jm3.onTouch = hanshu jm4.onTouch = hanshu jm5.onTouch = hanshu end invoke(swib1,swib2) jm1:setBackground(slcta) gg.setVisible(false) luajava.setFloatingWindowHide(true) runnable = luajava.getRunnable(function() layoute:addView(wyylog,getLayoutParams2()) end) handler = luajava.getHandler() handler:post(runnable) end corbk = true 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() if 当前ui == 1 then jm1:setBackground(slcta) jm2:setBackground(getSelector()) jm3:setBackground(getSelector()) jm4:setBackground(getSelector()) jm5:setBackground(getSelector()) layout1:setVisibility(View.VISIBLE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) elseif 当前ui == 2 then jm1:setBackground(getSelector()) jm2:setBackground(slcta) jm3:setBackground(getSelector()) jm4:setBackground(getSelector()) jm5:setBackground(getSelector()) layout1:setVisibility(View.GONE) layout2:setVisibility(View.VISIBLE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) elseif 当前ui == 3 then jm1:setBackground(getSelector()) jm2:setBackground(getSelector()) jm3:setBackground(slcta) jm4:setBackground(getSelector()) jm5:setBackground(getSelector()) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.VISIBLE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) elseif 当前ui == 4 then jm1:setBackground(getSelector()) jm2:setBackground(getSelector()) jm3:setBackground(getSelector()) jm4:setBackground(slcta) jm5:setBackground(getSelector()) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.VISIBLE) layout5:setVisibility(View.GONE) elseif 当前ui == 5 then jm1:setBackground(getSelector()) jm2:setBackground(getSelector()) jm3:setBackground(getSelector()) jm4:setBackground(getSelector()) jm5:setBackground(slcta) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.VISIBLE) end end) luajava.runUiThread(function() if 当前ui == 1 then layout1:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout1) elseif 当前ui == 2 then layout2:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout2) elseif 当前ui == 3 then layout3:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout3) elseif 当前ui == 4 then layout4:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout4) elseif 当前ui == 5 then layout5:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(200):playOn(layout5) end --floatWindow:setBackground(beij) end) end 显示 = 0 beij = luajava.loadlayout({ GradientDrawable, color = "#99000000", cornerRadius = 10 }) beij2 = luajava.loadlayout({ GradientDrawable, color = "#00272327", cornerRadius = 10 }) function getcolor(cl) cl[1] = tonumber(math.ceil(cl[1]*2.6,0,5)) if cl[1] > 255 then cl[1] = "0xff" else cl[1] = "0x"..string.format("%x",cl[1]) end for i = 1,3 do cl[i+1] = string.format("%x",cl[i+1]) if string.len(cl[i+1]) == 1 then cl[i+1] = "0"..cl[i+1] end end cl = cl[1]..cl[2]..cl[3]..cl[4] return cl end function getrgb(cl) if string.sub(cl,1,1) == "#" then cl = "0x"..string.sub(cl,2,-1) end cl = { tonumber(string.sub(cl,0,4)),tonumber("0x"..string.sub(cl,5,6)),tonumber("0x"..string.sub(cl,7,8))} return cl end function 隐藏() luajava.runUiThread(function() --control:setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/imgui")) if tonumber(tostring(cebian:getVisibility())) == 8.0 then --chuangk:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) --title:setVisibility(View.VISIBLE) luajava.runUiThread(function() mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) end) YoYoImpl:with("FadeIn"):duration(200):playOn(cebian) luajava.runUiThread(function() YoYoImpl:with("FadeIn"):duration(800):playOn(title) if 当前ui == 1 then layout1:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout1) elseif 当前ui == 2 then layout2:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout2) elseif 当前ui == 3 then layout3:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout3) elseif 当前ui == 4 then layout4:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout4) elseif 当前ui == 5 then layout5:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(layout5) end floatWindow:setBackground(beij) end) else luajava.runUiThread(function()mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) end) --control:setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/imgui")) --title:setVisibility(View.GONE) floatWindow:setBackground(beij2) --chuangk:setVisibility(View.GONE) cebian:setVisibility(View.GONE) layout1:setVisibility(View.GONE) layout2:setVisibility(View.GONE) layout3:setVisibility(View.GONE) layout4:setVisibility(View.GONE) layout5:setVisibility(View.GONE) end end) end function guid() seed = { 'e','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' } tb = {} for i = 1,32 do table.insert(tb,seed[math.random(1,16)]) end sid = table.concat(tb) return string.format('%s%s%s%s%s', string.sub(sid,1,8), string.sub(sid,10,12), string.sub(sid,21,22)) ..string.format('%s%s%s%s%s', string.sub(sid,1,6), string.sub(sid,21,25) ) end function getLayoutParams2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams1.gravity = Gravity.CENTER -- 重力设置 layoutParams1.width = prm.WRAP_CONTENT -- 布局宽度 layoutParams1.height = prm.WRAP_CONTENT -- 布局高度 return layoutParams1 end chazhi = {} chajv = {} function ml.seek(name,bian,smin,smax,nows) smin = tonumber(smin) smax = tonumber(smax) chajv[bian] = smax-smin chazhi[bian] = 1-smin if smin == nil then smin = 1 smax = 10 end truesmin = 1 truesmax = truesmin+chajv[bian] if not nows then nows = smin tnows = (smin-nows) else tnows = (nows-smin)+1 end if _ENV[bian] == nil then _ENV[bian] = 1.0 end if not name then name = "未设置" end local names = name..guid() rest = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_height = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable, color = "#33ffffff", cornerRadius = 12 }, { TextView, gravity = "top", text = name..":"..nows, id = luajava.newId(names), layout_width = '70dp', layout_marginLeft = "5dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = '120dp', min = truesmin, max = truesmax, progress = tnows, onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar = tonumber(string.sub(var2,0,-3))-chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name..":".. resultvar) end) _ENV[bian] = resultvar end }} }}) return rest end paramt = {} titletable={} function ml.newtitle(name) titletable[name]=1 local function invoke(name) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y paramt[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "wrap_content", layout_height = "50dp", background = luajava.loadlayout { GradientDrawable, color = "#00000000", cornerRadius = 30 }, onClick = function() end, onTouch = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = paramt[name].x y = paramt[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true paramt[name].x = tonumber(x) + (event:getRawX() - RawX) paramt[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV[name], paramt[name]) end end, { TextView, text = name, id=luajava.newId(name.."xfc"), gravity = "center", layout_width = "wrap_content", layout_height = "30dp", textSize = "17sp", } }) local function invoke2() window:addView(_ENV[name], paramt[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name) end function ml.rmvtitle(name) titletable[name]=0 local function invoke2() window:removeView(_ENV[name], paramt[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function ml.box(views) local tid = "box"..guid() local ttid = tid.."6" firadio = { LinearLayout, gravity = "center", layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio+1] = { LinearLayout, layout_height = "20dp", layout_width = "fill_parent", onClick = function() visi(tid,ttid) end, background = getSelector3(), { ImageView, layout_marginLeft = "10dp", id = luajava.newId(ttid), background = "/sdcard/穆麟/图片/hsanjiao", layout_width = "10dp", layout_height = "10dp", layout_marginTop = "5dp", }, { TextView, text = views[1], textSize = "11sp", id = luajava.newId("box"..views[1]), layout_marginLeft = "2dp", textColor = "#00000", gravity = "center_horizontal", }} else gg.alert("ml.box第一个参数必须是string") os.exit() end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", visibility = "gone", id = luajava.newId(tid), padding = "0dp", layout_width = 'fill_parent', } for i = 2,#views do radios[#radios+1] = views[i] end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function ml.anniu(radio) local tid = "radio"..guid() local ttid = tid.."6" firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", background = luajava.loadlayout({ GradientDrawable, color = "#00615E66", cornerRadius = 30 }), } radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "horizontal", visibility = "visible", padding = "0dp", layout_width = 'fill_parent', } for i = 2,#radio do radios[#radios+1] = { LinearLayout, layout_marginTop = "3dp", layout_marginBottom = "3dp", layout_marginLeft = "0dp", layout_marginRight = "8dp", background = getSelector2(), layout_width = 'wrap_content', layout_height = "25dp", gravity = "center", { TextView, layout_width = 'wrap_content', layout_height = "30dp", text = radio[i][1], layout_marginLeft = "8dp", layout_marginRight = "8dp", gravity = "center", textColor = "#00000", textSize = "10sp", }, onClick = function() luajava.newThread(function() radio[i][2]() end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function getseekgra3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x6600FF76,0x9900A5FF }) jianbians:setStroke(0,"0xff456ff00")--边框宽度和颜色 return jianbians end function getseekgra() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(8) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({0x6600FF76,0x9900A5FF}) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(4,"0x663fff000")--边框宽度和颜色 return jianbians end function getseekgra2() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(0) jianbians:setShape(GradientDrawable.RECTANGLE) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0x6600FF76,0x9900A5FF }) jianbians:setStroke(0,"0x778fff66")--边框宽度和颜色 return jianbians end function ml.switch(name,func1,func2) if type(func1) == "table" then gg.alert("出现错误")os.exit() end local func = 开关(name,func1,func2) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_height = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable, color = "#88615E66", cornerRadius = 12 }, { TextView, gravity = "top", text = name, layout_width = '100dp', layout_marginLeft = "10dp", layout_marginRight = "10dp", }, { Switch, gravity = "top", layout_width = 'match_parent', layout_height = "10dp", showText = "true", textOn = "开", textOff = "关", --id=luajava.newId(tid), switchMinWidth = "20dp", onCheckedChange = function(Switch,var2,var3) if var2 == true then var2 = "开" else var2 = "关" end luajava.newThread(function() func() end):start() end, }} }) return rest end function ml.edit(name) _ENV[name] = name..guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "wrap_content", { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = luajava.loadlayout { GradientDrawable, color = "#88615E66", cornerRadius = 12 }, { EditText, gravity = "center", hintText = name, textSize = "13sp", id = luajava.newId(_ENV[name]), layout_width = 'fill', layout_marginLeft = "10dp", layout_marginRight = "10dp", }} }) return rest end function ml.radio(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "fill_parent", orientation = "vertical", layout_marginLeft = "10dp", layout_marginRight = "10dp", } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio+1] = { TextView,text = radio[1],layout_marginLeft = "10dp", layout_marginRight = "10dp", } end radios = { RadioGroup, layout_marginLeft = "10dp", layout_marginRight = "10dp", background = luajava.loadlayout({ GradientDrawable, color = "#88615E66", cornerRadius = 30 }),layout_width = 'fill_parent', } for i = 2,#radio do radios[#radios+1] = { RadioButton, layout_width = 'fill_parent', text = radio[i][1], onClick = function() luajava.newThread(function() pcall(radio[i][2]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function ml.radio2(radio) firadio = { LinearLayout, layout_width = 'fill_parent', layout_height = "wrap_content", orientation = "vertical", layout_marginLeft = "10dp", layout_marginRight = "10dp", } radios = { LinearLayout, orientation = "vertical", layout_marginLeft = "10dp", layout_marginRight = "10dp", layout_width = 'fill_parent', } for i = 1,#radio do radios[#radios+1] = { LinearLayout, gravity = "center", layout_height = "30dp", layout_width = 'fill_parent', orientation = "horizontal", layout_marginBottom = "5dp", layout_marginTop = "5dp", background = luajava.loadlayout({ GradientDrawable, color = "#dd000000", cornerRadius = 13 }), { ImageView, layout_width = "20dp", layout_height = "20dp", background = "/sdcard/ml/图片/"..radio[i][2] }, { TextView, text = radio[i][1], }, onClick = function() luajava.newThread(function() pcall(radio[i][3]) end):start() end, } end firadio[#firadio+1] = radios return luajava.loadlayout(firadio) end function ml.check(cklist) rest = { LinearLayout, layout_width = 'wrap_content', layout_height = "30dp", layout_marginTop = "10dp", gravity = "left" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if type(func1) == "table" then gg.alert("出现错误") os.exit() end if not name then name = "未设置" end nid = name..guid() local func = 开关2(nid,func1,func2,nid) rstt = luajava.loadlayout({ LinearLayout, layout_width = 'wrap_content', layout_height = "30dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "5dp", layout_marginRight = "5dp", gravity = "center_vertical", onClick = function() luajava.newThread(function() func() end):start() end, { ImageView, id = luajava.newId(nid), layout_width = '20dp', layout_height = "20dp", layout_marginLeft = "8dp", layout_marginRight = "0dp", background = "/sdcard/ml/图片/check1", }, { TextView, gravity = "top", text = name, textColor = "#ffffff", layout_width = 'wrap_content', layout_height = 'wrap_content', layout_marginLeft = "4dp", layout_marginRight = "5dp", }}) rest[#rest+1] = rstt end return luajava.loadlayout(rest) end function ml.button(txt,func) if not txt then txt = "未设置" end return luajava.loadlayout( { LinearLayout, layout_width = '210dp', layout_height = "wrap_content", { LinearLayout, layout_width = "fill_parent", gravity = "center_horizontal", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", background = getSelector3(), onClick = function() luajava.newThread(function() pcall(func) end):start() end, { TextView, --id = luajava.newId(tid), text = txt, textColor = "#000000", textSize = "14sp", layout_width = "wrap_content", }, }}) end function ml.text(txt,color,size) if not txt then txt = "未设置文字" end if not color then color = "#ffffff" end if not size then size = "18sp" end return luajava.loadlayout( { TextView, text = txt, textSize = size, gravity = "center", textColor = color, layout_width = "wrap_content", }) end corb = true function getLayoutParams2() local prm = luajava.new(WindowManager.LayoutParams) layoutParams1 = prm if (Build.VERSION.SDK_INT >= 26) then -- 设置悬浮窗方式 layoutParams1.type = prm.TYPE_APPLICATION_OVERLAY else layoutParams1.type = prm.TYPE_PHONE end layoutParams1.format = PixelFormat.RGBA_8888 -- 设置背景 layoutParams1.flags = prm.FLAG_NOT_FOCUSABLE -- 焦点设置Finish layoutParams1.gravity = Gravity.CENTER -- 重力设置 layoutParams1.width = prm.WRAP_CONTENT -- 布局宽度 layoutParams1.height = prm.WRAP_CONTENT -- 布局高度 return layoutParams1 end function 开关6(name,func1,func2,nid) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/checkon2")) _ENV[name] = "开" pcall(func1) else luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/checkof")) _ENV[name] = "关" pcall(func2) end end end end function ml.check2(cklist) rest = { LinearLayout, layout_width = 'match_parent', layout_hight = "match_parent", layout_marginTop = "10dp", gravity = "center_horizontal" } for i = 1,#cklist do local name = cklist[i][1] local func1 = cklist[i][2] local func2 = cklist[i][3] local nid = cklist[i][4] if type(func1) == "table" then gg.alert("出现错误\n如果你是用的是旧版\n请将开头第一个ml.switch改成ml.menu") gg.copyText("") os.exit() end if not name then name = "未设置" end nid = name..guid() local func = 开关6(nid,func1,func2,nid) rstt = luajava.loadlayout({ LinearLayout, id = luajava.newId(nid), layout_width = '63dp', layout_height = "30dp", layout_marginTop = "5dp", layout_marginBottom = "5dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", gravity = "center_vertical", background = "/sdcard/ml/图片/checkof", onClick = function() luajava.newThread(function() func() end):start() end, { TextView, gravity = "top", text = name, layout_width = '80dp', layout_hight = '80dp', layout_marginLeft = "20dp", layout_marginRight = "10dp", }}) rest[#rest+1] = rstt end return luajava.loadlayout(rest) end namelist={} param1 = {} floattable={} function ml.newfloat(name,func1,func2) floattable[name]=1 local func = 开关(name.."k",func1,func2) local function invoke(name,func1,func2) if not name then name = "未设置" end nameid = name..guid() local ok local RawX, RawY, x, y nameid1 = name..guid() if not namelist[name] then namelist[name]=false end if namelist[name]~=false then clclcl="#75ff0000" else clclcl="#88000000" end param1[name] = getLayoutParams2() _ENV[name] = luajava.loadlayout( { LinearLayout, layout_width = "40dp", id = luajava.newId(nameid1), layout_height = "40dp", background = luajava.loadlayout { GradientDrawable, color = clclcl, cornerRadius = 30 }, onClick = function() if namelist[name]==false then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#75ff0000", cornerRadius = 30 }) namelist[name]=true elseif namelist[name]==true then _ENV[name]:setBackground(luajava.loadlayout { GradientDrawable, color = "#88000000", cornerRadius = 30 }) namelist[name]=false end luajava.newThread(function() pcall(func) end):start() end, onTouch = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = param1[name].x y = param1[name].y elseif Action == MotionEvent.ACTION_MOVE then isMove = true param1[name].x = tonumber(x) + (event:getRawX() - RawX) param1[name].y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(_ENV[name], param1[name]) end end, { TextView, text = name, gravity = "center", layout_width = "50dp", layout_height = "50dp", } }) local function invoke2() window:addView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end invoke(name,func1,func2) end function ml.rmvfloat(name) floattable[name]=0 local function invoke2() window:removeView(_ENV[name], param1[name]) end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) end function ml.getedit(name) --gg.alert(edit) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function ml.setedit(name,txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function 开关(name,func1,func2) name=name.."开关1" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end function 开关2(name,func1,func2,nid) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/check2")) end) _ENV[name] = "开" func1() else luajava.runUiThread(function() luajava.getIdValue(nid):setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/check1")) end) _ENV[name] = "关" func2() end end end end function visi(tid,ttid) local tview = luajava.getIdValue(tid) local ttview = luajava.getIdValue(ttid) if not tview then return 0 end if tonumber(tostring(tview:getVisibility())) == 8.0 then tview:setVisibility(View.VISIBLE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/hsj")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("/sdcard/ml/图片/sj")) end end wyyget="http://120.24.160.246:3000/" function huoqu(txt) return table.json(gg.makeRequest(wyyget.."song/url/v1?id="..txt.."").content) end function souyy(txt) tbttt=gg.makeRequest(wyyget.."search?keywords="..txt.."&limit=10") if tbttt==nil or type(tbttt)=="string" then gg.alert("网络异常") luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.GONE) luajava.getIdView("stxt"):setVisibility(View.VISIBLE) end) end return table.json(tbttt.content) end function develo(tabb) gg.alert(tostring(tabb)) end function develo2(tabb) gg.copyText(tostring(tabb)) end function tablekIn(tbl, key) if tbl == nil then return false end for k, v in pairs(tbl) do if k == key then return true end end return false end function searchmusic() if not lasttm then lasttm=os.time() else if os.time()-lasttm<=5 then gg.alert("请在"..(5-(os.time()-lasttm)).."秒冷却后搜索") return 0 end end if not wryt then else runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):removeView(wyr) end) handler = luajava.getHandler() handler:post(runnable) end mustxt=luajava.getIdView("搜索"):getText() if string.len(tostring(mustxt))<=2 or tostring(mustxt)==nil then gg.alert("至少输入2个字符") return 0 end mustxt=tostring(mustxt) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.VISIBLE) luajava.getIdView("stxt"):setVisibility(View.GONE) end) lasttm=os.time() mustable=souyy(mustxt) mustable=mustable.result.songs musnames={} musids={} musarts={} musictable={} for k,v in pairs(mustable) do if tonumber(v.fee)==0 or tonumber(v.fee)==8 then musictable[#musictable+1]=v end end --gg.alert(tostring(mustable)) --gg.alert(tostring(musictable)) --gg.copyText(tostring(mustable)) --gg.alert(#musictable) wrfun={} wryt={LinearLayout, id=luajava.newId("搜索结果"), layout_marginTop="5dp", layout_marginBottom="5dp", orientation="vertical", } for i=1,#musictable do musid=musictable[i].id musids[#musids+1]=musid musname=musictable[i].name if tablekIn(musictable[i], "transNames")~=false then musname=musname .."\n(".. musictable[i].transNames[0]..")" end musnames[#musnames+1]=musname musart=musictable[i].artists[0].name musarts[#musarts+1]=musart wryt[#wryt+1]={LinearLayout, orientation="vertical", layout_marginTop="2dp", layout_marginBottom="2dp", background=getSelector7(), id=luajava.newId("音"..musid), onClick=function() thread = luajava.getPThread(function() bofang(musname,musid) end) thread:start() end, { TextView, layout_marginTop="5dp", textSize="16sp", textColor="#000000", layout_marginBottom="0dp", text = musname, layout_hight="10dp", layout_width = "210dp", gravity="center", },{ TextView, layout_marginTop="0dp", textColor="#ffffff", textSize="12sp", layout_marginBottom="5dp", text = musart, layout_hight="10dp", layout_width = "210dp", gravity="center", } } --gg.sleep(50) wryt[#wryt].onClick=function() luajava.getPThread(function() bofang(musnames[i]..musarts[i],musids[i]) end):start() end end wyr=luajava.loadlayout(wryt) runnable = luajava.getRunnable(function() luajava.getIdView("搜索列表"):addView(wyr) end) handler = luajava.getHandler() handler:post(runnable) luajava.runUiThread(function() luajava.getIdView("jzz"):setVisibility(View.GONE) luajava.getIdView("stxt"):setVisibility(View.VISIBLE) end) --gg.alert(tostring(wrfun)) end function bofang(gqmz,gdmn) luajava.runUiThread(function() luajava.getIdView("搜索结果"):setVisibility(View.GONE) luajava.getIdView("加载"):setVisibility(View.VISIBLE) end) if panduan("/sdcard/ml/音频/"..gqmz..".mp3")==true then gg.playMusic("/sdcard/ml/音频/"..gqmz..".mp3") else gg.toast("下载中..."..gqmz) musurl=huoqu(gdmn).data[0].url if musurl=="" or musurl=="null" then gg.alert("由于版权问题\n这首歌不能播放","你干嘛哈哈哎呦","呀啊哈哈嘛干") else download(musurl,"/sdcard/ml/音频/"..gqmz..".mp3") gg.playMusic("/sdcard/ml/音频/"..gqmz..".mp3") gg.sleep(1000) end end luajava.runUiThread(function() luajava.getIdView("加载"):setVisibility(View.GONE) luajava.getIdView("搜索结果"):setVisibility(View.VISIBLE) end) end stxt={LinearLayout, visibility="visible", id=luajava.newId("stxt"), gravity="center", layout_hight="70dp", layout_width="70dp", gravity="center", orientation="vertical", {TextView, text="搜索", background=luajava.loadlayout({ GradientDrawable, color = "#ddFF4A6F", cornerRadius = 12 }), gravity="center", layout_hight="30dp", layout_width="70dp", textSize="15sp", onClick=function() thread = luajava.getPThread(function() searchmusic() end) thread:start() end, }, {TextView, text="停止", background=luajava.loadlayout({ GradientDrawable, color = "#dd3FD198", cornerRadius = 12 }), gravity="center", layout_hight="30dp", layout_width="70dp", textSize="15sp", onClick=function() thread = luajava.getPThread(function() gg.playMusic("stop") end) thread:start() end, } } jzz={TextView, text="加载中", visibility="gone", id=luajava.newId("jzz"), layout_marginLeft="10dp", textSize="15sp", } jiaz={TextView,text="正在加载歌曲资源", visibility="gone", id=luajava.newId("加载"), textSize="17sp", gravity="center" } wyylog=luajava.loadlayout({LinearLayout, layout_hight="180dp", {ScrollView, layout_hight="180dp", {LinearLayout, id=luajava.newId("搜索列表"), layout_hight="180dp", orientation="vertical", layout_width = "wrap_content", {LinearLayout,orientation="horizontal", layout_width = "wrap_content", { EditText, hint = "请输入歌名", id=luajava.newId("搜索"), background=luajava.loadlayout({ GradientDrawable, color = "#dd000000", cornerRadius = 12 }), focusableInTouch="false", focusable="false", selectAllOnFocus="true", singleLine="true", layout_width = "140dp", layout_hight = "60dp", }, stxt, jzz },jiaz}} }) ------------------------------------------配置 ------------------------------------- ---文字: --ml.text("文本","#ffffff","20sp"),--后两个参数可省略 --按钮 --ml.button('实例', --function() --功能源码 --end), --勾选check开关: --changan.check({{"功能1", -- function() 开 end, -- function() 关 end -- },{"功能2", -- function() 开 end, -- function() 关 end -- },{"功能3", -- function() 开 end, -- function() 关 end -- },....可无限添加 -- }) --单选radio列表 --changan.radio({{"功能1", -- function() 功能 end -- },{"功能2", -- function() 功能 end -- },{"功能3", -- function() 功能 end -- },....可无限添加 -- }) --拖动条: --changan.seek("文本","bianliang",0,100,6) --参数依次为 控件名字,变量名字,最小值,最大值,初始值 --这里传入的是"bianliang" --那么只需要gg.alert(bianliang)即可调用 --隐藏收起列表 --changan.box({"按钮名字" --这里写布局,一个一行 比如 --changan.text("你好"), --changan.text("123"), --...(不限制数量) -- }) --画线 --changan.line() --生成一条灰色的直线 --没有任何作用 只能用来装饰 ------------------------------------------ stitle = "BOY" 图片1 = "/sdcard/ml/图片/ml" 公告 = "" stab = { "游戏设置","稳定功能","角色功能","武器功能","搜索音乐" } ml.menu("功能", { { ml.text("游戏设置","#FF2A3F","20sp"), ml.button('选择进程', function() gg.setProcessX() end), ml.button('防闪', function() gg.clearResults() gg.setRanges(8) gg.searchNumber("778,923,875", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("-1", gg.TYPE_DWORD) gg.toast("开启成功") gg.clearResults() gg.alert("开启成功") end), ml.button('防高风险[登录]', function() so=gg.getRangesList('libUE4.so')[1].start setvalue(so + "0x66EC384 ", 4, "h 00 00 80 D2 C0 03 5F D6") gg.alert("开启成功") end), ml.button('初始化', function() so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressD(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '~A BX LR' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressQ(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '-494030820' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressB(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '-494030842' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressA(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '-494030840' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressC(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '-494030824' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressAA(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value tt[2] = {} tt[2].address = so + address + 0x4 tt[2].flags = 4 tt[2].value = '-494030832' gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressF(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 16 tt[1].value = value gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressZZZ(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 32 tt[1].value = value gg.setValues(tt) end so = gg.getRangesList('libil2cpp.so')[1].start function BaseAddressY(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value gg.setValues(tt) end gg.toast("已初始化") end), ml.button('清理日记', function() 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") end), ml.button('防止追封', function() 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("清理防追封成功") sp="清理追封开启成功" gg.playMusic("https://fanyi.baidu.com/gettts?lan=zh&text="..sp.."&spd=5&source=wise") end), ml.text("帧率修改","#FF2A3F","20sp") , ml.edit("帧率"), ml.button("确定修改", function() fastsearch({{1886650479,4,16384}},{{sgly,0,4}}) toMusic("修改成功") end), ml.switch("加入Q群", function() qq.joinGroup("311534301") end), ml.switch("联系作者", function() qq.join("3021054285") end), }, --到此为止 ------------------------------------ --UI2 { ml.text("稳定功能","#FF2A3F","20sp") , --ml.box({"套娃",--1 ml.text("人物视角",nil,"15sp"), ml.seek("视角","shijiao",0,100,0),---描述,变量名字,最小,最大,初始值 ml.button("修改数值", function() fastsearch({{1109393408,4,32},{1086324736,4,4}},{{shijiao,28,16,false}}) toMusic("开启成功") end), ml.switch("渲染透视", function() BaseAddressF(0xbcabac,'0') toMusic("开启成功") end, function() end), ml.switch("逃生移速", function() fastsearch({{7.0,16,32},{-0.75,8,16}},{{0.3,8,16,false}}) end, function() end), ml.switch("开锁加速[独家]", function() function gotoPointer(addr) return gg.getValues({{address=addr, flags=4}})[1].value & 0xFFFFFFFF end a = function(Address, length, useChineseLoad) local jump = 0 local chars, char = {}, { address = Address, flags = gg.TYPE_BYTE } if not length then repeat local _nextchar, _2nextchar _char = gg.getValues({char})[1].value if (useChineseLoad) then if (_char > -28 and _char < -23) then _nextchar = gg.getValues({{address = char.address + 0x1, flags=gg.TYPE_BYTE}})[1].value if (_nextchar > -128 and _nextchar < -65) then _2nextchar = gg.getValues({{address = char.address + 0x2, flags=gg.TYPE_BYTE}})[1].value jump = 3 chars[#chars + 1] = string.char(_char & 0xFF, _nextchar & 0xFF, _2nextchar & 0xFF) end end end if (jump > 0) then jump = jump - 1 goto continue end chars[#chars + 1] = string.char(_char & 0xFF) ::continue:: char.address = char.address + 0x1 until _char == 0 return table.concat(chars, "", 1, #chars - 1), char.address else for i = 1, length do local _nextchar, _2nextchar local _char = gg.getValues({char})[1].value if (useChineseLoad) then if (_char > -28 and _char < -23) then _nextchar = gg.getValues({address = char.address + 0x1, flags=gg.TYPE_BYTE}) if (_nextchar > -128 and _nextchar < -65) then _2nextchar = gg.getValues({address = char.address + 0x2, flags=gg.TYPE_BYTE}) jump = 3 chars[i] = utf8.char(_char & 0xFF, _nextchar & 0xFF, _2nextchar & 0xFF) end end end if (jump > 0) then jump = jump - 1 goto continue end chars[i] = utf8.char(_char & 0xFF) ::continue:: char.address = char.address + 0x1 end return table.concat(chars), char.address end end function classSearch(className, offset) gg.clearResults() gg.setRanges(gg.REGION_OTHER | gg.REGION_C_ALLOC) gg.searchNumber("Q 00 '" .. className .. "' 00", gg.TYPE_BYTE) if (gg.getResultsCount() == 0) then print('没有发现类\n请确认是否初始化') end gg.searchPointer(0) gg.setRanges(32) local object = {} for k, v in pairs(gg.getResults(gg.getResultsCount())) do if (a(gotoPointer(gotoPointer(v.address - 8))):match(string.char(46, 100, 108, 108))) then v.address = v.address - 8 object[1] = v gg.loadResults(object) break end end gg.searchPointer(0) gg.searchPointer(0) local item = gg.getResults(gg.getResultsCount()) for k, v in pairs(item) do v.address = gotoPointer(v.address) + offset end return item end function editerObject(valObject, editerVal) for k, v in pairs(valObject) do v.value = editerVal[1] v.flags = editerVal[2] v.freeze = editerVal[3] end gg.setValues(valObject) gg.toast('开启成功\n共修改: ' .. gg.getResultsCount() .. '个结果') gg.clearResults() end field = classSearch("TalentProperties", 0x20) editerObject(field, {1.8, 16, false}) end, function() end), ml.switch("无视夹子", function() BaseAddressY(0x2419954,'-516948194') end, function() end), ml.switch("无视爆炸", function() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x1E11CB0},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1E11CB4},}) end, function() end), ml.switch("人物穿墙", function() fastsearch({ {-10, 16, 32}, {49.0, 20, 16}, }, {{999999, 0, 16},}, "人物穿墙") end, function() fastsearch({ {999999, 16, 32}, {49.0, 20, 16}, }, {{-10, 0, 16},}, "人物穿墙") end), ml.switch("解锁锁位", function() local addr = readPointer("libil2cpp.so", {25474520}, 1) gg.edits(addr, {{-476053503, 4, 0, false}, {-516948194, 4, 4, false}}) end, function() end), ml.switch("全图透视", function() fastsearch( {{8.0, 16, 32},--搜索值,搜索类型,内存类型 {4, -4, 4}, {1, 8, 4}, {8, 12, 4}},--偏移值,偏移量,偏移类型 {{1, 46, 4}},--修改值,偏移量,修改类型,是否冻结 "明亮透视") end, function() end), ml.switch("六格道具", function() local t = {"libtersafe2.so", "Cd"} local tt = {0x359BC, 0x194, 0x90, 0x3C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 6}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x359BC, 0x1DC, 0x10, 0x3C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 6}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x20F850, 0x5C, 0xE8, 0x3C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 6}}) local t = {"libtersafe2.so", "Cd"} local tt = {0x359BC, 0x1DC, 0x90, 0x3C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 6}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x20F83C, 0x5C, 0x18, 0x3C} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 6}}) toMusic("开启成功") end, function() end), ml.switch("药包范围", function() FR=gg.prompt({""},{[1]=""}) qmnb = { {["memory"] = 32}, {["name"] =""}, {["value"] =4608083138725491507, ["type"] = 32}, {["lv"] = 3689348813882916864, ["offset"] = -4, ["type"] = 32}, } qmxg = { {["value"] =FR[1], ["offset"] = 0, ["type"] = 64}, } xqmnb(qmnb) toMusic("开启成功") end), ml.switch("跳高耐久", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("1017D;4.3;13D::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("4.3", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("9999", gg.TYPE_FLOAT) gg.toast("") gg.clearResults() toMusic("开启成功") end, function() end), ml.button('全局加速', function() FR=gg.prompt({""},{[1]="" }) if FR==nil then os.exit(print("你点了取消")) end fastsearch({ {1020054733,4,32}, {1031127695,-4,4}, },{ {FR[1],-8,16,false} }) end), ml.button('加速关闭', function() fastsearch({ {1020054733,4,32}, {1031127695,-4,4}, },{ {1,-8,16,false} }) end), ml.text("直装功能","#FF2A3F","20sp") , ml.button('跳跃开物', function() BaseAddressD(0x1E112AC,'-476052716') end), ml.button('解锁模式', function() local so = gg.getRangesList("libil2cpp.so")[1].start gg.setValues({[1]={address=so + 0x16a4e30, flags=4, value=-476053503}}) gg.setValues({[1]={address=so + 0x16a4e34, flags=4, value=-516948194}}) end), ml.button('角色皮肤', function() local so = gg.getRangesList("libil2cpp.so")[1].start gg.setValues({[1]={address=so + 0x197d270, flags=4, value=-516948194}}) end), ml.button('道具皮肤', function() py1=0x1C489AC py2=py1+0x4 local so = gg.getRangesList("libil2cpp.so")[1].start gg.setValues({[1]={address=so + py1, flags=4, value=-476053503}}) gg.setValues({[1]={address=so + py2, flags=4, value=-516948194}}) end), ml.button('人物隐身', function() local addr = readPointer("libunity.so", {3277016}, 3) gg.edits(addr, {{-2, 4, 0, false}}) local addr = readPointer("libunity.so", {6407936}, 3) gg.edits(addr, {{-2, 4, 0, false}}) local addr = readPointer("libunity.so", {6398432}, 3) gg.edits(addr, {{-2, 4, 0, false}}) local addr = readPointer("libunity.so", {6399824}, 3) gg.edits(addr, {{-2, 4, 0, false}}) local addr = readPointer("libunity.so", {6533888}, 3) gg.edits(addr, {{-2, 4, 0, false}}) local addr = readPointer("libunity.so", {10076448}, 3) gg.edits(addr, {{-2, 4, 0, false}}) local addr = readPointer("libunity.so", {9649080}, 3) gg.edits(addr, {{-2, 4, 0, false}}) end), ml.button('变身攻击', function() nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1113d20},}) end), ml.button('道具冷却', function() local so = gg.getRangesList("libil2cpp.so")[1].start gg.setValues({[1]={address=so + 0x12b0e9c, flags=4, value=-476053504}}) gg.setValues({[1]={address=so + 0x12b0ea0, flags=4, value=-516948194}}) end), ml.button('秒做任务', function() --- --- Creation By \- zero time-2023.7.23 --- Enc zero 1573510253@qq.com --- --- 写法来自: sugar function gotoPointer(addr) return gg.getValues({{address=addr, flags=4}})[1].value & 0xFFFFFFFF end a = function(Address, length, useChineseLoad) local jump = 0 local chars, char = {}, { address = Address, flags = gg.TYPE_BYTE } if not length then repeat local _nextchar, _2nextchar _char = gg.getValues({char})[1].value if (useChineseLoad) then if (_char > -28 and _char < -23) then _nextchar = gg.getValues({{address = char.address + 0x1, flags=gg.TYPE_BYTE}})[1].value if (_nextchar > -128 and _nextchar < -65) then _2nextchar = gg.getValues({{address = char.address + 0x2, flags=gg.TYPE_BYTE}})[1].value jump = 3 chars[#chars + 1] = string.char(_char & 0xFF, _nextchar & 0xFF, _2nextchar & 0xFF) end end end if (jump > 0) then jump = jump - 1 goto continue end chars[#chars + 1] = string.char(_char & 0xFF) ::continue:: char.address = char.address + 0x1 until _char == 0 return table.concat(chars, "", 1, #chars - 1), char.address else for i = 1, length do local _nextchar, _2nextchar local _char = gg.getValues({char})[1].value if (useChineseLoad) then if (_char > -28 and _char < -23) then _nextchar = gg.getValues({address = char.address + 0x1, flags=gg.TYPE_BYTE}) if (_nextchar > -128 and _nextchar < -65) then _2nextchar = gg.getValues({address = char.address + 0x2, flags=gg.TYPE_BYTE}) jump = 3 chars[i] = utf8.char(_char & 0xFF, _nextchar & 0xFF, _2nextchar & 0xFF) end end end if (jump > 0) then jump = jump - 1 goto continue end chars[i] = utf8.char(_char & 0xFF) ::continue:: char.address = char.address + 0x1 end return table.concat(chars), char.address end end function classSearch(className, offset) gg.clearResults() gg.setRanges(gg.REGION_OTHER | gg.REGION_C_ALLOC) gg.searchNumber("Q 00 '" .. className .. "' 00", gg.TYPE_BYTE) if (gg.getResultsCount() == 0) then print('没有发现类\n请确认是否初始化') end gg.searchPointer(0) gg.setRanges(32) local object = {} for k, v in pairs(gg.getResults(gg.getResultsCount())) do if (a(gotoPointer(gotoPointer(v.address - 8))):match(string.char(46, 100, 108, 108))) then v.address = v.address - 8 object[1] = v gg.loadResults(object) break end end gg.searchPointer(0) gg.searchPointer(0) local item = gg.getResults(gg.getResultsCount()) for k, v in pairs(item) do v.address = gotoPointer(v.address) + offset end return item end function editerObject(valObject, editerVal) for k, v in pairs(valObject) do v.value = editerVal[1] v.flags = editerVal[2] v.freeze = editerVal[3] end gg.setValues(valObject) gg.toast('开启成功\n共修改: ' .. gg.getResultsCount() .. '个结果') gg.clearResults() end --作者: zero->圈钱死全家 gg.alert('开始页面开启') field = classSearch("TaskCal", 0x24) editerObject(field, {9999, 4, false}) --- 说明: 各位要么就是不会要么就是懒吧 --- 任务进度存在类名: TaskCal 字段: m_Increment --- 上一个的已经没用了,我免费修复给大家了 --- 交流群: 1006907289 toMusic("开启成功") end), ml.button('无视禁闭', function() local addr = readPointer("libil2cpp.so", {28416008},1) gg.edits(addr,{{-476053504,4,0,false},{-516948194,4,4,false}}) end), ml.button('随机Buff', function() so = gg.getRangesList('libil2cpp.so')[1].start local _A = string.format('0x%X', so + 0x1BEB984) local g=os.clock() local tt = {} tt[1] = {} tt[1].address = so + 0x1BE1E80 tt[1].flags = 4 tt[1].value = "~A B ".._A gg.setValues(tt) k = so + 0x1BEBA28 while true do gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..107}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..108}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..111}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..206}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..103}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..100}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..204}}) gg.sleep(200) gg.setValues({{address = k, flags = 4, value = "~A MOV R2, #"..206}}) gg.sleep(200) end end), ml.button('人物踏空', function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("6.16297729e-33;0.07999999821:13", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("0.07999999821", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("10", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() end), ml.button('人物无敌', function() nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x241817C},}) end), ml.button('时间暂停', function() BaseAddressY(0x1be1e80,'-369092380') end), ml.button('无视伤害', function() BaseAddressD(0xbeb814,'-476053503') end), ml.button('秒上白银', function() function kq1_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -516948194}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function kqorgb_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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 "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb1_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030832}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb2_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030820}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb3_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030842}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb4_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030840}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function gb5_offset(addr, tablex, tt) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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]}}) gg.setValues({{address = addr + v[3]+4, flags = 4, value = -494030824}}) end end gg.toast((tt or "") .. "开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end function getso(So_name) return gg.getRangesList(So_name)[1].start end cnm={"别拿曾经讲故事谁也不是曾经的那个自己.","每到晚上睡不着的时候我总喜欢看快手刷文案总会反反复复怀疑.","没说出口的话乱七八糟的心情和凌晨的心事都藏在我的心底.","我没有忘记谁只是在我最难的时候也没有人记住过我.","后来熬夜成瘾也习惯了没人关心我没有那么坚强.","其实那边风景也不错可惜我回不了头了.","苦而不严喜而不语或许才是生活中最好的状况.","既然幸福不了 那就做幸福的旁观者咯.","永远不成熟但永远真诚的做自己.","世界之大为何我们相遇.","花开花落缘聚缘散谁又能记得谁几年.","所有的承诺最后变成了一句对不起.","不要赌天意不要猜人心天意赌不起人心猜不透.","要开始好好努力啦.","你是朵花才会觉得春天离开你如果你是春天就永远有花."} ------------------------------------------------------------------------------------------------------------- ------------------------------------------配置 --方法名:public Single get_GameTime() { } kq1_offset(getso("libil2cpp.so"),{{-482082000,4,0xC54E3C},}) --方法名:public static Int32 get_FinalCapturedThiefCount() { } kq1_offset(getso("libil2cpp.so"),{{-476053496,4,0x16A0278},}) --类名:ThiefController --方法:public override Void BatchUpdate() { } --操作码~A B 0x地址 --跳转方法:public Void LocalFinalEscape() { } kqorgb_offset(getso("libil2cpp.so"),{{-369094155,4,0x1B189CC},}) --类名:InGameScene --方法:public override Void BatchUpdate() { } --操作码~A B 0x地址 --跳转方法:private Void ShowGameOverUI() { } kqorgb_offset(getso("libil2cpp.so"),{{-369093590,4,0xC6D314},}) end, function() end), ml.button('禁用武器', function() nc_offset(getso("libil2cpp.so"),{{-476053503,4,0x12B0E9C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x12B0EA0},}) end), ml.button('禁用道具[自己]', function() BaseAddressY(0x12a35f0,'-476053503') BaseAddressY(0x12a35f4,'-516948194') end), ml.button('攻击瞬移', function() nc_offset(getso("libil2cpp.so"),{{-476053504,4,0x1B93CF4},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1B93CF8},}) end), ml.button('倒地购物', function() nc_offset(getso("libil2cpp.so"),{{-476053504,4,0x12A35F0},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x12A35F4},}) end), ml.text("美化功能","#FF2A3F","20sp") , ml.button('道具品质', function() 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), ml.button('修改喷漆', function() 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} }, {{954751,0,4}, {954741,4,4}, {954821,8,4}, {954871,12,4}, {954881,16,4}, {954701,20,4,false}}) end), ml.button('星耀动作', function() 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} }, {{954871,0,4}, {954881,4,4}, {954821,8,4}, {954751,12,4}, {954741,16,4}, {954701,20,4,false}}) end), ml.button('改动作2', function() 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} }, {{963791,0,4}, --水之忍者-德尔塔天抓 {961041,4,4}, --贵族风度 {963511,8,4}, --雇佣兵星力释放 {961351,12,4}, --洛杰星耀 {960691,16,4}, --失忆者·应援boy {950671,20,4,false}}) --DMM奖杯 end), ml.button('优化战绩[大厅]', function() fastsearch({{-128.31251525879,16,16384},{-382908368,-756,4},{-494030840,-752,4},{167772164,-800,4}},{{-476053454,-756,4,true},{-516948194,-752,4,true}}) fastsearch({{0.20000000298,16,16384},{-527478779,-528,4},{-509591552,-532,4}},{{-486535200,-544,4,true},{-301987312,-540,4,true},{-289928512,-536,4,true},{-300938736,-532,4,true},{-516948194,-528,4,true}}) fastsearch({{-128.31251525879,16,16384},{-382908368,1112,4},{-494030840,1116,4},{167772175,1028,4}},{{-476049917,1112,4,true},{-516948194,1116,4,true}}) end), --}),--1 }, -------------------------------------- --UI3 { ml.text("角色功能","#FF2A3F","20sp"), ml.button('🐔器人进化', function() q=gg.prompt({"输入氮气数量","锁定冲刺","锁定雷达","免费无冷"},{"不改氮气就别动",},{"number","checkbox","checkbox","checkbox"}) if q[1]=="不改氮气就别动" then else gg.setRanges(32) Name='锁氮气' local tb1= { {45.0,16,0}, {10.0,16,4}, {25.0,16,32}, } local tb2= { {q[1],16,28,true}, } SearchWrite(tb1,tb2,dataType) end if q[2] then gg.setRanges(32) Name='冲刺' local tb1= { {45.0,16,0}, {10.0,16,4}, {25.0,16,32}, } local tb2= { {1,4,-344,true}, } SearchWrite(tb1,tb2,dataType) end if q[3] then gg.setRanges(32) Name='雷达' local tb1= { {45.0,16,0}, {10.0,16,4}, {25.0,16,32}, } local tb2= { {0,4,-344,true}, } SearchWrite(tb1,tb2,dataType) end if q[4] then gg.setRanges(32) Name='免费无冷' local tb1= { {45.0,16,0}, {10.0,16,4}, {25.0,16,32}, } local tb2= { {200.0,16,-68,true}, {0.0,16,-32}, {0.0,16,-28}, {0.0,16,-24}, {0.0,16,-20}, {0.0,16,8}, } SearchWrite(tb1,tb2,dataType) end end), ml.button('梦魔进化', function() gg.setRanges(32) Name='老梦魇进化' local tb1= { {3420798102435528704.0,16,0}, {2.1019476964872256E-43,16,4}, } local tb2= { {0,16,-40}, {0,16,-36}, {0,16,124}, } SearchWrite(tb1,tb2,dataType) end), ml.button('茶气郎进化', function() fastsearch({ {-934560717,4,32}, {1581114487,0x4,4}, {-1,0x28,4}, },{ {9999,436,16}, },"茶郎进化") end), ml.button('云朵吸人', function() local t = {"libtersafe2.so", "Cd"} local tt = {0x28C8C, 0x1DA, 0x2AC, 0xF8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x31647C, 0x38, 0x2E8, 0x2AC, 0xF8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 99999}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x31647C, 0x38, 0x278, 0x2AC, 0xF8} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 16, value = 99999}}) gg.alert("开启成功") end), ml.button('技能冷却+免费', function() qmnb = { {["memory"] = 32}, {["name"] = "独家a内存免费"}, {["value"] = -934560717, ["type"] = 4}, {["lv"] = 1581114487,["offset"] =4, ["type"] = 4}, } qmxg = { {["value"] = 0,["offset"] =-32, ["type"] = 4, ["freeze"] = true}, {["value"] = 0.0,["offset"] =-36, ["type"] = 16, ["freeze"] = true}, {["value"] = 9999,["offset"] =-40, ["type"] = 4, ["freeze"] = true}, } xqmnb(qmnb) end), ml.button('圣女进化', function() 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 readWrite({{false,0.6000000238418579,84,16,nil,nil},{4.0,96,16}},{{0,0,16,true},{0,12,16,false},{0,16,16,false},{0,24,16,false},{0,28,16,false},{250,88,16,false},{1314,92,16,false},{5.60519386e-45,128,16,true},{0,84,16,false}},16,32,"圣女进化") end), ml.text("娱乐功能","#FF2A3F","20sp"), ml.switch("段位修改", function() local qm=gg.prompt({"请输入修改"}, {[1] = 114514}, {[1] = "text"}) if qm==nil then os.exit(print("你点击了取消")) end editData( { {["memory"] = gg.REGION_ANONYMOUS}, {["name"] = ""}, {["value"] = 900001, ["type"] = D}, {["lv"] = 910001,["offset"] =4, ["type"] = D}, {["lv"] = 0,["offset"] =8, ["type"] = D}, }, { {["value"] = qm[1],["offset"] =-44, ["type"] = D,["freeze"] = false}, } ) gg.clearResults() end), ml.switch("人物踏空", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("6.16297729e-33;0.07999999821:13", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("0.07999999821", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("10", gg.TYPE_FLOAT) gg.toast("修改成功") gg.clearResults() end), ml.switch("针改攻速", function() local print= { {['memory']=32}, {['name']='肾上腺素射速'}, {['value']=-0.25, ['type']=16}, {['lv']=-2048357704,['offset']=-16, ['type']=4}, } local qmxg= { {['value']=-1.8,['offset']=0,['type']=16}, } xqmnb(qmnb,qmxg) end), ml.switch("改文字", function() local a=gg.prompt({"改之前","改之后"},{},{"text","text"}) gg.setRanges(32) gg.searchNumber(";"..a[1], 2, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(1000) gg.editAll(";"..a[2],2) end), ml.switch("无视禁用", function() --无视禁用--方法名--public Boolean get_IsSkillDisabled() { } kq1_offset(getso("libil2cpp.so"),{{-476053504,4,0x2419850},}) end), ml.switch("消除夹子减速", function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("1320196683\n", 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() end), ml.switch("秒开一切", function() function AOC(addr,tablex,tt) for i,v in ipairs(tablex) do gg.setValues({{address=addr+v[3],flags=v[2],value=v[1]}}) end end function BOOM(So_name) return gg.getRangesList(So_name)[1].start end AOC(BOOM("libil2cpp.so"),{{-352329554 ,4 ,0x1e10e7c }}) end), ml.switch("倒地道具", function() kq1_offset(getso("libil2cpp.so"),{{-476053504,4,0x12A35F0},}) end), ml.switch("黑暗透视", function() fastsearch( {{8.0, 16, 32},--搜索值,搜索类型,内存类型 {4, -4, 4}, {1, 8, 4}, {8, 12, 4}},--偏移值,偏移量,偏移类型 {{1, 46, 4}},--修改值,偏移量,修改类型,是否冻结 "黑暗透视") end), ml.switch("独家秒赢", function() function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then gg.toast(Search[2].name..'开启失败') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then gg.toast(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.setValues(Data) gg.addListItems(Freeze) if Freezes==0 then gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据') else gg.toast(Search[2].name..'开启成功,共修改'..sum..'条数据,冻结'..Freezes..'条数据') end gg.clearResults() end local qmnb= { {['memory']=16384}, {['name']='秒结算'}, {['value']=79872964, ['type']=4}, {['lv']=79872784,['offset']=4, ['type']=4}, } local qmxg= { {['value']=-476052716,['offset']=8,['type']=4}, {['value']=-516948194,['offset']=12,['type']=4}, } xqmnb(qmnb,qmxg) end, function() local so = gg.getRangesList('libil2cpp.so')[1].start local py = 0xD567E8 setvalue(so + py, -382908368, 4) gg.toast("关闭成功") local so = gg.getRangesList('libil2cpp.so')[1].start local py = 0xD567EC setvalue(so + py, -494030840, 4) gg.toast("关闭成功") end), ml.switch("实体回血", function() LL({ {2.0, 16, 32}, {1.5, 4, 16}, {10.0, 8, 16}}, {{9999, 0, 16, false}, {9999, 8, 16, false}}) end), ml.switch("无限夹子", function() gg.clearResults() gg.setRanges(32) gg.searchNumber("3;103;104;105::13", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("103;104;105", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("110", gg.TYPE_DWORD) gg.toast("已将雇佣兵天赋变为自制夹子") gg.clearResults() gg.setRanges(32) gg.searchNumber("180;150;120;60::13", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("180;150;120;60", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("1", gg.TYPE_FLOAT) gg.toast("已将自制夹子CD变为1秒") gg.clearResults() end), ml.switch("皮卡跳跃[大厅]", function() fastsearch({ {1064613045, 4, 32}, {1.0, -4, 16}, {1062251404, 4, 4}, {1021726665, 8, 4}, {1051536686, 32, 4}, {1051620137, 36, 4}, {1051620137, 40, 4}, }, {{0, -224, 4},}, "皮卡跳跃") end), ml.switch('追捕开锁', function() qmnb = { {["memory"] = 16384}, {["name"] = "追捕开锁"}, {["value"] = 75900672, ["type"] = 4}, {["lv"] = 75900652, ["offset"] = 4, ["type"] = 4}, {["lv"] = -382908368, ["offset"] = 8, ["type"] = 4}, {["lv"] = -494030840, ["offset"] = 12, ["type"] = 4}, {["lv"] = -442544040, ["offset"] = 16, ["type"] = 4}, {["lv"] = -509591552, ["offset"] = 20, ["type"] = 4}, } qmxg = { {["value"] = -516948194, ["offset"] = 12, ["type"] = 4, ["freeze"] = false}, {["value"] = -476053503, ["offset"] = 8, ["type"] = 4, ["freeze"] = false}, } xqmnb(qmnb) end), ml.switch('护盾加血', function() local t = {"libil2cpp.so", "Cd"} local tt = {0x21A790, 0x5C, 0x10, 0x5C, 0x98} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}})gg.clearList() end), }, -------------------------------------- --UI4 { ml.text("武器功能","#FF2A3F","20sp") , ml.text("武器间隔调0.2","#FF2A3F","15sp"), ml.button("修改武器", function() local xt=gg.prompt({"武器代码:火箭筒:一级100 二级101 三级102 能量剑:一级140 二级141 三级142 迫击炮:一级110 二级111 三级112 冲锋枪:一级130 二级131 三级132 蹦蹦枪:一级150 二级151 三级152 霰弹枪:一级190 二级191 三级192 唤风镖:一级200 二级201 三级202 霸天斧:一级210 二级211 三级212 能量腕炮:一级180 二级181 三级182 特殊武器: 治疗手枪:10100 电球枪:10160 泚水枪:11130 霰弹枪:10130 蹦蹦枪:11150 像素剑:10140 盾卫攻击:10170 回旋镖:10150 自动手枪:12130 变形金刚武器: 热破-90100 威震天-90200 红蜘蛛-90300 特殊角色武器: 星辰圣女-160 黎明盾卫-170"}, {[1] = 1}) fastsearch({{1601069388, 4, 32}, {778398818, -4, 4}, {1701667150, 4, 4}, {250, 12, 4}}, {{xt[1], 20, 4, false}}) local a=ReadPointer('libil2cpp.so',{0x1E41D0,0x5C,0xC8,0x84,0xA4},2)--刷新武器 gg.edits(a,{{1,4,0,false}}) --修改值 类型 偏移 是否冻结 --ReadPointer('libil2cpp.so',{0x1E41D0,0x5C,0xC8,0x84,0xA4},2) ➠ 指针层【4】 end), ml.button('刷新武器', function() local t = {"libil2cpp.so", "Cd"} local tt = {0x1E4110, 0x5C, 0x8, 0x84, 0xA4} local ttt = S_Pointer(t, tt) gg.setValues({{address = ttt, flags = 4, value = 1}}) end), ml.text("稳定间隔","#FF2A3F","20sp") , ml.edit("稳定间隔"), ml.button("确定修改", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x216964, 0x5C, 0x10, 0x5C, 0x60} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16,freeze = true, freezeType = gg.FREEZE_IN_RANGE, freezeFrom = 0.0, freezeTo = 0.15 }}) toMusic("超稳间隔") end), ml.button('锁子弹', function() nc_offset(getso("libil2cpp.so"),{{-486539263,4,0x1112B6C},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x1112B70},}) end), ml.button('基础无后', function() local t = {"libil2cpp.so", "Cd"} local tt = {0x1E4110, 0x5C, 0x8, 0x84, 0x78} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) toMusic("基址无后") end), ml.button('穿墙射程', function() nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x111ae00},}) toMusic("开启成功") end), ml.text("迫击炮射程","#FF2A3F","15sp"), ml.edit("迫击炮射程"), ml.button("确定修改", function() 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}}) toMusic("开启成功") end), ml.text("腕能炮范围","#FF2A3F","15sp"), ml.edit("腕能炮范围"), ml.button("确定修改", function() fastsearch({ {5,16,32}, {1,4,16}, {0,8,16}}, {{a[1],4,16, false}}) gg.alert("开启成功") end), ml.button('子弹加速', function() gg.clearResults() gg.setRanges(16384) gg.searchNumber("-1.54742459e26;0.0;-1.30951038e25;-1.30684047e21::", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.searchNumber("0", gg.TYPE_FLOAT, false, gg.SIGN_EQUAL, 0, -1) gg.getResults(100) gg.editAll("17.542", gg.TYPE_FLOAT) gg.toast("宝~已修改成功,祝您游戏愉快~") gg.clearResults() toMusic("开启成功") end), ml.button('武器震动', function() NJ=gg.prompt({"初始数值为0.1,输入你想要的振动数值"},{[1]=""}) readWrite({{false,0.800000011920929,0,16,nil,nil},{0.009999999776482582,8,16}},{{99,4,16,true}},16,32,"武器振动") toMusic("开启成功") end), ml.button('武器特效', function() NJ=gg.prompt({"初始数值为0.1,输入你想要的特效大小"},{[1]=""}) readWrite({{false,5.0,0,16,nil,nil},{1.5,28,16}},{{99,96,16,false}},16,32,"特效大小") toMusic("开启成功") end), ml.button('填充子弹', function() local t = {"libil2cpp.so", "Cd"} local tt = {0x1FCC40, 0x5C, 0x10, 0x84, 0x8C} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = -1, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x1FCC40, 0x5C, 0x10, 0x84, 0x94} local ttt = S_Pointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) end), ml.button('迫击炮范围', function() 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}}, {{99, -36, 16, false}}) toMusic("开启成功") end), ml.button('霸天全屏', function() local so = gg.getRangesList("libil2cpp.so")[1].start setvalue(so+0x14efb4c,"-476053503") setvalue(so+0x14efb50,"~A BX LR") toMusic("开启成功") end), ml.button('更新道具', function() --类名:InGameStore --方法:protected Void Update() { } --操作码~A B 0x地址 --跳转方法:private Void UpdateNextCard() { } kqorgb_offset(getso("libil2cpp.so"),{{-369094159,4,0x12A2F8C},}) kqorgb_offset(getso("libil2cpp.so"),{{-369094159,4,0x12A2F8C},}) kqorgb_offset(getso("libil2cpp.so"),{{-382906896,4,0x12A2F8C},}) kqorgb_offset(getso("libil2cpp.so"),{{-382906896,4,0x12A2F8C},}) end), ml.button('车轮加速', function() nc_offset(getso("libil2cpp.so"),{{-476052411,4,0x22eb1b8},}) nc_offset(getso("libil2cpp.so"),{{-516948194,4,0x22eb1b8},}) end), ml.text("进化功能","#FF2A3F","20sp"), ml.button('火箭筒', function() hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==90100 then value1=j end end hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==100 then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) toMusic("开启成功") end), ml.button('迫击炮', function() hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==90100 then value1=j end end hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==110 then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) toMusic("开启成功") end), ml.button('腕能炮', function() b=90100 hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==b then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) b=180 hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==b then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) end), ml.button('唤风飙', function() hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==90100 then value1=j end end hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==200 then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) toMusic("开启成功") end), ml.button('毁灭炮', function() hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==90100 then value1=j end end hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==50008 then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) toMusic("开启成功") end), ml.button('蹦蹦枪', function() hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==90100 then value1=j end end hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==152 then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) toMusic("开启成功") end), ml.button('霸天斧', function() b=90100 hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==b then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) b=210 hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==b then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) end), ml.button('能量剑', function() b=90100 hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==b then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) h6=gg.getValues({{address=addr,flags=4}}) b=140 hhh={} hhh1={} local addr = readPointer("libil2cpp.so", {2184836,100,4,92,32,24,12,24}, 2) for y=0,70 do hhh[#hhh+1]={address=addr+0x10*y,flags=4} hhh1[#hhh1+1]={address=addr+0x10*y+4,flags=4} end h=gg.getValues(hhh) h1=gg.getValues(hhh1) for j,conduct in ipairs(h) do if conduct.value==b then value1=j end end local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168}, 2) gg.setValues({{address=addr,flags=4,value =h1[value1].value}}) local addr = readPointer("libil2cpp.so", {2189668,92,16,92,168,0x34}, 2) gg.setValues({{address=addr,flags=4,value =h6[1].value }}) end), ml.button('滑板', function() 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 --类 SkateboardController --方法 Update --跳转方法 StartShift nc_offset(getso("libil2cpp.so"),{{-352323132,4,0x1465bf0},}) --nc_offset(getso("libil2cpp.so"),{{-382906384,4,0x1465bf0},}) end), } --UI5是搜索音乐 }) -------------------------------------- bloc = luajava.getBlock() bloc('join')