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]]