gg.killGG() do if type(getrlyunyz) ~= 'function' then gg.alert('请使用RLGG执行') os.exit() return end local info = { example_version = '1.0.3', name = '黎明逃跑', appid = '99609', appkey = '9w7dzKFBqQ9v3glf', rc4key = 'Zq9f088k65tfpQ96', version = '1.0', mi_type = '3' } local rlyunyz = getrlyunyz(info) local ret = rlyunyz.start() if not ret or not isTable(ret) or ret.sign ~= '66c62d635d4b2d1f24e40132254a3710' then os.exit() return end end draw.setStyle("填充") draw3 = require("draw3") text1 = draw3.text("Doro", 100, 150) draw.setColor("#f9f900") draw3.text("", 300, 235) draw.setColor("#f9f900") text1 = draw3.text("@limingsy", 100, 200) draw.setColor("#f9f900") text1 = draw3.text("现作者时光 阿泽", 100, 250) draw.setColor("#f9f900") draw3.text("", 300, 295) draw.setColor("#f9f900") text1 = draw3.text("", 100, 250) draw.setColor("#f9f900") draw3.text("", 300, 358) draw.setColor("#f9f900") draw.setColor("#f9f900") draw3.text("", 300, 295) local json =json--调用 local g = {} g.file = gg.getFile() g.sel = nil gqlb={"请先搜索歌曲",} idb={"1010"} SN,gc=1,nil g.config = gg.getFile():gsub("%lua$", "").."cfg" function bei() g.data = loadfile("音乐配置"..g.config) if g.data ~= nil then g.sel = g.data() g.data = nil end if g.sel == nil then g.sel = {"","10"} end end bei() function readPointer(name, offset, i) local re = gg.getRangesList(name) local x64 = gg.getTargetInfo().x64 local va = {[true]=32, [false]=4} if re[i or 1] then local addr = re[i or 1].start + offset[1] for i = 2, #offset do addr = gg.getValues({{address=addr, flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end ---- function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end--静态配置 function start(name,sl) fw=gg.makeRequest("http://music.163.com/api/search/get?s="..name.."&type=1&offset=0&total=true&limit="..sl) return fw end function play(id,name) gg.toast("正在播放音乐:"..name,true) gg.playMusic("http://music.163.com/song/media/outer/url?id="..id..".mp3") end function Play(gqlb,idb) SN = gg.choice(gqlb,nil,ts) if SN == nil then XGCK =-1 else sn=gg.choice({"播放歌曲","播放并下载"},nil,"歌曲:"..gqlb[SN]) if sn == nil then end if sn == 1 then play(idb[SN],gqlb[SN]) end if sn == 2 then local XEY=gg.makeRequest("http://music.163.com/song/media/outer/url?id="..idb[SN]..".mp3").content local XEY1=gg.getFile():gsub("[^/]+$","")..gqlb[SN]..".mp3" io.open(XEY1,"w"):write(XEY) gg.alert("提示:\n\n音乐已成功下载位置:\n\n"..XEY1) end XGCK=-1 end end function zjson(jsonr) local str = jsonr local pattern = "\"[%w]+\":" string.gsub(str, pattern, function(v) if string.find(str, v) then str = string.gsub(str, v, string.gsub(v, "\"", "")) end end) str = string.gsub(str, ":", "=") str = string.gsub(str, "%[", "{") str = string.gsub(str, "%]", "}") local data = "-- WSG PRO 1.0.9(109)\nreturn " .. str local res = load(data)() return res end function json(con) res=zjson(con) zd=res.result.songCount pd=go3-zd if pd <= 0 then else go3=zd end ts="《"..go1.."》找到"..zd.."首歌曲,当前显示"..go3.."首" gqlb={} idb={} for i=1,go3 do gqlb[i]=res.result.songs[i].name idb[i]=res.result.songs[i].id end end ----------------------------------------------------------------个音乐个--------------------------------------------------------------- function tst(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 gg.sleep(2000) import("android.media.AudioManager") audi = context:getSystemService("audio") audiotype = { AudioManager.STREAM_ALARM, --手机闹铃的声音 AudioManager.STREAM_MUSIC, --手机音乐的声音 AudioManager.STREAM_NOTIFICATION, --系统提示的通知 AudioManager.STREAM_RING, --电话铃声的声音 AudioManager.STREAM_SYSTEM, --手机系统的声音 AudioManager.STREAM_VOICE_CALL, --语音电话的声音 AudioManager.STREAM_DTMF, --DTMF音调的声音 --AudioManager.STREAM_BLUETOOTH_SCO, } yinl = {} for i = 1,#audiotype do yinl[i] = {} yinl[i].type = audiotype[i] yinl[i].min = audi:getStreamMinVolume(audiotype[i]) yinl[i].max = audi:getStreamMaxVolume(audiotype[i]) yinl[i].now = audi:getStreamVolume(audiotype[i]) end yltype = 0 function jianting3(func) yinln = {} for i = 1,#audiotype do yinln[i] = {} yinln[i].type = audiotype[i] yinln[i].now = audi:getStreamVolume(audiotype[i]) if yinln[i].now > yinl[i].now then yinl[i].now = yinln[i].now if yltype == 1 then yltype = 0 func() end elseif yinln[i].now < yinl[i].now then yinl[i].now = yinln[i].now if yltype == 0 then yltype = 1 func() end end end end floatWindow=mainLayout qiehuan = function() if qhkai == 1 then yinll = 1 qhkai = 0 huiz() luajava.runUiThread(function() floatWindow:setVisibility(View.VISIBLE) changan.controlBig(mainLayout,600) end) else qhkai = 1 yinll = 0 draw.remove() luajava.runUiThread(function() changan.controlSmall(mainLayout,600) end) gg.sleep(800) luajava.runUiThread(function() floatWindow:setVisibility(View.GONE) end) end end vibra = context:getSystemService(Context.VIBRATOR_SERVICE) changan = {} local changan = changan local android = import("android.*") write = file.write function 获取图片(txt) ntxt = string.sub(string.gsub(txt,"/","."),-10,-1) if string.find(tostring(txt),"http") ~= nil then if panduan("/sdcard/h神/图片/"..ntxt) == false then file.download(txt,"/sdcard/h神/图片/"..ntxt) end txt = "/sdcard/h神/图片/"..ntxt --txt="https://www.baidu.com/img/flexible/logo/pc/result.png" end return luajava.getBitmapDrawable(txt) end function panduan(rec) fille,err = io.open(rec) if fille == nil then return false else return true end end function checkimg(tmp) if panduan("/sdcard/h神/图片/"..tmp) ~= true then gg.toast("正在下载资源"..tmp.."\n请耐心等待") luajava.download("http://a.aqv3.cn/2fdbgV"..tmp,"/sdcard/h神/图片/"..tmp) end end ckimg = { "pubgT", "pubgG", "pubgY", "pubgR" } for i = 1,#ckimg do jindu = i checkimg(ckimg[i]) gg.toast("正在加载资源") end context = app.context window = context:getSystemService("window") function getLayoutParams() LayoutParams = WindowManager.LayoutParams layoutParams = luajava.new(LayoutParams) if Build.VERSION.SDK_INT >= 26 then layoutParams.type = LayoutParams.TYPE_APPLICATION_OVERLAY else layoutParams.type = LayoutParams.TYPE_PHONE end layoutParams.format = PixelFormat.RGBA_8888 layoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE layoutParams.gravity = Gravity.TOP | Gravity.LEFT layoutParams.width = LayoutParams.WRAP_CONTENT layoutParams.height = LayoutParams.WRAP_CONTENT return layoutParams end function getj6() jianbian6 = luajava.new(GradientDrawable) jianbian6:setCornerRadius(20) jianbian6:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbian6:setColors({ 0xffffffff, 0xffffffff }) jianbian6:setStroke(0, "0xdd000000") return jianbian6 end hanshu = function(v, event) local Action = event:getAction() if Action == MotionEvent.ACTION_DOWN then isMove = false RawX = event:getRawX() RawY = event:getRawY() x = mainLayoutParams.x y = mainLayoutParams.y elseif Action == MotionEvent.ACTION_MOVE then isMove = true mainLayoutParams.x = tonumber(x) + (event:getRawX() - RawX) mainLayoutParams.y = tonumber(y) + (event:getRawY() - RawY) window:updateViewLayout(floatWindow, mainLayoutParams) end end slctb1 = luajava.loadlayout({ GradientDrawable, color = "#661E1C27", cornerRadius = 20 }) slcta1 = luajava.loadlayout({ GradientDrawable, color = "#331E1C27", cornerRadius = 20 }) function getSelector3() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta1) selector:addState({ -android.R.attr.state_pressed }, slctb1) return selector end slctb = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 0 }) slcta = luajava.loadlayout({ GradientDrawable, color = "0xff0086F1", cornerRadius = 4 }) slctc = luajava.loadlayout({ GradientDrawable, color = "#ffffffff", cornerRadius = 16 }) slctd = luajava.loadlayout({ GradientDrawable, color = "#ddE0E0E0", cornerRadius = 16 }) slcte = luajava.loadlayout({ GradientDrawable, color = "#11ffffff", cornerRadius = 12 }) slctf = luajava.loadlayout({ GradientDrawable, color = "#aa1E1C27", cornerRadius = 12 }) function getSelector() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slcta) selector:addState({ -android.R.attr.state_pressed }, slctb) return selector end function getSelector2() selector = luajava.getStateListDrawable() selector:addState({ android.R.attr.state_pressed }, slctd) selector:addState({ -android.R.attr.state_pressed }, slctc) return selector end 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() changan.menu = function(sview) if isswitch then return false end for i = 1, #stab do _ENV["jmb" .. i] = getSelector() end isswitch = true cebian = { LinearLayout, id = "侧边", visibility = "gone", layout_height = "wrap_content", layout_width = "88dp", orientation = "vertical", background = { GradientDrawable, color = "#c7c7c7", cornerRadius = 10 }, } for i = 1,#stab do cebian[#cebian+1] = { LinearLayout, id = "jm"..i, gravity = "center", layout_height = "30dp", layout_width = "88dp", layout_marginTop = "3dp", layout_marginBottom = "3dp", background = getSelector(), { TextView, text = stab[i], gravity = "center", layout_height = "25dp", layout_width = "88dp", onClick = function() 切换(i) end }} end cebian = luajava.loadlayout(cebian) for i = 1,#stab do _ENV["layout"..i] = luajava.loadlayout({ ScrollView, fillViewport = "true", --padding = "10dp", id = "layout"..i, visibility = "gone", gravity = "center", layout_width = "250dp", layout_height = "230dp", orientation = "horizontal", { LinearLayout, id = "layoutm"..i, background = getj6(), layout_marginRight = "5dp", layout_marginLeft = "5dp", layout_width = "240dp", orientation = "vertical", gravity = "center_horizontal", } }) end ckou = { LinearLayout, id = "chuangk", visibility = "visible", layout_width = "wrap_content", layout_height = "wrap_content", orientation = "horizontal", { LinearLayout, orientation = "vertical", padding = "2dp", { LinearLayout, layout_width = "88dp", layout_height = "42dp", gravity = "center", --background=getj7(), { ImageView, id = "control", background = 获取图片(xfcpic), --src = 0x7F02006B, --layout_width = "50dp", --layout_height = "50dp", layout_width = "40dp", layout_height = "40dp", } }, cebian, {TextView, id="titlet", visibility="gone", gravity="center", layout_width="fill_parent", layout_height="wrap_content", text=左下角文字, textColor=左下角颜色, layout_marginTop="40dp", } }, } for i = 1,#stab do ckou[#ckou+1] = _ENV["layout"..i] end ckou = luajava.loadlayout(ckou) floatWindow = { LinearLayout, id = "motion", layout_width = "wrap_content", orientation = "vertical", gravity = "center_vertical", layout_height = "wrap_content", { LinearLayout, id="xt3", visibility="gone", layout_width = "match_parent", layout_height = "8dp", orientation = "horizontal", gravity = "center", padding = "8dp", }, ckou, { LinearLayout, layout_height = "8dp", layout_width = "90dp", } } local function invoke() local ok local RawX, RawY, x, y mainLayoutParams = getLayoutParams() floatWindow = luajava.loadlayout(floatWindow) local function invoke2() block('start') for k = 1,#stab do for i = 1,#sview[k] do _ENV["layoutm"..k]:addView(sview[k][i]) end end window:addView(floatWindow, mainLayoutParams) block('end') end local runnable = luajava.getRunnable(invoke2) local handler = luajava.getHandler() handler:post(runnable) block('join') control.onClick = function() 隐藏() 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 for i = 1,#stab do _ENV["jm"..i].onTouch = hanshu end end invoke(swib1,swib2) jm1:setBackground(slcta) gg.setVisible(false) luajava.setFloatingWindowHide(true) end function changan.line() rest = luajava.loadlayout({ LinearLayout, layout_width = "fill_parent", layout_height = "1dp", background = "#C2CAD7", }) return rest end function changan.line2() rest = luajava.loadlayout({ LinearLayout, layout_width = "180dp", layout_height = "5dp", layout_marginLeft = "35dp", background = "#0087FF", layout_marginTop = "10dp", }) return rest end function getblue() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(6) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff, 0xffffffff }) jianbians:setStroke(4, "0xff0086F1") return jianbians end function getShape3() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff, 0xffffffff }) jianbians:setStroke(4, "0x77000000") return jianbians end function getShape5() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(4) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff, 0xff007AFF }) jianbians:setOrientation(GradientDrawable.Orientation.TL_BR) jianbians:setStroke(2, "0x77000000") return jianbians end function getShape0(tmp0,tmp1,tmp2,tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ tmp1,tmp2 }) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(5,tmp3)--边框宽度和颜色 return jianbians end function getShape() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(90) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xff49C263, 0xff49C263 }) jianbians:setStroke(0, "0xffffffff") return jianbians end function getShape2() jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(10) jianbians:setShape(GradientDrawable.RECTANGLE) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors({ 0xffffffff, 0xffffffff }) jianbians:setStroke(8, "0xff000000") return jianbians end corbk = true 当前ui = 1 显示 = 0 beij = luajava.new(GradientDrawable) beij:setCornerRadius(25) beij:setGradientType(GradientDrawable.LINEAR_GRADIENT) beij:setColors({ 0xfeEFEFEF, 0xfeEFEFEF }) beij:setStroke(0, "0x44FFffff") beij2 = luajava.loadlayout({ GradientDrawable, color = "#001E1C27", cornerRadius = 10 }) 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("https://cccimg.com/view.php/65c8a69db71d012a8b5d30bfcd0a7546.png")) else tview:setVisibility(View.GONE) ttview:setBackground(luajava.getBitmapDrawable("https://cccimg.com/view.php/65c8a69db71d012a8b5d30bfcd0a7546.png")) end end function changan.box2(views, boxi) local tid = "box" .. guid() local ttid = tid .. "678" firadio = { LinearLayout, layout_width = "250dp", layout_height = "wrap_content", layout_marginTop = "2dp", layout_marginBottom = "2dp", orientation = "vertical", } if type(views[1]) == "string" or type(views[1]) == "number" then firadio[#firadio + 1] = { LinearLayout, layout_width = "fill_parent", layout_height = "28dp", gravity = "center_vertical", layout_marginTop = "2dp", layout_marginBottom = "4dp", onClick = function() visi(tid, ttid) end, background = getSelector3(), { ImageView, layout_marginLeft = "10dp", id = luajava.newId(ttid), --src = 0x7F0200A6, background = "https://cccimg.com/view.php/65c8a69db71d012a8b5d30bfcd0a7546.png", layout_width = "20dp", layout_height = "20dp", layout_marginTop = "0dp", }, { TextView, text = views[1], textSize = "16sp", layout_marginLeft = "15dp", layout_width = "100dp", textColor = "#ffffff", gravity = "left", }, } else gg.alert("changan.box第一个参数必须是string") os.exit() end if boxi then boxi = "visible" else boxi = "gone" end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", visibility = boxi, 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 changan.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 if views[1] ~= "" then tsiz = "14sp" else tsiz = "0sp" end firadio[#firadio + 1] = { LinearLayout, layout_height = "wrap_content", layout_width = "fill_parent", { TextView, text = views[1], textSize = tsiz, layout_width = "match_parent", textColor = "#000000", gravity = "center", }, } else end radios = { LinearLayout, layout_marginLeft = "0dp", layout_marginRight = "0dp", orientation = "vertical", padding = "0dp", background = getj6(), layout_width = "fill_parent", } for i = 2, #views do radios[#radios + 1] = views[i] if i ~= #views then radios[#radios + 1] = changan.line() end end firadio[#firadio + 1] = radios return luajava.loadlayout(firadio) end 当前ui = 1 function 切换(x) 当前ui = x luajava.runUiThread(function() for i = 1,#stab do _ENV["jm"..i]:setBackground(slctb) _ENV["layout"..i]:setVisibility(View.GONE) end _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) _ENV["jm"..当前ui]:setBackground(slcta) YoYoImpl:with("FadeIn"):duration(200):playOn(_ENV["layout"..当前ui]) end) end YoYoImpl = luajava.getYoYoImpl() function 隐藏() luajava.runUiThread(function() if tonumber(tostring(cebian:getVisibility())) == 8.0 then --chuangk:setVisibility(View.VISIBLE) xt3:setVisibility(View.VISIBLE) titlet:setVisibility(View.VISIBLE) cebian:setVisibility(View.VISIBLE) mainLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL window:updateViewLayout(floatWindow, mainLayoutParams) YoYoImpl:with("SlideInDown"):duration(200):playOn(cebian) _ENV["layout"..当前ui]:setVisibility(View.VISIBLE) YoYoImpl:with("FadeIn"):duration(800):playOn(_ENV["layout"..当前ui]) floatWindow:setBackground(beij) else mainLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE window:updateViewLayout(floatWindow, mainLayoutParams) xt3:setVisibility(View.GONE) titlet:setVisibility(View.GONE) floatWindow:setBackground(beij2) --chuangk:setVisibility(View.GONE) cebian:setVisibility(View.GONE) _ENV["layout"..当前ui]:setVisibility(View.GONE) end end) end function 退出() window:removeView(floatWindow) luajava.setFloatingWindowHide(false) bloc("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 chazhi = {} chajv = {} function changan.seek(name, bian, smin, smax, nows) _ENV[bian] = nows thum = getShape3() thum:setSize(80, 80) 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 = "fill_parent", layout_height = "36dp", { LinearLayout, layout_width = "fill_parent", layout_hight = "fill_parent", layout_marginTop = "5dp", layout_marginBottom = "5dp", gravity = "center_vertical", { TextView, gravity = "top", textColor = "#c7c7c7", textSize = "16sp", text = name .. ":" .. nows, id = luajava.newId(names), layout_width = "100dp", layout_marginLeft = "10dp", layout_marginRight = "0dp", }, { SeekBar, layout_width = "140dp", id = luajava.newId(name .. "seekbar"), min = truesmin, max = truesmax, progress = tnows, progressDrawable = { getShape5() }, thumb = thum, progressHeight = "2dp", onSeekBarChange = { onProgressChanged = function(SeekBar, var2, var3) if not var3 then return end local resultvar = tonumber(string.sub(var2, 0, -3)) - chazhi[bian] luajava.runUiThread(function() luajava.getIdValue(names):setText(name .. ":" .. resultvar) end) _ENV[bian] = resultvar end, }, }, }, }) return rest end function getShape(tmp0, tmp1, tmp2, tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(4, tmp3) return jianbians end function getShape2(tmp0, tmp1, tmp2, tmp3) jianbians = luajava.new(GradientDrawable) jianbians:setCornerRadius(tmp0) jianbians:setGradientType(GradientDrawable.LINEAR_GRADIENT) jianbians:setColors(tmp1) jianbians:setOrientation(GradientDrawable.Orientation.LEFT_RIGHT) jianbians:setStroke(8, tmp3) return jianbians end checkbg = getShape(45, { 0xffB8B8B8, 0xffB8B8B8 }, 4, 0xffB8B8B8) checkbga = getShape(45, { 0xff1186F1, 0xff1186F1 }, 4, 0xff1186F1) checkbg1 = getShape2(45, { 0xffffffff, 0xffffffff }, 4, 0xffffffff) checkbg2 = getShape2(45, { 0xffffffff, 0xffffffff }, 4, 0xffffffff) function 开关3(name, func1, func2, nid) name = name .. guid() _ENV[name] = "关" if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then luajava.runUiThread(function() luajava.getIdValue(nid .. "k"):setVisibility(View.GONE) luajava.getIdValue(nid .. "g"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbga) end) _ENV[name] = "开" vibra:vibrate(10) pcall(func1) else luajava.runUiThread(function() luajava.getIdValue(nid .. "g"):setVisibility(View.GONE) luajava.getIdValue(nid .. "k"):setVisibility(View.VISIBLE) luajava.getIdValue(nid):setBackground(checkbg) end) _ENV[name] = "关" vibra:vibrate(10) pcall(func2) end end end end function changan.switch(name, func1, func2, yans) nid = name .. guid() if not yans then yans = "#00A4FF" end local func = 开关3(name, func1, func2, nid) if not name then name = "未设置" end rest = luajava.loadlayout({ LinearLayout, layout_width = "fill_parent", layout_height = "36dp", gravity = "center_vertical", { LinearLayout, layout_width = "fill_parent", layout_height = "35dp", gravity = "center_vertical", { TextView, gravity = "top", text = name, textColor = yans, textSize = "16sp", layout_width = "170dp", layout_marginLeft = "10dp", layout_marginRight = "10dp", }, { FrameLayout, id = luajava.newId(nid), background = checkbg, onClick = function() luajava .newThread(function() func() end) :start() end, layout_width = "43dp", layout_height = "wrap_content", padding = "1dp", { LinearLayout, layout_gravity = "left", id = luajava.newId(nid .. "k"), background = checkbg1, onClick = function() luajava .newThread(function() func() end) :start() end, layout_width = "21dp", layout_height = "21dp", }, { LinearLayout, visibility = "gone", layout_gravity = "right", id = luajava.newId(nid .. "g"), background = checkbg2, onClick = function() luajava .newThread(function() func() end) :start() end, layout_width = "21dp", layout_height = "21dp", }, }, }, }) return rest end function changan.edit(name) _ENV[name] = name .. guid() if not name then name = "点击输入文字" end rest = luajava.loadlayout({ LinearLayout, layout_width = "fill_parent", layout_height = "40dp", { FrameLayout, layout_width = "fill_parent", layout_hight = "fill_parent", gravity = "center", { EditText, gravity = "top", background = getShape(), hint = name, textColor = "#383C3F", gravity = "center", textSize = "15sp", id = luajava.newId(_ENV[name]), layout_width = "fill_parent", }, { LinearLayout, layout_width = "220dp", layout_height = "2dp", layout_gravity = "center", background = "#0087FF", layout_marginTop = "10dp", }, }, }) luajava.getIdValue(_ENV[name]):setHintTextColor(0xff787878) return rest end function changan.radio(radio) firadio = { LinearLayout, layout_width = "fill_parent", layout_hight = "fill_parent", padding = "10dp", orientation = "vertical", } if type(radio[1]) == "string" or type(radio[1]) == "number" then firadio[#firadio + 1] = { TextView, text = radio[1] } end radios = { RadioGroup, background = getShape(), 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 changan.button(txt, func, yans) if not yans then yans = "#00A4FF" end if not txt then txt = "未设置" end return luajava.loadlayout({ LinearLayout, layout_width = "fill_parent", layout_hight = "30dp", background = getSelector2(), onClick = function() luajava.newThread(func):start() end, { LinearLayout, layout_width = "fill_parent", layout_hight = "wrap_content", gravity = "center_horizontal", layout_marginTop = "6dp", layout_marginBottom = "6dp", { TextView, textStyle = "bold", textColor = yans, text = txt, textSize = "15sp", layout_width = "wrap_content" }, }, }) end function changan.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, textColor = color, layout_width = "wrap_content", }) end corb = true function changan.setedit(name, txt) txt = tostring(txt) luajava.runUiThread(function() luajava.getIdValue(_ENV[name]):setText(txt) end) end function changan.getedit(name) edit = tostring(luajava.getIdValue(_ENV[name]):getText()) return edit end function 开关(name, func1, func2) if func1 == nil then func1 = "" end if func2 == nil then func2 = "" end if type(func1) == "function" then return function() namers = _ENV[name] if namers ~= "开" then _ENV[name] = "开" pcall(func1) else _ENV[name] = "关" pcall(func2) end end end end --========================================================================= gg.alert('您已激活,欢迎使用Doro,注意演戏') 左下角文字="Doro" 左下角颜色="#000000" stab = { "公告", "常用", "功能", "设置"} xfcpic = "https://www.mpimg.cn/view.php/eefcbc82a71e24c7302cb2d72875a49c.jpg" changan.menu({ { changan.box({ "", changan.button("选择进程", function() string.toMusic('选择进程') gg.killGG() gg.setProcessX() end), changan.button("公告", function() gg.killGG() gg.alert('8.37版本 防封都是按7723版本抓的其他版本也能用吧 演戏即可 别吃举报 测试防封拉闸正常') end), changan.button("获取配置", function() gg.killGG() 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 local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = gg.TYPE_BYTE,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end function S_Pointer(t_So, t_Offset, _bit) local sjyy= cnm[math.random(1,#cnm)] local g=os.clock() 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 gg.toast("开启成功\n用时:"..os.clock()-g.."秒\n"..sjyy.."") end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function getcpp() local xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {xa=xax} end xa=getcpp().xa so=gg.getRangesList('libil2cpp.so')[xa].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 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 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 = '-698416192' gg.setValues(tt) end function BaseAddressK(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 = '-1459531788' gg.setValues(tt) end function BaseAddressS(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 = '-117438475' gg.setValues(tt) end function BaseAddressX(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 = '-1459525638' gg.setValues(tt) 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 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 mhpz(addr, Table, name) local Table1 = {} local name = {} local namet='' for k, v in ipairs(Table) do local value = {address = addr + v[1], flags = 4} Table1[#Table1 + 1] = value end pf=gg.getValues(Table1) for y,m in ipairs(pf) do for i,v in ipairs(allSkin) do if m.value == v[2] then m.value=v[3] table.insert(name,v[1]) end end end if #name == 0 then gg.toast('开启失败,可能不是局内') else for i=1,#name do namet=namet..'第'..i..'张道具卡为: '..name[i]..'\n' end gg.toast('当前获取到您的道具卡为\n'..namet..'开启成功') gg.setValues(pf) 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 so = gg.getRangesList('libil2cpp.so')[2].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 so = gg.getRangesList('libil2cpp.so')[2].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 function getcpp() local xax local ranges = gg.getRangesList("libil2cpp.so") for k, v in ipairs(ranges) do local xa = gg.getValues({{address = v.start, flags = 4}})[1].value if xa == "1179403647" and v.state == "Xa" then xax = k end end return {xa = xax} end xa=getcpp().xa so = gg.getRangesList('libil2cpp.so')[xa].start function Lib(address, value) local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value gg.setValues(tt) 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 end), changan.button("注入防一", function() gg.killGG() local so = gg.getRangesList('libil2cpp.so')[2].start local 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 BaseAddressY(0x25F5840,"-763363328") BaseAddressY(0x25F5844,"-698416192") BaseAddressY(0x25F5840,"-763363328") BaseAddressY(0x25F5844,"-698416192") BaseAddressY(0x4dfb434,"-698416192") BaseAddressY(0x7db72a8,"-698416192") BaseAddressY(0x7db6db0,"-698416192") BaseAddressY(0x4cb927c,"-698416192") BaseAddressY(0x6ec0118,"-698416192") BaseAddressY(0x4cb6f68,"-698416192") BaseAddressY(0x37b4a90,"-698416192") BaseAddressY(0x6334b08,"-698416192") BaseAddressY(0x1f34f40,"-698416192") BaseAddressY(0x58AF5B4,"-763363328") BaseAddressY(0x58AF604,"-698416192") BaseAddressY(0x4DFC15C,"-698416192") BaseAddressY(0x4DFC0BC,"-698416192") BaseAddressY(0x2C804B0,"-698416192") BaseAddressY(0x2E1C98C,"-698416192") BaseAddressY(0x5D45DA8,"-698416192") BaseAddressY(0x5D47A30,"-698416192") BaseAddressY(0x5B97454,"-698416192") BaseAddressY(0x5781538,"-698416192") BaseAddressY(0x57831C0,"-698416192") BaseAddressY(0x5934004,"-698416192") BaseAddressY(0x5934CDC,"-698416192") BaseAddressY(0x5931244,"-698416192") BaseAddressY(0x5807A8C,"-698416192") BaseAddressY(0x5D77378,"-763363328") BaseAddressY(0x5D772EC,"-763363328") BaseAddressY(0x5D774B8,"-763363328") BaseAddressY(0x5D775D8,"-763363328") BaseAddressY(0x5D776A0,"-763363328") BaseAddressY(0x5D777D8,"-763363328") BaseAddressY(0x5D778F8,"-763363328") BaseAddressY(0x5D773F4,"-763363328") BaseAddressY(0x5D77868,"-763363328") BaseAddressY(0x5D77860,"-763363328") gg.toast("Doro注入成功") end), changan.button("注入防二", function() gg.killGG() BaseAddressY(0x58C1C50,"-698416192") BaseAddressY(0x4E7A368,"-698416192") BaseAddressY(0x58C93FC,"-698416192") BaseAddressY(0x682F278,"-698416192") if gg.getRangesList("libunity.so:bss")[1] then local t = {} t[1] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x6E77C; -- 数值地址:0x765F2EC77C t[2] = gg.getRangesList("libunity.so:bss")[1]["start"] + 0x6E854; -- 数值地址:0x765F2EC854 gg.addListItems({ [1] = { address = t[1], flags = 4, value = 512, freeze = true, }, [2] = { address = t[2], flags = 4, value = 512, freeze = true, }, }) gg.toast("Doro注入成功") end end), changan.button("注入测试", function() gg.killGG() if gg.getRangesList("libil2cpp.so")[1] then local t = {} t[1] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E74; -- 数值地址:0x76456DCE74 t[2] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E78; -- 数值地址:0x76456DCE78 t[3] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E7C; -- 数值地址:0x76456DCE7C t[4] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E7F; -- 数值地址:0x76456DCE7F t[5] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E84; -- 数值地址:0x76456DCE84 t[6] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E88; -- 数值地址:0x76456DCE88 t[7] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E8C; -- 数值地址:0x76456DCE8C t[8] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E90; -- 数值地址:0x76456DCE90 t[9] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E94; -- 数值地址:0x76456DCE94 t[10] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E98; -- 数值地址:0x76456DCE98 t[11] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33E9C; -- 数值地址:0x76456DCE9C t[12] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EA0; -- 数值地址:0x76456DCEA0 t[13] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EA4; -- 数值地址:0x76456DCEA4 t[14] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EA8; -- 数值地址:0x76456DCEA8 t[15] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EAC; -- 数值地址:0x76456DCEAC t[16] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EB0; -- 数值地址:0x76456DCEB0 t[17] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EB4; -- 数值地址:0x76456DCEB4 t[18] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EB8; -- 数值地址:0x76456DCEB8 t[19] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EBC; -- 数值地址:0x76456DCEBC t[20] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EC0; -- 数值地址:0x76456DCEC0 t[21] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EC8; -- 数值地址:0x76456DCEC8 t[22] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33ECC; -- 数值地址:0x76456DCECC t[23] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33ED0; -- 数值地址:0x76456DCED0 t[24] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33ED4; -- 数值地址:0x76456DCED4 t[25] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33ED8; -- 数值地址:0x76456DCED8 t[26] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EDC; -- 数值地址:0x76456DCEDC t[27] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EE0; -- 数值地址:0x76456DCEE0 t[28] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EE4; -- 数值地址:0x76456DCEE4 t[29] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB33EE8; -- 数值地址:0x76456DCEE8 t[30] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB341F4; -- 数值地址:0x76456DD1F4 t[31] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB341F8; -- 数值地址:0x76456DD1F8 t[32] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB341FC; -- 数值地址:0x76456DD1FC t[33] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34200; -- 数值地址:0x76456DD200 t[34] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34204; -- 数值地址:0x76456DD204 t[35] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB342B8; -- 数值地址:0x76456DD2B8 t[36] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB342BC; -- 数值地址:0x76456DD2BC t[37] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB342BF; -- 数值地址:0x76456DD2BF t[38] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34678; -- 数值地址:0x76456DD678 t[39] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3467C; -- 数值地址:0x76456DD67C t[40] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34680; -- 数值地址:0x76456DD680 t[41] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34684; -- 数值地址:0x76456DD684 t[42] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34688; -- 数值地址:0x76456DD688 t[43] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3468C; -- 数值地址:0x76456DD68C t[44] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34690; -- 数值地址:0x76456DD690 t[45] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34694; -- 数值地址:0x76456DD694 t[46] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34698; -- 数值地址:0x76456DD698 t[47] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3469C; -- 数值地址:0x76456DD69C t[48] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346A0; -- 数值地址:0x76456DD6A0 t[49] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346A4; -- 数值地址:0x76456DD6A4 t[50] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346A8; -- 数值地址:0x76456DD6A8 t[51] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346AC; -- 数值地址:0x76456DD6AC t[52] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346B0; -- 数值地址:0x76456DD6B0 t[53] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346B4; -- 数值地址:0x76456DD6B4 t[54] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346B8; -- 数值地址:0x76456DD6B8 t[55] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346BC; -- 数值地址:0x76456DD6BC t[56] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346C0; -- 数值地址:0x76456DD6C0 t[57] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346C4; -- 数值地址:0x76456DD6C4 t[58] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346C8; -- 数值地址:0x76456DD6C8 t[59] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346CC; -- 数值地址:0x76456DD6CC t[60] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346D0; -- 数值地址:0x76456DD6D0 t[61] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346D4; -- 数值地址:0x76456DD6D4 t[62] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346D8; -- 数值地址:0x76456DD6D8 t[63] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346DC; -- 数值地址:0x76456DD6DC t[64] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346E0; -- 数值地址:0x76456DD6E0 t[65] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346E4; -- 数值地址:0x76456DD6E4 t[66] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346E8; -- 数值地址:0x76456DD6E8 t[67] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346EC; -- 数值地址:0x76456DD6EC t[68] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346F0; -- 数值地址:0x76456DD6F0 t[69] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346F8; -- 数值地址:0x76456DD6F8 t[70] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB346FC; -- 数值地址:0x76456DD6FC t[71] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34700; -- 数值地址:0x76456DD700 t[72] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34704; -- 数值地址:0x76456DD704 t[73] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34708; -- 数值地址:0x76456DD708 t[74] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3470C; -- 数值地址:0x76456DD70C t[75] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34710; -- 数值地址:0x76456DD710 t[76] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34714; -- 数值地址:0x76456DD714 t[77] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34718; -- 数值地址:0x76456DD718 t[78] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3471C; -- 数值地址:0x76456DD71C t[79] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34720; -- 数值地址:0x76456DD720 t[80] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34724; -- 数值地址:0x76456DD724 t[81] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34728; -- 数值地址:0x76456DD728 t[82] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3472C; -- 数值地址:0x76456DD72C t[83] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34730; -- 数值地址:0x76456DD730 t[84] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34734; -- 数值地址:0x76456DD734 t[85] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34738; -- 数值地址:0x76456DD738 t[86] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3473C; -- 数值地址:0x76456DD73C t[87] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34740; -- 数值地址:0x76456DD740 t[88] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34744; -- 数值地址:0x76456DD744 t[89] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34748; -- 数值地址:0x76456DD748 t[90] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3474C; -- 数值地址:0x76456DD74C t[91] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34750; -- 数值地址:0x76456DD750 t[92] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34754; -- 数值地址:0x76456DD754 t[93] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34758; -- 数值地址:0x76456DD758 t[94] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3475C; -- 数值地址:0x76456DD75C t[95] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34760; -- 数值地址:0x76456DD760 t[96] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34764; -- 数值地址:0x76456DD764 t[97] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34768; -- 数值地址:0x76456DD768 t[98] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3476C; -- 数值地址:0x76456DD76C t[99] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34770; -- 数值地址:0x76456DD770 t[100] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34774; -- 数值地址:0x76456DD774 t[101] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34778; -- 数值地址:0x76456DD778 t[102] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB3477C; -- 数值地址:0x76456DD77C t[103] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34780; -- 数值地址:0x76456DD780 t[104] = gg.getRangesList("libil2cpp.so")[1]["start"] + 0x36BB34784; -- 数值地址:0x76456DD784 gg.addListItems({ [1] = { address = t[1], flags = 4, value = -1300239380, freeze = true, }, [2] = { address = t[2], flags = 4, value = -1442774027, freeze = true, }, [3] = { address = t[3], flags = 4, value = -887881398, freeze = true, }, [4] = { address = t[4], flags = 1, value = -53, freeze = true, }, [5] = { address = t[5], flags = 4, value = -351534721, freeze = true, }, [6] = { address = t[6], flags = 4, value = 1409286376, freeze = true, }, [7] = { address = t[7], flags = 4, value = -1824326326, freeze = true, }, [8] = { address = t[8], flags = 4, value = -351731361, freeze = true, }, [9] = { address = t[9], flags = 4, value = -1702219465, freeze = true, }, [10] = { address = t[10], flags = 4, value = -1258291049, freeze = true, }, [11] = { address = t[11], flags = 4, value = -1440807968, freeze = true, }, [12] = { address = t[12], flags = 4, value = 335544325, freeze = true, }, [13] = { address = t[13], flags = 4, value = -1304366089, freeze = true, }, [14] = { address = t[14], flags = 4, value = -746720544, freeze = true, }, [15] = { address = t[15], flags = 4, value = -1747888975, freeze = true, }, [16] = { address = t[16], flags = 4, value = -1455414668, freeze = true, }, [17] = { address = t[17], flags = 4, value = -113245526, freeze = true, }, [18] = { address = t[18], flags = 4, value = -1961489399, freeze = true, }, [19] = { address = t[19], flags = 4, value = -1961423850, freeze = true, }, [20] = { address = t[20], flags = 4, value = -887881470, freeze = true, }, [21] = { address = t[21], flags = 4, value = -889061067, freeze = true, }, [22] = { address = t[22], flags = 4, value = -251657121, freeze = true, }, [23] = { address = t[23], flags = 4, value = -134183190, freeze = true, }, [24] = { address = t[24], flags = 4, value = 1409286283, freeze = true, }, [25] = { address = t[25], flags = 4, value = -1441463328, freeze = true, }, [26] = { address = t[26], flags = 4, value = -1441528863, freeze = true, }, [27] = { address = t[27], flags = 4, value = -1747887980, freeze = true, }, [28] = { address = t[28], flags = 4, value = -1459593611, freeze = true, }, [29] = { address = t[29], flags = 4, value = -117437834, freeze = true, }, [30] = { address = t[30], flags = 4, value = -113243544, freeze = true, }, [31] = { address = t[31], flags = 4, value = -1275068344, freeze = true, }, [32] = { address = t[32], flags = 4, value = -700514048, freeze = true, }, [33] = { address = t[33], flags = 4, value = -1441594400, freeze = true, }, [34] = { address = t[34], flags = 4, value = -1811937727, freeze = true, }, [35] = { address = t[35], flags = 4, value = -750191319, freeze = true, }, [36] = { address = t[36], flags = 4, value = -220198806, freeze = true, }, [37] = { address = t[37], flags = 1, value = -14, freeze = true, }, [38] = { address = t[38], flags = 4, value = -1186497920, freeze = true, }, [39] = { address = t[39], flags = 4, value = -1747889727, freeze = true, }, [40] = { address = t[40], flags = 4, value = -1442839565, freeze = true, }, [41] = { address = t[41], flags = 4, value = -1258290880, freeze = true, }, [42] = { address = t[42], flags = 4, value = 838861792, freeze = true, }, [43] = { address = t[43], flags = 4, value = 840696801, freeze = true, }, [44] = { address = t[44], flags = 4, value = -1811938041, freeze = true, }, [45] = { address = t[45], flags = 4, value = -1275068000, freeze = true, }, [46] = { address = t[46], flags = 4, value = -1442839565, freeze = true, }, [47] = { address = t[47], flags = 4, value = -1186497920, freeze = true, }, [48] = { address = t[48], flags = 4, value = -1441594399, freeze = true, }, [49] = { address = t[49], flags = 4, value = -1747887213, freeze = true, }, [50] = { address = t[50], flags = 4, value = 889192800, freeze = true, }, [51] = { address = t[51], flags = 4, value = -1455326211, freeze = true, }, [52] = { address = t[52], flags = 4, value = -1441594400, freeze = true, }, [53] = { address = t[53], flags = 4, value = -1463660556, freeze = true, }, [54] = { address = t[54], flags = 4, value = -698416192, freeze = true, }, [55] = { address = t[55], flags = 4, value = -1341962176, freeze = true, }, [56] = { address = t[56], flags = 4, value = -1858651136, freeze = true, }, [57] = { address = t[57], flags = 4, value = -1811936233, freeze = true, }, [58] = { address = t[58], flags = 4, value = -1341962176, freeze = true, }, [59] = { address = t[59], flags = 4, value = -1858739200, freeze = true, }, [60] = { address = t[60], flags = 4, value = -1811936236, freeze = true, }, [61] = { address = t[61], flags = 4, value = -1341962176, freeze = true, }, [62] = { address = t[62], flags = 4, value = -1858705408, freeze = true, }, [63] = { address = t[63], flags = 4, value = -1811936239, freeze = true, }, [64] = { address = t[64], flags = 4, value = -1447068675, freeze = true, }, [65] = { address = t[65], flags = 4, value = -1862269955, freeze = true, }, [66] = { address = t[66], flags = 4, value = -805017536, freeze = true, }, [67] = { address = t[67], flags = 4, value = -1879048191, freeze = true, }, [68] = { address = t[68], flags = 4, value = -1860308992, freeze = true, }, [69] = { address = t[69], flags = 4, value = -1747889562, freeze = true, }, [70] = { address = t[70], flags = 4, value = 889192608, freeze = true, }, [71] = { address = t[71], flags = 4, value = -805017528, freeze = true, }, [72] = { address = t[72], flags = 4, value = -1186498304, freeze = true, }, [73] = { address = t[73], flags = 4, value = -1463714819, freeze = true, }, [74] = { address = t[74], flags = 4, value = 399593885, freeze = true, }, [75] = { address = t[75], flags = 4, value = -1341962176, freeze = true, }, [76] = { address = t[76], flags = 4, value = -1858651136, freeze = true, }, [77] = { address = t[77], flags = 4, value = -1811936254, freeze = true, }, [78] = { address = t[78], flags = 4, value = -1447068675, freeze = true, }, [79] = { address = t[79], flags = 4, value = -1862269955, freeze = true, }, [80] = { address = t[80], flags = 4, value = -805017536, freeze = true, }, [81] = { address = t[81], flags = 4, value = -1879048191, freeze = true, }, [82] = { address = t[82], flags = 4, value = -1860313088, freeze = true, }, [83] = { address = t[83], flags = 4, value = -1860354015, freeze = true, }, [84] = { address = t[84], flags = 4, value = -1747889609, freeze = true, }, [85] = { address = t[85], flags = 4, value = 889192544, freeze = true, }, [86] = { address = t[86], flags = 4, value = -1463714819, freeze = true, }, [87] = { address = t[87], flags = 4, value = -698416192, freeze = true, }, [88] = { address = t[88], flags = 4, value = -1341962176, freeze = true, }, [89] = { address = t[89], flags = 4, value = -1858600960, freeze = true, }, [90] = { address = t[90], flags = 4, value = -1811936267, freeze = true, }, [91] = { address = t[91], flags = 4, value = -1447068675, freeze = true, }, [92] = { address = t[92], flags = 4, value = -1862269955, freeze = true, }, [93] = { address = t[93], flags = 4, value = -1811937995, freeze = true, }, [94] = { address = t[94], flags = 4, value = -805017528, freeze = true, }, [95] = { address = t[95], flags = 4, value = -1186498304, freeze = true, }, [96] = { address = t[96], flags = 4, value = -1440807967, freeze = true, }, [97] = { address = t[97], flags = 4, value = -1747887262, freeze = true, }, [98] = { address = t[98], flags = 4, value = 889192544, freeze = true, }, [99] = { address = t[99], flags = 4, value = -1463714819, freeze = true, }, [100] = { address = t[100], flags = 4, value = -698416192, freeze = true, }, [101] = { address = t[101], flags = 4, value = -1341962176, freeze = true, }, [102] = { address = t[102], flags = 4, value = -1858541568, freeze = true, }, [103] = { address = t[103], flags = 4, value = -1811936280, freeze = true, }, [104] = { address = t[104], flags = 4, value = -132313099, freeze = true, }, }) end gg.toast("Doro测试注入成功") end), }), },{ changan.box({ "Doro常用功能", changan.switch("武器间隔", function() local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0x94} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 0, freeze = true}})--无冷 local t = {"libil2cpp.so", "Cd"} local tt = {0x671C30,0xB8, 0x48, 0xB8, 0x98} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}})--秒换 end, function() end), changan.switch("武器锁子", function() local a2 = {"libil2cpp.so", "Cd"} local aa2 = {0x671C30,0xB8,0x48,0xB8,0xBC} local aaa2 = S_Pointer(a2, aa2, true) gg.addListItems({{address = aaa2, flags = 4, value = 0, freeze = true}})--锁子1 local a2 = {"libil2cpp.so", "Cd"} local aa2 = {0x671C30,0xB8,0x48,0xB8,0xc0} local aaa2 = S_Pointer(a2, aa2, true) gg.addListItems({{address = aaa2, flags = 4, value = 0, freeze = true}})--锁子2 end, function() end),changan.switch("武器弹夹", function() local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30, 0xB8, 0x48, 0xB8, 0xC4} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 999, freeze = true}})--数量 end, function() end),changan.switch("武器后座", function() local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0xC8} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 0, freeze = true}}) end, function() end),changan.switch("武器进化", function() local tt = {0x66E230,0xB8,0x158,0x28,0x18,0x300,0x58} local ttt = S_Pointer(t, tt, true) local WQ=gg.getValues({{address=ttt,flags =4}})[1].value local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0xD8,0x58} local aaa = S_Pointer(a, aa, true) gg.setValues({{address = aaa, flags = 4, value = WQ}}) end, function() end),changan.switch("武器连发", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x158,0x28,0x18,0x120,0x58} local ttt = S_Pointer(t, tt, true) local WQ=gg.getValues({{address=ttt,flags =4}})[1].value local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0xD8,0x58} local aaa = S_Pointer(a, aa, true) gg.setValues({{address = aaa, flags = 4, value = WQ}}) end, function() end),changan.switch("全图明亮", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6758E0, 0xB8, 0x8, 0x22B} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 1, value = 1}}) end, function() end),changan.switch("人物移速", function() function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local t = gg.getRangesList('^/data/*.so*$') for i, v in pairs(t) do if v.type:sub(2, 2) == 'w' then table.insert(ranges, v) end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local ti = gg.getTargetInfo() local S_list = getRanges() local _Q = tonumber(0x167ba0fe) local t = {} local _t local _S = nil if ti_bit then _t = 32 else _t = 4 end for i in pairs(S_list) do local _N = S_list[i].internalName:gsub('^.*/', '') if N_So[1] == _N and N_So[2] == S_list[i].state then _S = S_list[i] break end end if _S then t[#t + 1] = {} t[#t].address = _S.start + Offset[1] t[#t].flags = _t if #Offset ~= 1 then for i = 2, #Offset do local S = gg.getValues(t) t = {} for _ in pairs(S) do if not ti.x64 then S[_].value = S[_].value & 0xFFFFFFFF end t[#t + 1] = {} t[#t].address = S[_].value + Offset[i] t[#t].flags = _t end end end _S = t[#t].address end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end WQ=gg.prompt({'输入数值'},{60},{'number'}) if not WQ then gg.toast('已取消') return else if -WQ[1]=='' then gg.alert('当前数值为空') return else local t = {"libil2cpp.so", "Cd"} local tt = {0x671C30, 0xB8, 0x48, 0x28, 0x58, 0x10, 0x60, 0xDC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt+0x1C, flags = 16, value = -50, freeze = true}}) end end end, function() end), changan.switch("暗黑透视", function() local tt = {0x678118, 0xB8, 0x0, 0x1DC}--渲染透视 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) end, function() end), changan.switch("移动开物", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x654D88, 0xB8, 0x1D0, 0x90, 0x30}--移动开物 local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}}) end, function() end), changan.switch("激活锁门", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x676578, 0xB8, 0x0, 0x328, 0x128} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 12, freeze = true}}) end, function() end), changan.switch("上帝视角", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x6668F8, 0xB8, 0x80, 0xD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 20, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x6738D0, 0xB8, 0x20, 0xD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 20, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x677DB8, 0xB8, 0x0, 0xD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 20, freeze = true}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x677F00, 0xB8, 0x60, 0xD8} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 20, freeze = true}}) end, function() end), changan.switch("实体开门", function() local lib = gg.getRangesList('libil2cpp.so')[2].start local values = { --nUzAmfTAsSjguEimeGAUZFuVcyoedUIeWJYKisZd {address = lib + 0x2b24868, flags = 4, value = -698416192, freeze=true}, --科秒 --public static bool get_isMasterClient() { } {address = lib + 0x4833680, flags = 4, value = -763363296, freeze=true}, {address = lib + 0x4833680+0x4, flags = 4, value = -698416192, freeze=true}, {address = lib + 0x4df7c5c, flags = 4, value = -763363296, freeze=true}, {address = lib + 0x4df7c5c+0x4, flags = 4, value = -698416192, freeze=true}, --public static int get_StillPlayingThiefCount() { } {address = lib + 0x42641a4, flags = 4, value = -763363296, freeze=true}, {address = lib + 0x42641a4+0x4, flags = 4, value = -698416192, freeze=true}, } gg.addListItems(values) gg.alert("开启成功") end, function() end), }), },{ changan.box({ "Doro娱乐功能", changan.switch("斧子平扫", function() local aa = {0x671C30,0xB8,0x48,0xB8,0x244} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 1, freeze = true}})--平 end, function() end), changan.switch("不死捐钱", function() local t = staticstart({"libil2cpp.so", "Cd", 1}) local tt = {0x666808, 0xB8, 0x0, 0x1A0, 0x18, 0x30} local ttt = GotoPointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}}) local t = staticstart({"libil2cpp.so", "Cd", 1}) local tt = {0x666808, 0xB8, 0x0, 0x1A8, 0x78, 0x30} local ttt = GotoPointer(t, tt) gg.addListItems({{address = ttt, flags = 4, value = 1, freeze = true}})--不死捐 end, function() end),changan.switch("道具无冷", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x671C30, 0xB8, 0x48, 0x140, 0x40} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 0, freeze = true}}) end, function() end),changan.switch("拖动进化", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x158,0x28,0x18,0x120,0x58}--1533 0xAC78230->0xB8->0x158->0x28->0x18->0x1B0->0x25B8 local ttt = S_Pointer(t, tt, true) local WQ=gg.getValues({{address=ttt,flags =4}})[1].value local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0xD8,0x58} local aaa = S_Pointer(a, aa, true) gg.setValues({{address = aaa, flags = 4, value = WQ}}) end, function() end),changan.switch("修改武器", function() function BaseAddressY(address, value) so = gg.getRangesList('libil2cpp.so')[1].start local tt = {} tt[1] = {} tt[1].address = so + address tt[1].flags = 4 tt[1].value = value gg.setValues(tt) gg.toast("开启成功") end yx=[[ 武器代码: 火箭筒:一级100 二级101 三级102 能量剑:一级140 二级141 三级142 迫击炮:一级110 二级111 三级112 冲锋枪:一级130 二级131 三级132 蹦蹦枪:一级150 二级151 三级152 霰弹枪:一级190 二级191 三级192 唤风镖:一级200 二级201 三级202 霸天斧:一级210 二级211 三级212 聚能弓:一级220 二级221 三级222 能量腕炮:一级180 二级181 三级182 金库特殊武器: 治疗手枪:10100 电球枪:10160 泚水枪:11130 霰弹枪:10130 蹦蹦枪:11150 像素剑:10140 盾卫攻击:10170 回旋镖:10150 自动手枪:12130 变形金刚武器: 热破-90100 威震天-90200 红蜘蛛-90300 角色武器: 星辰圣女-160 黎明盾卫-170 大乱斗新武器 毁灭炮:50008 河豚炮:50012 ]] YX=gg.prompt({""..yx}) BaseAddressY(0x3BC79A8,'~A MOVW R0, #'..YX[1])--TryGetSelfShowWeaponCardID BaseAddressY(0x3BC79A8,"~A BX LR") end, function() end),changan.switch("倒地购物", function() BaseAddressY(0x22461ac,"-698416192") BaseAddressY(0x41133f8,"-698416192") end, function() end),changan.switch("追捕破盾", function() BaseAddressY(0x33EA2F4,1384120352) BaseAddressY(0x33EA2F8,-698416192) end, function() end),changan.switch("人物穿墙", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x671C30, 0xB8, 0x48, 0x28, 0x58, 0x10, 0x60, 0xDC} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 16, value = 999, freeze = true}}) end, function() end),changan.switch("失忆梅花", function() local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x40,0x28,0x18,0x1638} local ttt = S_Pointer(t, tt, true) local MZ=gg.getValues({{address=ttt,flags =4}})[1].value local u = {"libil2cpp.so", "Cd"} local uu = {0x66E230,0xB8,0x40,0x28,0x18,0xE58} local uuu = S_Pointer(u, uu, true) gg.setValues({{address = uuu, flags = 4, value = MZ}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x40,0x28,0x18,0x1DD0} local ttt = S_Pointer(t, tt, true) local ST=gg.getValues({{address=ttt,flags =4}})[1].value local u = {"libil2cpp.so", "Cd"} local uu = {0x66E230,0xB8,0x40,0x28,0x18,0xE70} local uuu = S_Pointer(u, uu, true) gg.setValues({{address = uuu, flags = 4, value = ST}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x40,0x28,0x18,0x1de8} local ttt = S_Pointer(t, tt, true) local JK=gg.getValues({{address=ttt,flags =4}})[1].value local u = {"libil2cpp.so", "Cd"} local uu = {0x66E230,0xB8,0x40,0x28,0x18,0xE88} local uuu = S_Pointer(u, uu, true) gg.setValues({{address = uuu, flags = 4, value = JK}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x40,0x28,0x18,0x1E00} local ttt = S_Pointer(t, tt, true) local CK=gg.getValues({{address=ttt,flags =4}})[1].value local u = {"libil2cpp.so", "Cd"} local uu = {0x66E230,0xB8,0x40,0x28,0x18,0xEA0} local uuu = S_Pointer(u, uu, true) gg.setValues({{address = uuu, flags = 4, value = CK}}) local t = {"libil2cpp.so", "Cd"} local tt = {0x66E230,0xB8,0x40,0x28,0x18,0x1E18} local ttt = S_Pointer(t, tt, true) local XZ=gg.getValues({{address=ttt,flags =4}})[1].value--失忆美 end, function() end), changan.button("逃生秒应", function() BaseAddressY(0x265FE88,'342532053') gg.sleep(100) BaseAddressY(0x265FE88,'-132444167') end), changan.switch("火力一件", function() local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0x94} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 0, freeze = true}})--无冷 local t = {"libil2cpp.so", "Cd"} local tt = {0x671C30,0xB8, 0x48, 0xB8, 0x98} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}})--秒换 local t = {"libil2cpp.so", "Cd"} local tt = {0x6758E0, 0xB8, 0x8, 0x22B} local ttt = S_Pointer(t, tt, true) gg.setValues({{address = ttt, flags = 1, value = 1}}) local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0xC8} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 0, freeze = true}})--午 local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30, 0xB8, 0x48, 0xB8, 0xC4} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 999, freeze = true}})--数量local aa2 = {0x671C30,0xB8,0x48,0xB8,0xBC} local aaa2 = S_Pointer(a2, aa2, true) gg.addListItems({{address = aaa2, flags = 4, value = 0, freeze = true}})--锁子1 local a2 = {"libil2cpp.so", "Cd"} local aa2 = {0x671C30,0xB8,0x48,0xB8,0xc0} local aaa2 = S_Pointer(a2, aa2, true) gg.addListItems({{address = aaa2, flags = 4, value = 0, freeze = true}})--锁子2 local a = {"libil2cpp.so", "Cd"} local aa = {0x671C30,0xB8,0x48,0xB8,0x94} local aaa = S_Pointer(a, aa, true) gg.addListItems({{address = aaa, flags = 4, value = 0, freeze = true}})--无冷 local t = {"libil2cpp.so", "Cd"} local tt = {0x671C30,0xB8, 0x48, 0xB8, 0x98} local ttt = S_Pointer(t, tt, true) gg.addListItems({{address = ttt, flags = 4, value = 0, freeze = true}})--秒换 end, function() end),changan.switch("道具等级", function() yw =gg.getRangesList('libil2cpp.so')[2].start gg.setValues({{address = yw + 0x330DCB4,flags = 4,value =1384122304}, {address = yw + 0x5B8CAFC,flags = 4,value =1923612672}, {address = yw + 0x3BB5AF0,flags = 4,value =-698416192}, }) end, function() end),changan.switch("道具皮肤", function() BaseAddressD(0x3BBAC64,'-763363296') end, function() end),changan.switch("角色皮肤", function() BaseAddressD(0x359035C,'-763363296') end, function() end),changan.switch("解锁角色", function() SL =gg.getRangesList('libil2cpp.so')[2].start gg.setValues({{address = SL + 0x359C03C,flags = 4,value =1384120352}})--public static bool IsOwnForeverCharacter(int id) { } SL =gg.getRangesList('libil2cpp.so')[2].start gg.setValues({{address = SL + 0x359C03C+0x4,flags = 4,value =-698416192}}) end, function() end),changan.switch("空投刷钱", function() BaseAddressY(0x263C000,'-1442839565') BaseAddressY(0x263C008,'-1440807966') BaseAddressY(0x263C00C,'-1440807965') BaseAddressY(0x263C010,'-1440807964') BaseAddressY(0x263C014,'-1440807962') BaseAddressY(0x263C018,'-1440807961') BaseAddressY(0x263C01C,'-1811885182') BaseAddressY(0x263C020,'335581091') BaseAddressY(0x263C004,'-763359743') BaseAddressY(0x265FEA8,'402616406') gg.sleep(500) BaseAddressY(0x265FEA8,'-1442839565') end, function() end),changan.switch("补给刷钱", function() BaseAddressY(0x263C000,'-1442839565') BaseAddressY(0x263C008,'-1440807966') BaseAddressY(0x263C00C,'-1440807965') BaseAddressY(0x263C010,'-1440807964') BaseAddressY(0x263C014,'-1440807962') BaseAddressY(0x263C018,'-1440807961') BaseAddressY(0x263C01C,'-1811885182') BaseAddressY(0x263C020,'335581091') BaseAddressY(0x263C004,'-763359743') BaseAddressY(0x263C004,'-763361631') BaseAddressY(0x265FEA8,'402616406') gg.sleep(500) BaseAddressY(0x265FEA8,'-1442839565') end, function() end),changan.switch("保险刷钱", function() BaseAddressY(0x263C000,'-1442839565') BaseAddressY(0x263C008,'-1440807966') BaseAddressY(0x263C00C,'-1440807965') BaseAddressY(0x263C010,'-1440807964') BaseAddressY(0x263C014,'-1440807962') BaseAddressY(0x263C018,'-1440807961') BaseAddressY(0x263C01C,'-1811885182') BaseAddressY(0x263C020,'335581091') BaseAddressY(0x263C004,'-763362815') BaseAddressY(0x265FEA8,'402616406') gg.sleep(500) BaseAddressY(0x265FEA8,'-1442839565') end, function() end),changan.switch("支援刷钱", function() BaseAddressY(0x263C000,'-1442839565') BaseAddressY(0x263C008,'-1440807966') BaseAddressY(0x263C00C,'-1440807965') BaseAddressY(0x263C010,'-1440807964') BaseAddressY(0x263C014,'-1440807962') BaseAddressY(0x263C018,'-1440807961') BaseAddressY(0x263C01C,'-1811885182') BaseAddressY(0x263C020,'335581091') BaseAddressY(0x263C004,'-763359647') BaseAddressY(0x265FEA8,'402616406') gg.sleep(500) BaseAddressY(0x265FEA8,'-1442839565') end, function() end),changan.switch("指定变身", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCShapeShift local player_addr = PlayerController[k].address local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x26c5820 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x26c5820 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x26c5820 + 0x8, flags = 4, value =1476395424}, {address = libil2cpp_base + 0x26c5820 + 0xc, flags = 4, value =1476395425}, {address = libil2cpp_base + 0x26c5820 + 0x10, flags = 4, value =-1800964236}, {address = libil2cpp_base + 0x26c5820 + 0x14, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x26c5820 + 0x18, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x26c5820 + 0x1c, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x26c5820 + 0x20, flags = 4, value =-1802836497}, {address = libil2cpp_base + 0x26c5820 + 0x24, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x26c5820 + 0x28, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x26c5820 + 0x2c, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x26c5820 + 0x30, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x26c5820 + 0x34, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x26c5820 + 0x3c, flags = 4, value =1018}, {address = libil2cpp_base + 0x26c5820 + 0x40, flags = 4, value =5002}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =335648358}, } gg.setValues(values) end end end gg.sleep(1000) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定传送", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCUsePortal local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x3020f20 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x3020f20 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x3020f20 + 0x8, flags = 4, value =1476395392}, {address = libil2cpp_base + 0x3020f20 + 0xc, flags = 4, value =-1803404313}, {address = libil2cpp_base + 0x3020f20 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x3020f20 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x3020f20 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x3020f20 + 0x1c, flags = 4, value =-1805289424}, {address = libil2cpp_base + 0x3020f20 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x3020f20 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x3020f20 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x3020f20 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x3020f20 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x3020f20 + 0x38, flags = 16, value =10}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =338101286}, } gg.setValues(values) end end end gg.sleep(500) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定弹夹", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCSetMagazine local player_addr = PlayerController[k].address local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x2CBBC20 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x2CBBC20 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x2CBBC20 + 0x8, flags = 4, value =1476395424}, {address = libil2cpp_base + 0x2CBBC20 + 0xc, flags = 4, value =1476395425}, {address = libil2cpp_base + 0x2CBBC20 + 0x10, flags = 4, value =-1802528023}, {address = libil2cpp_base + 0x2CBBC20 + 0x14, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x2CBBC20 + 0x18, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x2CBBC20 + 0x1c, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x2CBBC20 + 0x20, flags = 4, value =-1804399377}, {address = libil2cpp_base + 0x2CBBC20 + 0x24, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x2CBBC20 + 0x28, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x2CBBC20 + 0x2c, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x2CBBC20 + 0x30, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x2CBBC20 + 0x34, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x2CBBC20 + 0x3c, flags = 4, value =1000}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =337211238}, } gg.setValues(values) end end end gg.sleep(10) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定倒地", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCAddMaxLife local player_addr = PlayerController[k].address local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x2403520 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x2403520 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x2403520 + 0x8, flags = 4, value =469762432}, {address = libil2cpp_base + 0x2403520 + 0xc, flags = 4, value =-1795911084}, {address = libil2cpp_base + 0x2403520 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x2403520 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x2403520 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x2403520 + 0x1c, flags = 4, value =-1802113360}, {address = libil2cpp_base + 0x2403520 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x2403520 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x2403520 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x2403520 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x2403520 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x2403520 + 0x38, flags = 16, value =-1}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =402034086}, } gg.setValues(values) end end end gg.sleep(100) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定祭天", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCGiveUp local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x2867340 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x2867340 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x2867340 + 0x8, flags = 4, value =-763363296}, {address = libil2cpp_base + 0x2867340 + 0xc, flags = 4, value =-1797038854}, {address = libil2cpp_base + 0x2867340 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x2867340 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x2867340 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x2867340 + 0x1c, flags = 4, value =-1803264216}, {address = libil2cpp_base + 0x2867340 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x2867340 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x2867340 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x2867340 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x2867340 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =336076078}, } gg.setValues(values) end end end gg.sleep(10) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定救赎", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCSelfHelp local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x25d0850 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x25d0850 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x25d0850 + 0x8, flags = 4, value =-763363264}, {address = libil2cpp_base + 0x25d0850 + 0xc, flags = 4, value =-1800714586}, {address = libil2cpp_base + 0x25d0850 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x25d0850 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x25d0850 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x25d0850 + 0x1c, flags = 4, value =-1802585628}, {address = libil2cpp_base + 0x25d0850 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x25d0850 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x25d0850 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x25d0850 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x25d0850 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =402506354}, } gg.setValues(values) end end end gg.sleep(1000) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定逃生", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCFinalEscape local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x3070d10 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x3070d10 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x3070d10 + 0x8, flags = 4, value =-763363296}, {address = libil2cpp_base + 0x3070d10 + 0xc, flags = 4, value =-1799151434}, {address = libil2cpp_base + 0x3070d10 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x3070d10 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x3070d10 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x3070d10 + 0x1c, flags = 4, value =-1805371212}, {address = libil2cpp_base + 0x3070d10 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x3070d10 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x3070d10 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x3070d10 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x3070d10 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =338183074}, } gg.setValues(values) end end end gg.sleep(100) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定锁血", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCAddMaxLife local player_addr = PlayerController[k].address local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x2403520 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x2403520 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x2403520 + 0x8, flags = 4, value =469762432}, {address = libil2cpp_base + 0x2403520 + 0xc, flags = 4, value =-1795911084}, {address = libil2cpp_base + 0x2403520 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x2403520 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x2403520 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x2403520 + 0x1c, flags = 4, value =-1802113360}, {address = libil2cpp_base + 0x2403520 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x2403520 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x2403520 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x2403520 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x2403520 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x2403520 + 0x38, flags = 4, value =-1}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =402034086}, } gg.setValues(values) end end end gg.sleep(1000) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end),changan.switch("指定武器", function() local inject = {} inject.shellcode = function(addr,code) local results = {} for i=1,#code,2 do table.insert(results,{address = addr + (i + 1) / 2 - 1,flags = 4,value = string.sub(code,i,i + 1).."h"}) end gg.setValues(results) return saddr end local function utf8_char_from_value(value) if type(value) == "table" then utf8_chars = {} for i, value in ipairs(value) do if value < 0 then utf8_chars[i] = value & 0xFFFF else utf8_chars[i] = value end end end return utf8.char(table.unpack(utf8_chars)) end local function getName(addr,shi) local data,data1={},{} for i=1,shi do data[1+#data]={address=addr+2+i*2,flags=2} end for k , v in pairs(gg.getValues(data)) do data[k]=v.value end return utf8_char_from_value(data) end local getname=function(x) local data,get={},{} for k,v in ipairs(gg.getValues(x)) do get[k]={address=v.value+0x10,flags=4} end for k,v in ipairs(gg.getValues(get)) do data[k]=getName(v.address,v.value) end return data end function getcpp() local cdx,xax for k,v in ipairs (gg.getRangesList("libil2cpp.so"))do local cd=gg.getValues({{address=gg.getValues({{address=v.start,flags=32}})[1].value,flags=4}})[1].value if cd~="1179403647" and v.state=="Cd" then cdx=k end local xa=gg.getValues({{address=v.start,flags=4}})[1].value if xa=="1179403647" and v.state=="Xa" then xax=k end end return {cd=cdx,xa=xax} end function utf8.byte(str) local res = {} local i = 1 while i <= #str do local c = string.byte(str, i) local unicode if c >= 0 and c <= 127 then unicode = c i = i + 1 elseif c >= 192 and c <= 223 then local c2 = string.byte(str, i + 1) unicode = (bit32.band(c, 31) * 64) + bit32.band(c2, 63) i = i + 2 elseif c >= 224 and c <= 239 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) unicode = (bit32.band(c, 15) * 4096) + (bit32.band(c2, 63) * 64) + bit32.band(c3, 63) i = i + 3 elseif c >= 240 and c <= 247 then local c2 = string.byte(str, i + 1) local c3 = string.byte(str, i + 2) local c4 = string.byte(str, i + 3) unicode = (bit32.band(c, 7) * 262144) + (bit32.band(c2, 63) * 4096) + (bit32.band(c3, 63) * 64) + bit32.band(c4, 63) i = i + 4 else table.insert(res, nil) break end table.insert(res, unicode) end return res end cpp=getcpp() cppcd=cpp.cd cppxa=cpp.xa qy=gg.getRangesList('libil2cpp.so')[cppxa].start print(cppcd) _ENV["getvalue"]=gg.getValues 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 else end addr = addr[1].value + offset[i] end return addr end end function gg.edits(addr, Table, name) if not addr then gg.toast('修改失败, 可能是模块不存在') return end local Table1 = { {}, {} } for k, v in ipairs(Table) do local value = { address = addr + v[3], value = v[1], flags = v[2], freeze = v[4] } if v[4] then Table1[2][#Table1[2] + 1] = value else Table1[1][#Table1[1] + 1] = value end end gg.addListItems(Table1[2]) gg.setValues(Table1[1]) end -------------------动态------------------ local function jz(type) local jt= gg.getRangesList(type[1])[type[3]].start address=jt if type[4]==true then add=gg.addListItems else add=function() end end for k,v in pairs(type[2]) do if k==#type[2] then address=address+v add({{address=address,flags=gg.TYPE_QWORD,name="第\b"..k.."\b层"}}) else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function zz(type) address=type[1] for k,v in pairs(type[2]) do if k==#type[2] then address=address+v else address=getvalue({{address=address+v,flags=gg.TYPE_QWORD}})[1].value end end return address end function main() local PlayerController,pv={},{} local function loads(address) local load,value={} value=gg.getValues({{address=address+8,flags=4}})[1].value local address=gg.getValues({{address=address,flags=32}})[1].value for i=0,value-1 do load[#load+1]={address=address+0x20+i*8,flags=32} end return gg.getValues(load) end local b,name=gg.getValues(loads(readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38,0x10}, cppcd))),{} for k,v in ipairs(b)do name[k]={address=v.value+0xe8,flags=32} pv[k]={address=v.value+0x38,flags=32} end name=gg.getValues(name) pv=gg.getValues(pv) b=(gg.getValues(b)) for k,v in ipairs(getname(name)) do PlayerController[k]={name=v,address=pv[k].value} end address=readPointer("libil2cpp.so", {0x671C30, 0xb8,0x38}, cppcd) local choice={} for k,v in ipairs(PlayerController) do choice[k]=v.name end A=gg.multiChoice(choice) if A then for k,v in pairs(A) do if v then --LMNEvent_RPCSetWeaponID local player_addr = PlayerController[k].address local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x25d0720 + 0x0, flags = 4, value =-788478977}, {address = libil2cpp_base + 0x25d0720 + 0x4, flags = 4, value =-1459454979}, {address = libil2cpp_base + 0x25d0720 + 0x8, flags = 4, value =1476395392}, {address = libil2cpp_base + 0x25d0720 + 0xc, flags = 4, value =-1800713922}, {address = libil2cpp_base + 0x25d0720 + 0x10, flags = 4, value =-1442839583}, {address = libil2cpp_base + 0x25d0720 + 0x14, flags = 4, value =-1440807966}, {address = libil2cpp_base + 0x25d0720 + 0x18, flags = 4, value =1476395200}, {address = libil2cpp_base + 0x25d0720 + 0x1c, flags = 4, value =-1802585552}, {address = libil2cpp_base + 0x25d0720 + 0x20, flags = 4, value =-1440807968}, {address = libil2cpp_base + 0x25d0720 + 0x24, flags = 4, value =-1455260675}, {address = libil2cpp_base + 0x25d0720 + 0x28, flags = 4, value =-1862220801}, {address = libil2cpp_base + 0x25d0720 + 0x2c, flags = 4, value =-698416192}, {address = libil2cpp_base + 0x25d0720 + 0x30, flags = 32, value =PlayerController[k].address}, {address = libil2cpp_base + 0x25d0720 + 0x38, flags = 4, value =110}, {address = libil2cpp_base + 0x265FE88, flags = 4, value =402506278}, } gg.setValues(values) end end end gg.sleep(100) local libil2cpp_base = gg.getRangesList('libil2cpp.so')[cppxa].start values = { {address = libil2cpp_base + 0x265FE88, flags = 4, value =-132444167}, } gg.setValues(values) end while true do if gg.isVisible(true) then gg.setVisible(false) main() end end end, function() end), }), },{ changan.box({ "设置", changan.button("退出脚本", function() 退出() end,"#DB202C"), changan.switch("音乐关闭", function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end, function() gg.playMusic("stop") gg.playMusic("stop") gg.playMusic("stop") end), changan.switch("音乐搜索", function() search = gg.prompt({ "输入要搜索的歌曲\n可加上歌手名字", "设置显示数量(数字)", },g.sel,{ "text", }) if not search then return end gg.saveVariable(search,g.config) bei() go1=search[1] go3=search[2] jg=start(go1,go3) if jg.code == 200 then fh=jg.content fh=json(fh) --print(fh) Play(gqlb,idb) else function inspect() gg.alert("访问网络异常,错误代码:\n\n"..jg.code) end if not pcall(inspect) then print("网络异常,请先连接上网络") os.exit() end end XGCK=-1 end), changan.button("me", function() gg.playMusic("https://music.163.com/song/media/outer/url?id=1990363532.mp3") end), changan.button("啦啦啦", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=17075871.mp3") gg.playMusic("stop") end), changan.button("心如止水", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1928002636.mp3") gg.playMusic("stop") end), changan.button("领袖", function() gg.playMusic("https://p4.a.yximgs.com/ufile/atlas/NTIzMjA1Njk3NDI4NTgxNTU2MV8xNjg0NDA1NTA5NDc3.m4a") gg.playMusic("stop") end), changan.button("鬼新娘", function() gg.playMusic("http://music.163.com/song/media/outer/url?id=1854927969.mp3") gg.playMusic("stop") end), changan.button("最后一页", function() gg.playMusic("https://163cn.tv/Iayw6LJ") gg.playMusic("stop") end), }) } }) jm1 : setBackground(slcta ) gg.setVisible(false ) luajava.setFloatingWindowHide(true ) ---bloc不要动 动了脚本功能会失效 bloc = luajava.getBlock() bloc("join")