function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值,4,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function setValues(address, flags, value) gg.setValues({[1] = {address = address, flags = flags, value = value}}) end function setvalue(address,flags,value) tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end function setBaseAddress(name, offset, value, flags, freeze) local addr = gg.getRangesList(name)[1]["start"] + offset local tb = {{["address"] = addr, ["value"] = value , ["flags"] = flags, ["freeze"] = freeze}} gg.setValues(tb) gg.addListItems(tb) end function search(t,Tab,Name,type,free) nm=os.clock() rt={} gg.setRanges(type) gg.clearResults() if tostring(t[1][1]):find("{") then gg.searchNumber(t[1][1][1].."~"..t[1][1][2], t[1][2], false, gg.SIGN_EQUAL, 0, -1) else gg.searchNumber(t[1][1], t[1][2], false, gg.SIGN_EQUAL, 0, -1) end local r = gg.getResults(99999999) if #r==0 then goto last end for it=2,#t do for i=1,#r do r[i].address=r[i].address+t[it][2] r[i].flags=t[it][3] end local rr=gg.getValues(r) tt={} for i=1,#rr do if tostring(t[it][1]):find("{") then if tonumber(rr[i].value)>=tonumber(t[it][1][1]) and tonumber(rr[i].value)<=tonumber(t[it][1][2]) then ii=#tt+1 tt[ii]={} tt[ii].address=rr[i].address-t[it][2] tt[ii].flags=t[it][3] end else if tonumber(rr[i].value)==tonumber(t[it][1]) then ii=#tt+1 tt[ii]={} tt[ii].address=rr[i].address-t[it][2] tt[ii].flags=t[it][3] end end end if #tt==0 then goto last end r=gg.getValues(tt) if it==#t then rt=r goto last end end ::last:: if #rt>0 then for v=1,#Tab do tt={} for i=1,#rt do ii=#tt+1 tt[ii]={} tt[ii].address=rt[i].address+Tab[v][2] tt[ii].flags=Tab[v][3] tt[ii].value=Tab[v][1] if free or Tab[v][4] then tt[i].freeze=true end end if free or Tab[v][4] then gg.addListItems(tt) else gg.setValues(tt) end end gg.toast(Name.."已开启,共修改"..#rt*#Tab.."个数值,耗时"..os.clock()-nm.."s") gg.setVisible(false) gg.clearResults() else gg.toast(Name.."开启失败") end end function 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 -------case35 so=gg.getRangesList('libanogs.so')[1].start a1=0x228180 setvalue(so+a1,4,335544360) a2=0x33054C setvalue(so+a2,4,-721215457) a3=0x3386C4 setvalue(so+a3,4,-721215457) a4=0x362A00 setvalue(so+a4,4,-721215457) a5=0x362C38 setvalue(so+a5,4,-721215457) a6=0x37C958 setvalue(so+a6,4,-721215457) py=0x37fd78 setvalue(so+py,4,-698416192) ------crc32 / crc16 py=0x3DFAE0 setvalue(so+py,4,943720076) py=0x3E4694 setvalue(so+py,4,943719467) py=0x3E4738 setvalue(so+py,4,943719468) py=0x49AA48 setvalue(so+py,4,943719433) py=0x49ABE4 setvalue(so+py,4,943720042) py=0x3FF900 setvalue(so+py,4,-721215457) py=0x3FF904 setvalue(so+py,4,706675680) py=0x3FF7E8 setvalue(so+py,4,445251914) py=0x49AA3C setvalue(so+py,4,335544330) py=0x49ABE4 setvalue(so+py,4,943720042) py=0x4B5E48 setvalue(so+py,4,335544329) --------哈希 py=0x39F598 setvalue(so+py,4,335544356) --------report_bk py=0x213F88 setvalue(so+py,4,-721215457) --------哈希数据上报 py=0x37F82C setvalue(so+py,4,1384120320) ---------------get2 py=0x1C7DAC setvalue(so+py,4,1384120320) py=0x1CC938 setvalue(so+py,4,1384120320) ---------数据上报 py=0x1C6128 setvalue(so+py,4,335544478) py=0x1C63B8 setvalue(so+py,4,706675704) ---------------hook检测 py=0x3A902C setvalue(so+py,4,-113238327) ---------心跳 py=0x1FE448 setvalue(so+py,4,-698416192) ------openid py=0x1C5238 setvalue(so+py,4,-1440807949) so=gg.getRangesList('libUE4.so')[1].start py=0x5F1D9A0 setvalue(so+py,4,-698416192)