function S_Pointer(t_So, t_Offset, _bit) local function getRanges() local ranges = {} local tt = {} local t = gg.getRangesList('^/data/*.so*$') for i in pairs(t) do if t[i].type:sub(2, 2) == 'w' then table.insert(ranges, t[i]) 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(load("\x72\x65\x74\x75\x72\x6E\x20\x22\xE6\x9B\xB4\xE5\xA4\x9A\xE8\xB5\x84\xE6\xBA\x90\xE5\x8A\xA0\xE5\x85\xA5\x54\x47\x40\x4C\x61\x6E\x6E\x62\x22")()) end return _S end local _A = string.format('%X', Get_Address(t_So, t_Offset, _bit)) return _A end local t = {"libunity.so:bss","Cb"} local tt = {-0xC7A524,0x15C} local ttt= S_Pointer(t, tt, true) gg.setValues({{address = '0x'..ttt, flags = 4, value =505942016}}) gg.alert(os.date("ca经典强锁开启成功"),"")