LuaR  @@@A@%%@%e@K@B@@B@@B@ ggrequire82.1@Search_Pointer tab_Contrasttab_Classificationfunction 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  C_EditorM_Main isVisible setVisible@@݀D%eBe@gggetTargetInfox64 @A  #@@@GAƁGB݁@FG]B@A# offset? = value, stringformat0x%Xaddresspairs -> + 0x%X/ %@A]A@, R@̀ @ @GA@cAA ABAAAC@BAB @͂@B @@cAoffset?pairsSo internalNamegsub^.*/addressstringformat[0x%X]valueflagsstatebit0x%X0D5@Aa G@GA@@K DGAj DF]E DžA  @A @ B  b"B@@`AF_  maxOffset?pairsoffsetvalueAipairsaddress_tEN  F@G@]@AAA݁BA@A#A gggetRangesList^/data/*.so*$ipairstypesub@wtableinsertP@@[A@݁Ɓ@݁@BA@B KI @! @@AHF@GC]CF@G@]CBE@F@G@C ECGC]@@C DDJDDD D"@CXA @BA@BBE FB] DEEE ADE  @D #DEEE ADEF F ADFC  @ J #b"ʀ@JGJȏ@BH@ABA@@DAcB$ maxOffset tonumbergg getResultsj@ loadResults?toast from  internal3ipairsgetResultsCountstartendremoveResultsmaptableinsertpairsstringformat0x%Xaddress %s + 0x%X internalNamegsub^.*/@ 重新搜索exit 退出搜索 multiChoice 共搜索到 条锁链   R@@@ GG BGG BGG BGG BFBB]UMC bBFBG]"A@@ GG BGG BGG BGG BFBB]UMCÁ bBFBG]BB@B"AA pairs?So@state@flags@valueipairstableconcat,[UXFA@]KK@ D J CAAJJ‚CBJÂ[C@C@D@DE@DADE DE @AEփbAAFDG]ipairs?So@statetttbittrue@( gg.setValues({{address = ttt, flags = flags , value = }})+ gg.addListItems({{address = ttt, flags = , freeze = true}}) local t = {"tableconcat", ""} local tt = {, } local ttt = S_Pointer() .hKX@@@@AAA@@ AA$AKdAA݀@ǀAFC][@A@ǁAB݁ B@BD DABABaFEG]@C`FB@GBB A$C]EEĈG@BG@B ggalert 是否修改是否?prompt输入要修改的值 是否冻结text checkbox@tab_Classification 4要给你输出到文件里吗 我会print出来的getFilegsub[^/]*$pointer@@ioopen.luaclose脚本的输出文件filew+writeprint1}' A@AAAB$@FCG@]@KCCAAAB@AFAFVFC AA$AKdAA݀:AHGFH]A8H1 AII@A@K  dACCAB FBFV1FC AB$BKdBB݁-BHGFCGF]BFCG ǂHC ]B@(H'ƁKA'K  B A dACCA FBFV!F KCFACB A$CKdC@BHFGH݂L@FM]CMD ʁD C#D MCMAD VĄǃEC@CM̈́ J CcDHCH@Cǁ@AC EUB A GANǁA@NƁKAGCA@@NC@OCA@P@P@@N@@F "玫瑰扎到了上帝的手,上帝便折断了玫瑰,他用最后的余香撑起风城,那天雨很大,花香溢满了整个明尼苏达"b "乌云挡住了芝加哥的风 但挡不住明尼苏达的花香也挡不住底特律的救赎"1 "凡人的身躯终究承受不住神的天赋"[ "寸头守故乡,脏辫走四方。即使玫瑰被上帝折了,却依然花香四溢"U "玫瑰腐烂的时候比野花都难闻,盛开的时候却比任何花都芬芳"U "那晚尼苏达没有狼,一个从芝加哥出来的狮子客串着狼的角色" "那晚森林没有狼,玫瑰花香飘满整个明尼苏达,玫瑰花香弥漫整个芝加哥城 人们都以为迈克尔乔丹回来了"Y "芝加哥有两位英雄,一个手握6个总冠军,一个全身弥漫玫瑰花香" "曾几何时,芝加哥人以为他们的另一个神出现了。没想到,只是玫瑰的花香飘过了风城的天空"r "唐斯是最有天赋的 维金斯是最受上帝眷顾的 巴特勒是最努力的 可他啊 以前全都是." "有那么一个夜晚雨很大,森林里没有狼,花香溢满了整个明尼苏达 黑夜代替光阴,但是掩盖不住玫瑰的花香 那天晚上花香弥漫了整个明尼苏达 那晚他再次绽放" "那年NBA没有软蛋"gg setRangesN@choice 基址查找 基址对比 作者的话 使用教程 官网原版 退出脚本 青衫白衣mathrandom?prompt深度最大偏移量@p@numberSearch_Pointer@ C_Editor+/storage/emulated/0/Android/Chain_Contrastioopen 开始记录返回第一次记录  saveVariabletoast 记录了 条锁链M_Main 记录对比 记录结果 记录删除对比记录  loadfile tab_Contrastpairs 退出编辑 multiChoice 共筛选出osremove@alertemmm, 二改下enyby的, 修复了些bug 少了点细节 UI也不是特别好, 但这些不是重点 我觉得动态基址不只是用来修改 获取可能更多 所以就没有确定的写修改 这些可能给小白一些麻烦 那个local ttt获取的是地址 我那个function获取的都是地址 我这里有对比 值呀什么的都要不变 另外锁链也不能过多 可能会有交流群 本人散修 写这个供大家学习 希望大家好好对待 本人青衫白衣关于查找基址: 请务必在搜索列表有值 然后根据自己所需要的进行查找 若查找锁链过多 请自行减小偏移和深度 改值的话中规中矩 关于对比: 若要对比获得不变基址 请务必搜索列表有值 在进行第一次对比后需重启程序进行第二次寻找 若想重新记录第一次 则请'记录删除' 之后请按照需要进行@ copyText8https://gameguardian.net/forum/files/file/1409-chainer/@print4如果实在要加群的话 0x167ba0fe(转10进制)exit