function Main() menu = gg.choice({ '过检测', '猫魂', '主功能名称3', '退出脚本'}, 2018,'这里可以填QQ号') if menu == 1 then A() end if menu == 2 then B() end if menu == 3 then C() end if menu == 4 then Exit() end XGCK=-1 end function A() menu1 = gg.multiChoice({ '选择进城', '防封', '过搜索', '替换SO', '防黑屏', '过搜索2', '自动替换S02', '副功能名称8', '副功能名称9', '副功能名称10', '副功能名称11', '副功能名称12', '返回上一页'}, nil,'这里也可以随便填') if menu1 == nil then else if menu1[1] == true then a1() end if menu1[2] == true then a2() end if menu1[3] == true then a3() end if menu1[4] == true then a4() end if menu1[5] == true then a5() end if menu1[6] == true then a6() end if menu1[7] == true then a7() end if menu1[8] == true then a8() end if menu1[9] == true then a9() end if menu1[10] == true then a10() end if menu1[11] == true then a11() end if menu1[12] == true then a12() end if menu1[13] == true then HOME() end end GLWW=-1 end function B() menu1 = gg.multiChoice({ '开背包容量', '修改属性', '副功能名称3', '副功能名称4', '副功能名称5', '副功能名称6', '副功能名称7', '副功能名称8', '副功能名称9', '副功能名称10', '副功能名称11', '副功能名称12', '返回上一页'}, nil,'这里也可以随便填') if menu1 == nil then else if menu1[1] == true then b1() end if menu1[2] == true then b2() end if menu1[3] == true then b3() end if menu1[4] == true then b4() end if menu1[5] == true then b5() end if menu1[6] == true then b6() end if menu1[7] == true then b7() end if menu1[8] == true then b8() end if menu1[9] == true then b9() end if menu1[10] == true then b10() end if menu1[11] == true then b11() end if menu1[12] == true then b12() end if menu1[13] == true then HOME() end end GLWW=-1 end function C() menu1 = gg.multiChoice({ '副功能名称1', '副功能名称2', '副功能名称3', '副功能名称4', '副功能名称5', '副功能名称6', '副功能名称7', '副功能名称8', '副功能名称9', '副功能名称10', '副功能名称11', '副功能名称12', '返回上一页'}, nil,'这里也可以随便填') if menu1 == nil then else if menu1[1] == true then c1() end if menu1[2] == true then c2() end if menu1[3] == true then c3() end if menu1[4] == true then c4() end if menu1[5] == true then c5() end if menu1[6] == true then c6() end if menu1[7] == true then c7() end if menu1[8] == true then c8() end if menu1[9] == true then c9() end if menu1[10] == true then c10() end if menu1[11] == true then c11() end if menu1[12] == true then c12() end if menu1[13] == true then HOME() end end GLWW=-1 end function a1() gg.setProcessX() gg.toast("开启成功") end function a2() gg.processPause() gg.clearResults() gg.searchNumber(';let e = l.getFloat64(0);', gg.TYPE_WORD, false, gg.SIGN_EQUAL, 0, -1, 0) gg.getResults(10000) gg.editAll(';let e = this.fakeValue; ', gg.TYPE_WORD) gg.clearResults() gg.processResume() gg.toast('防封号功能已开启') gg.setVisible(false) end function a3() gg.setConfig("隐藏辅助",23) function S_Pointer(t_So, t_Offset, _bit) local function getWritableRanges() local ranges = {} local allRanges = gg.getRangesList('^/data/*.so*$') for _, v in ipairs(allRanges) do if v.type:sub(2, 2) == 'w' then ranges[#ranges + 1] = v end end return ranges end local function Get_Address(N_So, Offset, ti_bit) local S_list = getWritableRanges() local addressType = ti_bit and 32 or 4 local targetSo = nil for _, v in ipairs(S_list) do local soName = v.internalName:match('[^/]*$') if N_So[1] == soName and N_So[2] == v.state then targetSo = v break end end if not targetSo then return nil end local currentAddress = targetSo.start + Offset[1] if #Offset > 1 then for i = 2, #Offset do local values = gg.getValues({{address = currentAddress, flags = addressType}}) currentAddress = values[1].value + Offset[i] if not gg.getTargetInfo().x64 then currentAddress = currentAddress & 0xFFFFFFFF end end end return currentAddress end local resultAddress = Get_Address(t_So, t_Offset, _bit) return resultAddress and string.format('0x%X', resultAddress) or nil end gg.setConfig("隐藏辅助",6) local soInfo = {"libexecgame.so:bss", "Cb"} local offsets = {0x47000, 0x478} local finalAddress = S_Pointer(soInfo, offsets, true) if finalAddress then gg.setValues({{address = finalAddress, flags = 4, value = -698416192}}) else print("未找到目标地址") end gg.setConfig("隐藏辅助",14) gg.alert("开启成功","已知晓") end function a4() local pkg = "com.hortor.juliancysj" local url = "https://wp.kayyw.com/f/51doFM/libexecgame.so" local tmp_so = "/sdcard/libexecgame.so" local target_dir_shell = "/data/app/" .. pkg .. "-*/lib/arm64/" local target_so_shell = target_dir_shell .. "libexecgame.so" gg.toast("开始下载 libexecgame.so") file.download(url, tmp_so) gg.sleep(800) if not file.exists(tmp_so) then gg.alert("下载失败!文件不存在") return end gg.toast("开始替换到游戏目录") gg.command(string.format([[su -c 'sh -c "mkdir -p %s"']], target_dir_shell)) gg.sleep(300) gg.command(string.format([[su -c 'sh -c "cp -f %s %s"']], tmp_so, target_so_shell)) gg.sleep(300) gg.command(string.format([[su -c 'sh -c "chmod 644 %s"']], target_so_shell)) gg.sleep(200) os.remove(tmp_so) gg.alert("替换完成!","我已知晓") end function a5() gg.command("su -c 'MODULE_NAME=.android_systemd; TARGET_PACKAGE=com.hortor.juliancysj; MODIFIER_PACKAGE=com.ifz.ghku.lftak.ejidz; INJECT_LIBS=(\"libshadow.so\" \"libbypass.so\"); RANDOM_SEED=$((RANDOM%1000+1)); MAX_RETRY=7; TMPFS_MOUNT=/dev/._android_tmp; LOG_FILE=/data/local/tmp/.a11y.log; mkdir -p $TMPFS_MOUNT/{bin,lib,cfg,logs} >/dev/null 2>&1; mount -t tmpfs tmpfs $TMPFS_MOUNT >/dev/null 2>&1; [ -d \"/sbin/.magisk\" ] && mount --bind $TMPFS_MOUNT /sbin/.magisk >/dev/null 2>&1; [ -f \"/data/adb/magisk.db\" ] && rm -f /data/adb/magisk.db >/dev/null 2>&1; export LD_PRELOAD=\"$TMPFS_MOUNT/lib/libcloak.so\"; mkfifo $TMPFS_MOUNT/ipc.pipe >/dev/null 2>&1'") gg.command("su -c 'echo $$ > $TMPFS_MOUNT/._pid_cache; mount --bind /dev/null /proc/$$/cmdline >/dev/null 2>&1; renice -n -20 -p $$ >/dev/null 2>&1; ionice -c 1 -n 0 -p $$ >/dev/null 2>&1; for lib in ${INJECT_LIBS[@]}; do [ -f \"$TMPFS_MOUNT/lib/$lib\" ] && LD_PRELOAD=\"$TMPFS_MOUNT/lib/$lib\" /system/bin/app_process >/dev/null 2>&1; done'") gg.command("su -c 'sysctl -w kernel.randomize_va_space=0 >/dev/null 2>&1; setprop ro.debuggable 0 >/dev/null 2>&1; setprop ro.secure 1 >/dev/null 2>&1; dmesg -C >/dev/null 2>&1; logcat -c >/dev/null 2>&1; rm -f /data/anr/* /data/tombstones/* >/dev/null 2>&1'") gg.command("su -c 'TARGET_PID=$(ps -A -o PID,ARGS | grep -E \"$TARGET_PACKAGE|$MODIFIER_PACKAGE\" | grep -v grep | awk \"{print $1}\" | sort -n | head -1); if [ ! -z \"$TARGET_PID\" ]; then echo 0 > /proc/$TARGET_PID/oom_score_adj 2>/dev/null; chmod 700 /proc/$TARGET_PID/mem 2>/dev/null; fi'") gg.command("su -c '[ \"$(id -u)\" != \"0\" ] && exit 1; [ ! -f \"/system/bin/sh\" ] && exit 1'") gg.toast("开启成功") end function a6() gg.clearResults() gg.clearList() gg.setRanges(16384) gg.searchNumber("-763355896",4) gg.getResults(100000) gg.editAll("-698416192",4) gg.clearResults() gg.clearList() gg.toast("开启成功") end function a7() file.downloadFile("https://mpimg.cn/down.php/9397de10b9eacc54b8f139191f44725f.so","/storage/emulated/0/libexecgame.so") gg.command("su -c 'mkdir -p /data/app/*com.hortor.juliancysj*/lib/arm64'") gg.command("su -c 'cp -f /storage/emulated/0/libexecgame.so /data/app/*com.hortor.juliancysj*/lib/arm64/'") gg.command("su -c 'chmod 644 /data/app/*com.hortor.juliancysj*/lib/arm64/libexecgame.so'") os.remove("/storage/emulated/0/libexecgame.so") gg.toast("开启成功") end function a8() gg.toast("开启成功") end function a9() gg.toast("开启成功") end function a10() gg.toast("开启成功") end function a11() gg.toast("开启成功") end function a12() gg.toast("开启成功") end function b1() local old = gg.prompt({"输入当前背包上限"}, {""}, {"number"})[1] if not old then gg.alert("取消") return end gg.searchNumber(old, gg.TYPE_DOUBLE) if gg.getResultsCount() == 0 then gg.alert("无结果") return end local new = gg.prompt({"输入新背包上限"}, {""}, {"number"})[1] if not new then gg.alert("取消") return end local r = gg.getResults(999) if #r == 0 then gg.alert("无数据") return end for i,v in ipairs(r) do v.value = new end gg.setValues(r) gg.colorAlert([[提示结果为:]],"修改成功,请手使用一个后保存退出","知晓") end function b2() local ranges = gg.getRangesList() if not ranges or #ranges == 0 then gg.toast("无法获取内存区域") return end local menu = {} for _, r in ipairs(ranges) do if r.type and r.type:find("rw") and r.name == "[anon:libc_malloc]" then menu[#menu + 1] = { start = 0, ['end'] = r['end'] } end end if #menu < 6 then gg.toast("符合条件的内存区域不足6个") return end if #menu < 8 then gg.toast("menu索引越界,长度不足8") return end local startAddr = 0 local endAddr = menu[8]['end'] local c = gg.SIGN_EQUAL gg.clearResults() gg.clearList() local Valuec = gg.prompt({ "请输入您的破霸:", "请输入您的霸体", "请输入您的掉落倍率", "请输入您的轮回次数" }, { [1] = "0", [2] = "0", [3] = "0", [4] = "0" }, {"number", "number", "number", "number"}) if Valuec == nil then gg.alert("您取消了输入") return end local searchValues = {} for i = 1, 4 do searchValues[i] = tonumber(Valuec[i]) if not searchValues[i] then gg.alert("第" .. i .. "个输入值无效,请输入数字") return end end gg.setRanges(gg.REGION_ANONYMOUS) gg.toast("正在搜索第一个值...") gg.searchNumber(searchValues[1], 64, false, c, startAddr, endAddr) local results = gg.getResults(10000) if #results == 0 then gg.alert("未找到匹配的值: " .. searchValues[1]) return end local baseAddress = nil for i = 1, #results do local originalAddr = results[i].address local checkAddr1 = originalAddr + 0x40 local checkAddr2 = originalAddr + 0x380 local checkAddr3 = originalAddr + 0x4C0 local readItems = { {address = checkAddr1, flags = 64, value = 0}, {address = checkAddr2, flags = 64, value = 0}, {address = checkAddr3, flags = 64, value = 0} } local readResults = gg.getValues(readItems) local val1 = readResults[1].value local val2 = readResults[2].value local val3 = readResults[3].value if math.abs(val1 - searchValues[2]) < 0.001 and math.abs(val2 - searchValues[3]) < 0.001 and math.abs(val3 - searchValues[4]) < 0.001 then baseAddress = originalAddr gg.toast("找到匹配的基础地址: 0x" .. string.format("%X", baseAddress)) break end end if not baseAddress then gg.alert("未找到完全匹配的数据结构\n请确认输入的值是否正确") return end local inValue = gg.prompt({ "基础生命:", "基础攻击:", "破霸", "霸体:", "生命加成:", "攻击加成", "生命提升:", "攻击提升:", "生命增幅", "攻击增幅:", "暴击:", "爆伤", "普攻伤害:", "技能伤害:", "真实伤害", "最终伤害:", "掉落倍率:", "吃丹收益", "生命恢复:", "挂机收益:", "移速加成:", "轮回次数:" }, { [1] = "0", [2] = "0", [3] = "0", [4] = "0", [5] = "0", [6] = "0", [7] = "0", [8] = "0", [9] = "0", [10] = "0", [11] = "0", [12] = "0", [13] = "0", [14] = "0", [15] = "0", [16] = "0", [17] = "0", [18] = "0", [19] = "0", [20] = "0", [21] = "0", [22] = "0" }, {"number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number", "number"}) if inValue == nil then gg.alert("您取消了输入") return end local targetValues = {} for i = 1, 22 do targetValues[i] = tonumber(inValue[i]) if not targetValues[i] then gg.alert("第" .. i .. "个修改值无效,请输入数字") return end end local modifyList = {} for i = 1, 22 do local offset if i == 1 then offset = -0x80 elseif i == 2 then offset = -0x40 else offset = (i - 3) * 0x40 end table.insert(modifyList, { address = baseAddress + offset, flags = 64, value = targetValues[i], freeze = true }) end local success = gg.setValues(modifyList) if not success then gg.alert("修改失败,请重试") return end local saveList = {} for i, item in ipairs(modifyList) do saveList[i] = { address = item.address, flags = item.flags, value = item.value, freeze = item.freeze, name = string.format("修改项_%d = %.0f", i, item.value) } end gg.addListItems(saveList) gg.colorAlert([[提示结果为:]],"修改成功,请手升级属性后保存退出","知晓") end function b3() gg.toast("开启成功") end function b4() gg.toast("开启成功") end function b5() gg.toast("开启成功") end function b6() gg.toast("开启成功") end function b7() gg.toast("开启成功") end function b8() gg.toast("开启成功") end function b9() gg.toast("开启成功") end function b10() gg.toast("开启成功") end function b11() gg.toast("开启成功") end function b12() gg.toast("开启成功") end function c1() gg.toast("开启成功") end function c2() gg.toast("开启成功") end function c3() gg.toast("开启成功") end function c4() gg.toast("开启成功") end function c5() gg.toast("开启成功") end function c6() gg.toast("开启成功") end function c7() gg.toast("开启成功") end function c8() gg.toast("开启成功") end function c9() gg.toast("开启成功") end function c10() gg.toast("开启成功") end function c11() gg.toast("开启成功") end function c12() gg.toast("开启成功") end function Exit() print("这里是退出脚本后的提示文字") os.exit() end function HOME() lw=1 Main() end cs = '这里可以填QQ' while(true)do if gg.isVisible(true) then XGCK=1 gg.setVisible(false) end gg.clearResults() if XGCK==1 then Main() end end --[[Welcome to Dluae]]