function getTimeText() local h = tonumber(os.date("%H")) if h >= 0 and h < 6 then return "凌晨" elseif h >= 6 and h < 10 then return "早上" elseif h >= 10 and h < 14 then return "中午" elseif h >= 14 and h < 18 then return "下午" elseif h >= 18 and h < 22 then return "晚上" else return "深夜" end end function getServerMark() local pkgName = gg.getTargetPackage() local serverTag = "" if pkgName == "com.tencent.ig" then serverTag = "国际服" elseif pkgName == "com.rekoo.pubgm" then serverTag = "台湾服" elseif pkgName == "com.vng.pubgmobile" then serverTag = "越南服" elseif pkgName == "com.tencent.pubgm.kr" then serverTag = "日韩服" elseif pkgName == "com.tencent.pubgm.in" then serverTag = "印度服" else serverTag = "其他服区" end return serverTag, gameVer, pkgName end function addToFile(content, serverTag, ver) local fileName = string.format("/storage/emulated/0/%s_%s_输出.h",serverTag,ver) local file = io.open(fileName, "w") if file then file:write(content .. "\n") file:close() end end function searchValue(name,searchStr,refineStr,range,dataType) gg.setRanges(range) gg.searchNumber(searchStr,dataType) if refineStr ~= "" then gg.refineNumber(refineStr,dataType) end end function getLibBase(libName) local ranges = gg.getRangesList(libName) if ranges and #ranges > 0 then return ranges[1].start end return nil end local serverTag, gameVer, gamePkg = getServerMark() local UE4 = getLibBase("libUE4.so") local TB = "/*=============================================\n" TB = TB .. "【工具信息】\n" TB = TB .. "工具名称:PUBG MOBILE 功能抓取工具\n" TB = TB .. "工具版本:V9.9.9\n" TB = TB .. "作者:叶天\n" TB = TB .. "购买/联系:QQ 3810911354 | 微信 CBNBYY6968 | Telegram @YTNB69\n" TB = TB .. "工具购买:@YTNB69\n" TB = TB .. "免责声明:仅供学习,查找游戏漏洞开发请勿用于非法用途,如有侵权联系作者24小时删除本程序\n" TB = TB .. "=============================================\n" TB = TB .. string.format("游戏进程: %s\n",gamePkg) TB = TB .. string.format("采集标识: %s\n",gameVer) TB = TB .. string.format("服务器区服: %s\n",serverTag) TB = TB .. "ABI架构: 64位 \n" TB = TB .. "抓取时间: " .. os.date("%Y-%m-%d").." "..getTimeText().." "..os.date("%H:%M:%S").."\n" TB = TB .. "工具制作者: 叶天\n" TB = TB .. "=============================================*/\n\n" gg.clearResults() gg.setVisible(false) searchValue("Cd内存广角1","400;1;200;500;-70::","1",8,16) local res1 = gg.getResults(1) if res1 and #res1 > 0 then local off = string.format("0x%x",res1[1].address-UE4) TB = TB .. string.format("Cd内存广角1%s//原值1.0 修改2.5\n",off) end gg.clearResults() searchValue("Cd内存广角2","2.5;1;200;0.0001::","1",8,16) local res2 = gg.getResults(gg.getResultsCount()) if res2 and #res2 > 0 then for _,v in ipairs(res2) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("Cd内存广角2%s//原值1.0 修改2.5\n",off) end end gg.clearResults() searchValue("Xa内存广角","8.84113984e-21;8.52492339e-21;8.84111399e-21;8.52823212e-21::18","8.52823212e-21",16384,16) local res3 = gg.getResults(gg.getResultsCount()) if res3 and #res3 > 0 then for _,v in ipairs(res3) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("Xa内存广角3%s//原值8.52823212e-21 修改8.47529256e-21\n",off) end end gg.clearResults() searchValue("聚点","8.84171418e-21;8.52492339e-21;2.74879218e11;-6.13017998e13::","8.52492339e-21",16384,16) local res4 = gg.getResults(1) if res4 and #res4 > 0 then local off = string.format("0x%x",res4[1].address-UE4) TB = TB .. string.format("聚点%s//原值8.52492339e-21 修改8.47963525e-21\n",off) end gg.clearResults() searchValue("无后","8.95340295e-21;2.19911815e12:5","8.95340295e-21",16384,16) local res5 = gg.getResults(gg.getResultsCount()) if res5 and #res5 > 0 then for _,v in ipairs(res5) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("无后%s//原值8.95340295e-21 修改8.47694692e-21\n",off) end end gg.clearResults() searchValue("腰射防抖","-1275068320;-113245504;-1275068352;-1441594400::150","-1275068320",16384,4) local res6 = gg.getResults(gg.getResultsCount()) if res6 and #res6 > 0 then for _,v in ipairs(res6) do local val = gg.getValues({{address=v.address+0x4,flags=4}})[1].value local off = string.format("0x%x",v.address+0x4-UE4) TB = TB .. string.format("腰射防抖%s//原值%s 修改-1119037440\n",off,val) end end gg.clearResults() searchValue("手臂防抖","505487360;505519104;505873388;-1441397792::","-1441397792",16384,4) local res7 = gg.getResults(gg.getResultsCount()) if res7 and #res7 > 0 then for _,v in ipairs(res7) do local val1 = gg.getValues({{address=v.address+0x8,flags=4}})[1].value local val2 = gg.getValues({{address=v.address+0x10,flags=4}})[1].value local off1 = string.format("0x%x",v.address+0x8-UE4) local off2 = string.format("0x%x",v.address+0x10-UE4) TB = TB .. string.format("手臂防抖%s//原值%s 修改-1119036704\n",off1,val1) TB = TB .. string.format("手臂防抖%s//原值%s 修改-1119036704\n",off2,val2) end end gg.clearResults() searchValue("瞬击","8.95857929e-21;8.52988648e-21;8.58285189e-21;8.63581729e-21;8.47697277e-21;8.52993818e-21;2.19919129e12:157","8.95857929e-21",16384,16) local res8 = gg.getResults(1) if res8 and #res8 > 0 then local off = string.format("0x%x",res8[1].address-UE4) TB = TB .. string.format("瞬击%s//原值8.95857929e-21 修改8.95671814e-21\n",off) end gg.clearResults() searchValue("除雾","8.84111561e-21;8.53906301e-21;8.47226818e-21::","8.47226818e-21",16384,16) local res9 = gg.getResults(gg.getResultsCount()) if res9 and #res9 > 0 then for _,v in ipairs(res9) do local val = gg.getValues({{address=v.address+0x24,flags=4}})[1].value local off = string.format("0x%x",v.address+0x24-UE4) TB = TB .. string.format("除雾%s//原值%s 修改-721215457\n",off,val) end end gg.clearResults() searchValue("射速","1409286315;505489408;1409286657::","505489408",16384,4) local res10 = gg.getResults(gg.getResultsCount()) if res10 and #res10 > 0 then for _,v in ipairs(res10) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("射速%s//原值8.53154084e-21 修改8.47963525e-21\n",off) end end gg.clearResults() searchValue("秒趴","8.47697923e-21;2.19905707e12;3.95003036e11;-6.13017998e13::","2.19905707e12",16384,16) local res11 = gg.getResults(gg.getResultsCount()) if res11 and #res11 > 0 then for _,v in ipairs(res11) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("秒趴%s//原值2.19905707e12 修改8.95671814e-21\n",off) end end gg.clearResults() searchValue("加速","2.19909325e12;8.53485602e-21;8.47221648e-21;8.47715371e-21;8.50279631e-21:53","8.50279631e-21",16384,16) local res12 = gg.getResults(gg.getResultsCount()) if res12 and #res12 > 0 then for _,v in ipairs(res12) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("加速%s//原值8.50279631e-21 修改-3.4564993e10\n",off) end end gg.clearResults() searchValue("NOP加速","-700514048;506149161;-700514048::33","506149161",16384,4) local res13 = gg.getResults(gg.getResultsCount()) if res13 and #res13 > 0 then for _,v in ipairs(res13) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("NOP加速%s//原值506149161 修改-721215457\n",off) end end gg.clearResults() searchValue("锁地皮","1409286348;1923088536;-1441135648;-1441397791::","1409286348",16384,4) local res14 = gg.getResults(gg.getResultsCount()) if res14 and #res14 > 0 then for _,v in ipairs(res14) do local val = gg.getValues({{address=v.address+0x1C,flags=4}})[1].value local off = string.format("0x%x",v.address+0x1C-UE4) TB = TB .. string.format("锁地皮%s//原值%s 修改-721215457\n",off,val) end end gg.clearResults() searchValue("除草除树","505874465;505493504;505678352::","505874465",16384,4) local res15 = gg.getResults(gg.getResultsCount()) if res15 and #res15 > 0 then for _,v in ipairs(res15) do local val = gg.getValues({{address=v.address+0x18,flags=4}})[1].value local off = string.format("0x%x",v.address+0x18-UE4) TB = TB .. string.format("除草除树%s//原值%s 修改-721215457\n",off,val) end end gg.clearResults() searchValue("弹孔大小","-1441528864;506335235;505485312;505415744;-698416192::150","506335235",16384,4) local res16 = gg.getResults(gg.getResultsCount()) if res16 and #res16 > 0 then for _,v in ipairs(res16) do local off = string.format("0x%x",v.address-UE4) TB = TB .. string.format("弹孔大小%s//原值9.21479445e-21 修改8.57951974e-21\n",off) end end gg.clearResults() TB = TB .. "\n\n退出.\nBy 叶天" addToFile(TB,serverTag,gameVer) gg.toast("功能搜索完成,已保存文件") print(TB)