---123避案
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(0x269CDB36)
		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
		end
		return _S
	end
	local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
	return _A
end

function edit(orig,ret)_om=orig[1].memory or orig[1][1]_ov=orig[3].value or orig[3][1]_on=orig[2].name or orig[2][1]gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz=gg.getResultCount()if sz<1 then gg.toast(_on.."失败")else sl=gg.getResults(720)for i=1,sz do ist=true for v=4,#orig do if ist==true and sl[i].value==_ov then cd={{}}cd[1].address=sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags=orig[v].type or orig[v][3]szpy=gg.getValues(cd)cdlv=orig[v].lv or orig[v][1]cdv=szpy[1].value if cdlv==cdv then pdjg=true ist=true else pdjg=false ist=false end end end if pdjg==true then szpy=sl[i].address for x=1,#(ret)do xgpy=szpy+(ret[x].offset or ret[x][2])xglx=ret[x].type or ret[x][3]xgsz=ret[x].value or ret[x][1]xgdj=ret[x].freeze or ret[x][4]xgsj={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xgsj[1].freeze=xgdj gg.addListItems(xgsj)else gg.setValues(xgsj)end end xgjg=true end end if xgjg==true then gg.toast(_on.."成功")else gg.toast(_on.."失败")end end end
function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.addListItems(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end
function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "地址成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "失败") end end end end
function PS() end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "地址成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end
-----仿XS

readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end
gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. " 开启成功 , 共修改"..#Table.."个值") end
readPointer = function(name, offset, i)
  local re=gg.getRangesList(name)
  local x64=gg.getTargetInfo().x64
  local va={[true]=32,[false]=4}
  if re[i or 1] then
    local addr=re[i or 1].start+offset[1]
    for i = 2,#offset do
      addr = gg.getValues({{address=addr,flags=va[x64]}})
      if not x64 then
        addr[1].value = addr[1].value & 0xFFFFFFFF
      end
      addr = addr[1].value + offset[i]
    end
    return addr
  end
end
function readValue(add, flags)
	local t=gg.getValues({[1]={address=add,flags=flags}})
	return t[1].value
end

local function readF(a)
  return gg.getValues({{
      address=a,
      flags=16
    }})[1].value
end
local function readD(a)
  return gg.getValues({{
      address=a,
      flags=4
    }})[1].value
end

local function getAddress(a)
  return a
end

local threshold = 1024 * 1024 * 0
local function allocateMemory()
  local data = {}
  for i = 1, 1 do
    data[i] = i
  end
end
local function checkMemory()
  local usedMemory = collectgarbage("count")
  if usedMemory > threshold then
    collectgarbage("collect")
  end
end
local function run()
  for i = 1, 100 do
    allocateMemory()
    checkMemory()
  end
end
-- 运行程序
function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end
local function RUI(address)
  return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value
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(1,1) == 'r' 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 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
    end
    return _S
  end
  local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit))
  return _A
end
--拿枪开启，否则报错


function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. " 开启成功 ,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end 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(0x269CDB36)
		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
function HaoGe(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] if (count > 0) then for i,v in ipairs(result) do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2] - base local num=Search[k][1] for i,v in ipairs(result) do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=tostring(num) then result[i].isUseful=false end end end for i,v in ipairs(result) do if (v.isUseful) then data[#data+1]=v.addre7ss end end if (#data > 0) then local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n📥修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name..tg) tg_,th_=nil,nil else gg.toast("❌搜索不到",false) return false end else gg.toast("❌搜索不到") return false end end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function PS() end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. " 开启成功 ,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end
function PS() end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function Main0()
end
state={} state.a="[开启]" state.b="[开启]" state.c="[开启]" state.d="[开启]" state.e="[开启]"
function edit(orig,ret)_om=orig[1].memory or orig[1][1]_ov=orig[3].value or orig[3][1]_on=orig[2].name or orig[2][1]gg.clearResults()gg.setRanges(_om)gg.searchNumber(_ov,orig[3].type or orig[3][2])sz=gg.getResultCount()if sz<1 then gg.toast(_on.."开启失败")else sl=gg.getResults(720)for i=1,sz do ist=true for v=4,#orig do if ist==true and sl[i].value==_ov then cd={{}}cd[1].address=sl[i].address+(orig[v].offset or orig[v][2])cd[1].flags=orig[v].type or orig[v][3]szpy=gg.getValues(cd)cdlv=orig[v].lv or orig[v][1]cdv=szpy[1].value if cdlv==cdv then pdjg=true ist=true else pdjg=false ist=false end end end if pdjg==true then szpy=sl[i].address for x=1,#(ret)do xgpy=szpy+(ret[x].offset or ret[x][2])xglx=ret[x].type or ret[x][3]xgsz=ret[x].value or ret[x][1]xgdj=ret[x].freeze or ret[x][4]xgsj={{address=xgpy,flags=xglx,value=xgsz}}if xgdj==true then xgsj[1].freeze=xgdj gg.addListItems(xgsj)else gg.setValues(xgsj)end end xgjg=true end end if xgjg==true then gg.toast(_on.." 开启成功 ")else gg.toast(_on.."开启失败")end end end
function SearchWrite(Search, Write, Type) gg.clearResults() gg.setVisible(false) gg.searchNumber(Search[1][1], Type) local count = gg.getResultCount() local result = gg.getResults(count) gg.clearResults() local data = {} local base = Search[1][2] if (count > 0) then for i, v in ipairs(result) do v.isUseful = true end for k=2, #Search do local tmp = {} local offset = Search[k][2] - base local num = Search[k][1] for i, v in ipairs(result) do tmp[#tmp+1] = {} tmp[#tmp].address = v.address + offset tmp[#tmp].flags = v.flags end tmp = gg.getValues(tmp) for i, v in ipairs(tmp) do if ( tostring(v.value) ~= tostring(num) ) then result[i].isUseful = false end end end for i, v in ipairs(result) do if (v.isUseful) then data[#data+1] = v.address end end if (#data > 0) then gg.toast("搜索到"..#data.."条数据") local t = {} local base = Search[1][2] for i=1, #data do for k, w in ipairs(Write) do offset = w[2] - base t[#t+1] = {} t[#t].address = data[i] + offset t[#t].flags = Type t[#t].value = w[1] if (w[3] == true) then local item = {} item[#item+1] = t[#t] item[#item].freeze = true gg.addListItems(item) end end end gg.setValues(t) gg.toast("已修改"..#t.."条数据") gg.addListItems(t) else gg.toast("not found", false) return false end else gg.toast("Not Found") return false end end
function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] xgdj = qmxg[x]["freeze"] if xgdj == nil or xgdj == "" then gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) else gg.addListItems({[1] = {address = xgpy, flags = xglx, freeze = xgdj, value = xgsz}}) end xgsl = xgsl + 1 xgjg = true end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) end end if xgjg == true then gg.toast(qmnb[2]["name"] .. " 开启成功 ,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end
----------------------------------------------------------------------------------------------------
function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. " 开启成功 ,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end

readPointer = function(name, offset, i) local re=gg.getRangesList(name) local x64=gg.getTargetInfo().x64 local va={[true]=32,[false]=4} if re[i or 1] then local addr=re[i or 1].start+offset[1] for i = 2,#offset do addr = gg.getValues({{address=addr,flags=va[x64]}}) if not x64 then addr[1].value = addr[1].value & 0xFFFFFFFF end addr = addr[1].value + offset[i] end return addr end end
gg.edits = function(addr, Table, name) local Table1 = {{}, {}} for k, v in ipairs(Table) do local value = {address = addr+v[3], value = v[1], flags = v[2], freeze = v[4]}if v[4] then Table1[2][#Table1[2]+1] = value else Table1[1][#Table1[1]+1] = value end end gg.addListItems(Table1[2])gg.setValues(Table1[1]) gg.toast((name or "") .. "开启成功, 共修改"..#Table.."个值") end
readPointer = function(name, offset, i)
  local re=gg.getRangesList(name)
  local x64=gg.getTargetInfo().x64
  local va={[true]=32,[false]=4}
  if re[i or 1] then
    local addr=re[i or 1].start+offset[1]
    for i = 2,#offset do
      addr = gg.getValues({{address=addr,flags=va[x64]}})
      if not x64 then
        addr[1].value = addr[1].value & 0xFFFFFFFF
      end
      addr = addr[1].value + offset[i]
    end
    return addr
  end
end

local function readD ( a )
    return gg.getValues ( { {
            address = a ,
            flags = 4
        } } ) [ 1 ].value
end
function setvalue(address,flags,value) local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function addListltems(address,flags,value,freeze) t={} t[1]={} t[1].address=address t[1].flags=flags t[1].value=value t[1].freeze=freeze gg.addListItems(t) end
local function RUI(address)
return gg.getValues({{address = address, flags = gg.TYPE_QWORD}})[1].value
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
function HaoGe(Search,Get,Type,Range,Name) gg.clearResults() gg.setRanges(Range) gg.setVisible(false) if Search[1][1]~=false then gg.searchAddress(Search[1][1],0xFFFFFFFF,Search[1][4] or Type,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) end gg.searchNumber(Search[1][2],Search[1][4] or Type,false,gg.SIGN_EQUAL,Search[1][5] or 1,Search[1][6] or -1) local count=gg.getResultCount() local result=gg.getResults(count) gg.clearResults() local data={} local base=Search[1][3] if (count > 0) then for i,v in ipairs(result) do v.isUseful=true end for k=2,#Search do local tmp={} local offset=Search[k][2] - base local num=Search[k][1] for i,v in ipairs(result) do tmp[#tmp+1]={} tmp[#tmp].address=v.address+offset tmp[#tmp].flags=Search[k][3] or Type end tmp=gg.getValues(tmp) for i,v in ipairs(tmp) do if v.flags==16 or v.flags==64 then values=tostring(v.value):sub(1,6) num=tostring(num):sub(1,6) else values=v.value end if tostring(values)~=tostring(num) then result[i].isUseful=false end end end for i,v in ipairs(result) do if (v.isUseful) then data[#data+1]=v.addre7ss end end if (#data > 0) then local t,t_={},{} local base=Search[1][3] for i=1,#data do for k,w in ipairs(Get) do offset=w[2] - base if w[1]==false then t_[#t_+1]={} t_[#t_].address=data[i]+offset t_[#t_].flags=Type th_=(th_) and th_+1 or 1 else t[#t+1]={} t[#t].address=data[i]+offset t[#t].flags=w[3] or Type t[#t].value=w[1] tg_=(tg_) and tg_+1 or 1 if (w[4]==true) then local item={} item[#item+1]=t[#t] item[#item].freeze=w[4] gg.addListItems(item) end end end end tg=(tg_) and "\n📥修改"..tg_.."数据" or "" th=(th_) and "" or "" gg.setValues(t) t_=gg.getValues(t_) gg.loadResults(t_) gg.toast("\n"..Name..tg) tg_,th_=nil,nil else gg.toast("❌搜索不到",false) return false end else gg.toast("❌搜索不到") return false end end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function PS() end function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function PS() end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end
function split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex) if not nFindLastIndex then nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString)) break end nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1) nFindStartIndex = nFindLastIndex + string.len(szSeparator) nSplitIndex = nSplitIndex + 1 end return nSplitArray end function xgxc(szpy, qmxg) for x = 1, #(qmxg) do xgpy = szpy + qmxg[x]["offset"] xglx = qmxg[x]["type"] xgsz = qmxg[x]["value"] gg.setValues({[1] = {address = xgpy, flags = xglx, value = xgsz}}) xgsl = xgsl + 1 end end function xqmnb(qmnb) gg.clearResults() gg.setRanges(qmnb[1]["memory"]) gg.searchNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) gg.refineNumber(qmnb[3]["value"], qmnb[3]["type"]) if gg.getResultCount() == 0 then gg.toast(qmnb[2]["name"] .. "开启失败") else sl = gg.getResults(999999) sz = gg.getResultCount() xgsl = 0 if sz > 999999 then sz = 999999 end for i = 1, sz do pdsz = true for v = 4, #(qmnb) do if pdsz == true then pysz = {} pysz[1] = {} pysz[1].address = sl[i].address + qmnb[v]["offset"] pysz[1].flags = qmnb[v]["type"] szpy = gg.getValues(pysz) pdpd = qmnb[v]["lv"] .. ";" .. szpy[1].value szpd = split(pdpd, ";") tzszpd = szpd[1] pyszpd = szpd[2] if tzszpd == pyszpd then pdjg = true pdsz = true else pdjg = false pdsz = false end end end if pdjg == true then szpy = sl[i].address xgxc(szpy, qmxg) xgjg = true end end if xgjg == true then gg.toast(qmnb[2]["name"] .. "开启成功,共修改" .. xgsl .. "条数据") else gg.toast(qmnb[2]["name"] .. "开启失败") end end end end
function PS() end
function setvalue(address,flags,value) PS('修改地址数值(地址,数值类型,要修改的值)') local tt={} tt[1]={} tt[1].address=address tt[1].flags=flags tt[1].value=value gg.setValues(tt) end


j={}
xgz={}
ZY='Main'
  time=os.date("%m月%d日 %H:%M:%S",os.time())
  l=gg.getTargetInfo()
  xtxx="避案全基址全🔥\n━━━━━━━━━━━━━━━━━━\n开启时间: "..time
  
  
function Main()
BA = gg.choice({
"和平防封",
"全火功能",
"上分功能",
"娱乐功能",
"全机型内透",
"不拉回加速",
"跳伞加速",
"骑着你M飞走咯"
},nil,xtxx)--公告
if BA == 1 then HPFF() end
if BA == 2 then QHGN() end
if BA == 3 then SFGN() end
if BA == 4 then YLGN() end
if BA == 5 then RWNT() end
if BA == 6 then BLH() end
if BA == 7 then TSJS() end
if BA == 8 then Exit() end
XGCK=0
end

function HPFF()
FF = gg.choice({
"基址连打第一套(出生岛)",
"内存奔放第二套(出生岛)",
"返回主页",
},0,"123避案")
if FF == 1 then FF1() end
if FF == 2 then FF2() end
if FF == 3 then HOME() end
XGCK=0
end



function FF1()
local t = {"libgcloud.so:bss", "Cb"}
local tt = {0x1050}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = 123, freeze = true}})

local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x1980}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = 123, freeze = true}})

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x150910}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = 123, freeze = true}})

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x14798}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 4, value = 123, freeze = true}})
end



function FF2()
gg.clearResults()
gg.setRanges(16384)
gg.searchNumber('562,036,800',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(200) 
 jg=gg.getResults(200)
	 sl=gg.getResultCount()
	 for i = 1, sl do
	 	 dzy=jg[i].address
	 	 gg.addListItems({[1] = {address = dzy,flags =
        gg.TYPE_DWORD,freeze = true,value = 0}})
end
gg.clearResults()
gg.setRanges(16384)
gg.searchNumber('109,052,992',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(200) 
 jg=gg.getResults(200)
	 sl=gg.getResultCount()
	 for i = 1, sl do
	 	 dzy=jg[i].address
	 	 gg.addListItems({[1] = {address = dzy,flags =
        gg.TYPE_DWORD,freeze = true,value = 0}})
end
gg.clearResults()
gg.setRanges(16384)
gg.searchNumber('372,245,056',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(200) 
 jg=gg.getResults(200)
	 sl=gg.getResultCount()
	 for i = 1, sl do
	 	 dzy=jg[i].address
	 	 gg.addListItems({[1] = {address = dzy,flags =
        gg.TYPE_DWORD,freeze = true,value = 0}})
end
gg.clearResults()
gg.setRanges(16384)
gg.searchNumber('372,834,880',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(200) 
 jg=gg.getResults(200)
	 sl=gg.getResultCount()
	 for i = 1, sl do
	 	 dzy=jg[i].address
	 	 gg.addListItems({[1] = {address = dzy,flags =
        gg.TYPE_DWORD,freeze = true,value = 0}})
end
gg.clearResults()
gg.setRanges(16384)
gg.searchNumber('377,029,184',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(200) 
 jg=gg.getResults(200)
	 sl=gg.getResultCount()
	 for i = 1, sl do
	 	 dzy=jg[i].address
	 	 gg.addListItems({[1] = {address = dzy,flags =
        gg.TYPE_DWORD,freeze = true,value = 0}})
end
gg.clearResults()
gg.setRanges(16384)
gg.searchNumber('268,435,520',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.searchNumber('',gg.TYPE_DWORD,false,gg.SIGN_EQUAL,0, -1)
gg.getResults(200) 
 jg=gg.getResults(200)
	 sl=gg.getResultCount()
	 for i = 1, sl do
	 	 dzy=jg[i].address
	 	 gg.addListItems({[1] = {address = dzy,flags =
        gg.TYPE_DWORD,freeze = true,value = 0}})
end
end



function QHGN()
BA1 = gg.choice({
"飞天加速等功能",
"开火加速",
"挥拳加速(待更新)",
"海岛动力鞋",
"开枪定点",
"开枪聚点",
"返回主页",
},0,"枯必")
if BA1 == 1 then FTZH() end
if BA1 == 2 then KHJS() end
if BA1 == 3 then HQJS() end
if BA1 == 4 then DLX() end
if BA1 == 5 then DXJS() end
if BA1 == 6 then KQJD() end
if BA1 == 7 then HOME() end
XGCK=0
end





function FTZH()
local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(全火功能.).lua'
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
 cfg = chunk()
end
if cfg == nil then
cfg = {-12,2,0.0002}
end
FT=gg.prompt({
"请输入飞天数值\n1等于关闭:",
"请输入人物移动数值\n1等于关闭:",
"请输入全局减速数值\n1等于关闭",
"是否关闭人物飞天",
"是否关闭人物移速",
"是否关闭全局减速",
},cfg,{"text","text","text","checkbox","checkbox","checkbox"})
if FT == nil then else
gg.saveVariable(FT, cfg_file)
if FT[1] == true then xgtf() end
if FT[2] == true then xgti() end
if FT[3] == true then xgef() end
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x14F4A0,0x18,0x6D0,0x538,0x5C0,0x1D4}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = FT[1], freeze = true}})---飞天

local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x4DBED0, 0x98, 0x88, 0x30, 0x2ae8, 0x31B4}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = FT[2]}})----移速

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x2D1A8, 0x20, 0x2E0, 0x778}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = FT[3]}}) --慢动作



if FT[4] == true then
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x14F4A0,0x18,0x6D0,0x538,0x5C0,0x1D4}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1, freeze = true}})
gg.toast("飞天已关闭")
end

if FT[5] == true then
local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x4DBED0, 0x98, 0x88, 0x30, 0x2ae8, 0x31B4}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}})
gg.toast("移速已关闭")
end



if FT[6] == true then
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x2D1A8, 0x20, 0x2E0, 0x778}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) --慢动作
gg.toast("减速已关闭")
end
end
end







function KHJS()
mk=gg.getRangesList('libUE4.so')[1].start
add  = RUI(RUI(RUI(RUI(RUI(mk + 0xCD69ED0) + 0x98) + 0x88) +0x30) + 0x2ae8)

kh = gg.prompt({"开火加速的速度(默认1)："},{"3"},{"number"})

gg.toast("开火加速已开启")
if kh ~= nil then
while true do
if readD(add+0x1C48) == 1 then--开火加速
setvalue(add+0x31B4,16,kh[1])
end 
if readD(add+0x1C48) == 0 then
setvalue(add+0x31B4,16,1)
end
if gg.isVisible(true) then
a=gg.alert("开火加速","返回主页面","调整速度")
gg.setVisible(false)
if a == 1 then Main() end
if a == 2 then KHJS() end
end
end
end
end





function DXJS()
mk=gg.getRangesList('libUE4.so')[1].start
add  = RUI(RUI(RUI(RUI(RUI(mk + 0xCD69ED0) + 0x98) + 0x88) +0x30) + 0x2ae8)


while true do
if readD(add+0x1C48) == 1 then
setvalue(add+0x80,16,0)
else
if readD(add+0x1C48) == 0 then
setvalue(add+0x80,16,1)
end 
if gg.isVisible(true) then
a=gg.alert("开枪定点","返回主页面")
gg.setVisible(false)
if a == 1 then Main() end
end
end
end
end

   
   

function DLX()
 local t = {"libUE4.so:bss", "Cb"}
local tt = {0x4DBED0,0x90,0xB0,0x58,0x80}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 30}})  --动力靴主速度可夜最远900米

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x1CE908}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = -2}}) 
gg.sleep(2600)
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x4DBED0,0x90,0xB0,0x58,0x80}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) 

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x1CE908}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) 
end

function KQJD()
mk=gg.getRangesList('libUE4.so')[1].start
add  = RUI(RUI(RUI(RUI(RUI(mk + 0xCD69ED0) + 0x98) + 0x88) +0x30) + 0x2ae8)

while true do
if readD(add+0x1C48) == 1 then--开火判断
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D8CC
setvalue(so+py,4,-1119858432)
end 
if readD(add+0x1C48) == 0 then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D8CC
setvalue(so+py,4,-1118334720)
end
if gg.isVisible(true) then
a=gg.alert("开火聚点","返回主页面")
gg.setVisible(false)
if a == 1 then Main() end

end
end
end















function SFGN()
SF=gg.prompt({
"是否开启全枪无后[基址]",
"是否开启全枪防抖[基址]",
"是否开启全枪聚点[基址]",
"是否开启全枪瞬击[基址]",
"是否开启全枪射速[基址]",
"是否开启全屏自瞄[基址]",
"是否开启全图除雾[基址]",
"是否开启平板视角[基址]",
"是否开启全局变速[基址]",
"是否关闭全局变速[基址]",
},cfg,{"checkbox","checkbox","checkbox","checkbox","checkbox","checkbox","checkbox","checkbox","checkbox","checkbox",})
if SF == nil then else
if SF[1] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D80C
setvalue(so+py,4,-1119858432)
gg.toast("全枪无后开启成功")
end


if SF[2] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x3FCBF78
setvalue(so+py,4,-1119858688)
gg.toast("全枪防抖开启成功")
end


if SF[3] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D8CC
setvalue(so+py,4,-1119858432)
gg.toast("聚点开启成功")
end 

if SF[4] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D938
setvalue(so+py,16,4.23519705e-22)
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D93C
setvalue(so+py,16,-6.13017998e13)
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D940
setvalue(so+py,16,1700000)
gg.toast("全枪瞬击开启成功")
end

if SF[5] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6CB60
setvalue(so+py,4,-1119858432)
gg.toast("全枪射速开启成功")
gg.toast("射速开启成功")
end

if SF[6] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x5EC3924
setvalue(so+py,16,8.47695338e-21)
gg.toast("全屏自瞄开启成功")
end

if SF[7] == true then
so=gg.getRangesList('libUE4.so')[1].start
py=0x6673300
setvalue(so+py,16,1.41233867e-13)
gg.toast("全图除雾开启成功")
end

if SF[8] == true then
local cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'(视角.).lua'
local chunk = loadfile(cfg_file)
local cfg = nil
if chunk ~= nil then
 cfg = chunk()
end
if cfg == nil then
cfg = {320,true}
end
sk=gg.prompt({
"请输入视角数值:",
},cfg,{"text"})
if sk == nil then else
gg.saveVariable(sk, cfg_file)
if sk[1] == true then xgtf() end
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x14F4A0, 0x18, 0x7D8, 0x4A0, 0x8, 0x2A4}
local ttt = S_Pointer(t, tt, true)
gg.addListItems({{address = ttt, flags = 16, value = sk[1], freeze = true}})
gg.toast("视角开启成功")
end
end

if SF[9] == true then
local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x4DBED0,0x90,0xB0,0x58,0x80}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 12}})----移速
gg.toast("全局变速开启成功")
end

if SF[10] == true then
local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x4DBED0,0x90,0xB0,0x58,0x80}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}})----移速
gg.toast("全局变速关闭成功")
end
end
end



function RWNT()
  YTTS = gg.choice({
    "掩体透视(进入游戏开启)",
    "无掩体上白色(大厅开启)",
    "返回脚本"
  },0, "123")--公告
  if YTTS == 1 then YT() end
  if YTTS == 2 then BT() end
  if YTTS == 3 then HOME() end
  XGCK=-1
end

function XM()
  if not gg.getRangesList(("libUE4.so")) or #gg.getRangesList(("libUE4.so")) == 0 then
    os.exit(print(("so模块不存在 libUE4.so 请检查游戏进程是否正确？")))
  end
  cfg_file = gg.EXT_FILES_DIR.."/"..gg.getFile():match("[^/]+$")..'掩体透视.txt'
  chunk = loadfile(cfg_file)
  cfg = nil
  if chunk ~= nil then --如果访问的文件存在的话那就执行下面代码
    cfg = chunk() --有的话cfg从空变成导入进去的模块，就是这个表
  end
  if cfg == nil then
    cfg = {0, 1, 0, 0.75, 999, true}
  end
  color = gg.prompt({
    "R(红)0~1:",
    "G(绿)0~1:",
    "B(蓝)0~1:",
    "透明度0~1:",
    "循环延迟默认:100ms",
  },cfg,{"text", "text", "text", "text", "text",})
  if color == nil then gg.alert("检测到你点击了页面，是否重新调整参数值，点击空白处则取消操作","好的")
    gg.saveVariable(color, cfg_file)
    XM()
    if color[1] == nil then color[1] = 1 end
    if color[2] == nil then color[2] = 1 end
    if color[3] == nil then color[3] = 1 end
    if color[4] == nil then color[4] = 1 end
    if color[5] == nil then color[5] = 1 end
   else
    gg.saveVariable(color, cfg_file)
    if color[1] == true then HZ1() end
    if color[2] == true then HZ1() end
    if color[3] == true then HZ1() end
    if color[4] == true then HZ1() end
    if color[5] == true then HZ1() end
  end

  header=gg.getRangesList('libUE4.so')[1].start
  Array = RUI(header + 0xCC74DE8)
  while true do
    gg.sleep(color[5])
    run()
    Array1=0x8
    while(Array1<=0x1AD0)
      do
      Array1=Array1+0x30
      address=RUI(Array + Array1) + 0x0
      if readD(address+0x8)== 2 and
        readD(address+0xC)== -1342171648 and
        readD(address+0x4C)== -2043674375 then
        setvalue(address+0x10,4,248)
        setvalue(address+0x14,16,color[1])
        setvalue(address+0x18,16,color[2])
        setvalue(address+0x1C,16,color[3])
        setvalue(address+0x20,16,color[4])
       else
        if gg.isVisible(true) then
          gg.setVisible(false)
          a=gg.alert("检测到你点击了页面，是否重新调整参数值，点击空白处则取消操作。","调整参数值","返回首页(没反应多点几次)")
          if a == 1 then XM() end
          if a == 2 then Main() end
        end
      end--弹窗
    end--遍历
  end--while
end--HZ1()

function SS()
local t = {"libUE4.so:bss", "Cb"}
	local tt = {0x4DBED0, 0x788, 0x8, 0x30, 0x38, 0x18}
	local ttt = S_Pointer(t, tt, true)
	gg.setValues({{address = ttt, flags = 16, value = 999}})
gg.toast("白体开启完毕")
end



function YLGN()
YL = gg.choice({
"人物反向(开)",
"人物反向(关)",
"广播体操(开)",
"广播体操(关)",
"手指抽搐(开)",
"手指抽搐(关)",
"返回主页",
},0,"dy.枯必")
if YL == 1 then YL1() end
if YL == 2 then YL2() end
if YL == 3 then YL3() end
if YL == 4 then YL4() end
if YL == 5 then YL5() end
if YL == 6 then YL6() end
if YL == 7 then HOME() end
XGCK=0
end




function YL1()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x7C8F8,0xC38,0x50,0x280,0x194}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = -1}}) --反向
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x7C8F8,0xC38,0x50,0x280,0x198}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = -1}}) --反向
end

function YL2()
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x7C8F8,0xC38,0x50,0x280,0x194}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) --反向
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x7C8F8,0xC38,0x50,0x280,0x198}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) --反向
end


function YL3()
so=gg.getRangesList('libUE4.so')[1].start
py=0x93CFAF4
setvalue(so+py,4,0)
gg.toast("广播体操开")
end 




function YL4()

so=gg.getRangesList('libUE4.so')[1].start
py=0x93CFAF4
setvalue(so+py,4,939524352)
gg.toast("广播体操关")
end


function YL5()
mk=gg.getRangesList('libUE4.so')[1].start
add  = RUI(RUI(RUI(RUI(RUI(mk + 0xCD69ED0) + 0x98) + 0x88) +0x30) + 0x2ae8)

while true do
if readD(add+0x1C48) == 1 then--开火判断
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A2BA0
setvalue(so+py,16,-0.001)
end 
if readD(add+0x1C48) == 0 then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D8CC
setvalue(so+py,16,1)
end
if gg.isVisible(true) then
a=gg.alert("手臂抽筋开","返回主页面")
gg.setVisible(false)
if a == 1 then Main() end

end
end
end



function YL6()
mk=gg.getRangesList('libUE4.so')[1].start
add  = RUI(RUI(RUI(RUI(RUI(mk + 0xCD69ED0) + 0x98) + 0x88) +0x30) + 0x2ae8)

while true do
if readD(add+0x1C48) == 1 then--开火判断
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A2BA0
setvalue(so+py,16,1)
end 
if readD(add+0x1C48) == 0 then
so=gg.getRangesList('libUE4.so')[1].start
py=0x4A6D8CC
setvalue(so+py,16,1)
end
if gg.isVisible(true) then
a=gg.alert("手臂抽筋关","返回主页面")
gg.setVisible(false)
if a == 1 then Main() end

end
end
end


function TSJS()
mk=gg.getRangesList('libUE4.so')[1].start
add  = RUI(RUI(RUI(RUI(RUI(mk + 0xCD69ED0) + 0x98) + 0x88) +0x30) + 0x2ae8)

gg.toast("跳伞加速已开启")
while true do
if readD(add+0x538) == 32 then
setvalue(add+0x80,16,3)--3跳伞速度
end
if readD(add+0x538) == 34 then
setvalue(add+0x80,16,1)
end
if gg.isVisible(true) then
a=gg.alert("跳伞加速","返回主页面")
gg.setVisible(false)
if a == 1 then Main() end
end
end
end



function BLH()
HL = gg.choice({
"开启",
"关闭",
"返回主页",
},2023,"碰到反斜坡拉回就方向杆往后拉就可以恢复正常了有时候关闭加速他还会灵魂一下,如果你发现捡不了物资你再，开启加速，他就会回到原来那个地方，然后再关闭就可以正常了")
if HL == 1 then BHL1() end
if HL == 2 then BHL2() end
if HL == 3 then HOME() end
XGCK=0
end





function BHL1()


local t = {"libUE4.so:bss", "Cb"}
local tt = {0x2D1A8, 0x20, 0x2E0, 0x778}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 0.0002}}) --慢动作
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x1CE908}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = -0.1}}) --罚站

local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x5458, 0x0, 0x190, 0x30, 0x0, 0x4}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 100}})  ---防拉回

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x4DBED0,0x90,0xB0,0x58,0x80}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1800}}) --罚站
end


function BHL2()

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x2D1A8, 0x20, 0x2E0, 0x778}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 0.4}}) --慢动作
local t = {"libUE4.so:bss", "Cb"}
local tt = {0x1CE908}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) --罚站

local t = {"libtersafe.so:bss", "Cb"}
local tt = {0x5458, 0x0, 0x190, 0x30, 0x0, 0x4}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 45}})  ---防拉回

local t = {"libUE4.so:bss", "Cb"}
local tt = {0x4DBED0,0x90,0xB0,0x58,0x80}
local ttt = S_Pointer(t, tt, true)
gg.setValues({{address = ttt, flags = 16, value = 1}}) 

end


function HOME()----返回 Main = 主页
Main()----你想要返回的界面
end---结束

function Exit()
gg.toast("避案nb6666")
print(sj)
os.exit() 
end



while true do
sj = os.date("避案")
  if gg.isVisible(true) then
    XGCK = nil
    gg.setVisible(false)
  end
  if XGCK == nil then
    Main()
  end
end

