function xqmnb(Search,Modification) gg.clearResults() gg.setRanges(Search[1].memory) gg.searchNumber(Search[3].value,Search[3].type,false,536870912,0,-1) if gg.getResultCount()==0 then print(Search[2].name..'开启失败 getResultCount = 0') return end local Result=gg.getResults(gg.getResultCount()) local sum for index=4,#Search do sum=0 for i=1,#Result do if gg.getValues({{address=Result[i].address+Search[index].offset,flags=Search[index].type}})[1].value~=Search[index].lv then Result[i].Usable=true sum=sum+1 end end if sum==#Result then print(Search[2].name..'开启失败') return end end local Data,Freeze,Freezes={},{},0 sum=0 for index,value in ipairs(Modification)do for index=1,#Result do if not Result[index].Usable then local Value={address=Result[index].address+value.offset,flags=value.type,value=value.value,freeze=true} if value.freeze then Freeze[#Freeze+1]=Value Freezes=Freezes+1 else Data[#Data+1]=Value end sum=sum+1 end end end gg.removeListItems(Data) gg.setValues(Data) gg.addListItems(Data) gg.addListItems(Freeze) if Freezes==0 then print(Search[2].name..'成功 共修改'..sum..'条数据') else print(Search[2].name..'成功 共修改'..sum..'条数据 冻结'..Freezes..'条数据') end gg.clearResults() 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 end return _S end local _A = string.format('0x%X', Get_Address(t_So, t_Offset, _bit)) return _A end function GetValue(Address , Flag) return gg.getValues({{address = Address , flags = Flag}})[1].value end function SetValue(Address , Flag , Value) return gg.setValues({{address = Address , flags = Flag , value = Value}}) end function GetSo(So) local So_List = gg.getRangesList('^/data/*.so*$') for i = 1 , #So_List do if So_List[i].internalName:gsub('^.*/', '') == So[1] and So_List[i].state == So[2] then return So_List[i].start end end end function ToPointer(So_Cb,Offsets) local Address = So_Cb for i = 1 , #Offsets do Address = gg.getValues({{ address = Address + Offsets[i] , flags = 32 }})[1]["value"] end return Address end function ToAddress(So_Cb,offsets) local address = So_Cb for i = 1 , #offsets do address = gg.getValues({{ address = address + offsets[i] , flags = 32 }})[1]["value"] end return address end function FH_Pointer(So,Pointer,Flag) Temp_So = gg.getRangesList(So)[1].start Address = Temp_So + Pointer return Address end function toast(content) gg.toast(content..'~') end function Motion(Speed,Duration) if Duration == nil then Duration = 10 toast('Duration = nil') end for i=1,Duration do if Speed[1] == nil then else gg.setValues({{address = Addr.Self.MotionX, flags = 16, value = Speed[1]}}) end if Speed[2] == nil then else gg.setValues({{address = Addr.Self.MotionY, flags = 16, value = Speed[2]}}) end if Speed[3] == nil then else gg.setValues({{address = Addr.Self.MotionZ, flags = 16, value = Speed[3]}}) end end end function Move(Site) gg.setValues({ {address = Addr.Self.X, flags = 16, value = Site[1]}, {address = Addr.Self.Y, flags = 16, value = Site[2]}, {address = Addr.Self.Z, flags = 16, value = Site[3]}, {address = Addr.Self.X2, flags = 16, value = Site[1] + 0.5999755859400011}, {address = Addr.Self.Y2 , flags = 16, value = Site[2] + 1.80000305176}, {address = Addr.Self.Z2, flags = 16, value = Site[3] + 0.5999755859400011} }) end function CountDistance(ax, ay, az, x, y, z) return math.sqrt((ax - x)^2 + (ay - y)^2 + (az - z)^2) end--CountDistance function Rad(A) local A_ = 0.0 if A > math.pi/2 then A_ = A - math.pi end if A <- math.pi/2 then A_ = A + math.pi end if A_ == 0.0 then A_ = A end return A_ end --function Aura_Limit(v) Min = -0.5 Max = 0.5 if v > Max then return Max elseif v < Min then return Min else return v end end function Aura_Limit(v, r) local Min = -5 local Max = 5 if v > Max then return Max elseif v < Min then return Min else return v end end Cb_So , Xa_So = {"libminecraftpe.so:bss", "Cb"} , {"libminecraftpe.so", "Xa"}--so立表 So_Cb_Cb , So_Cb_Xa = GetSo(Cb_So) , GetSo(Xa_So) So_Cb , So_Xa = So_Cb_Cb , So_Cb_Xa if not So_Cb then os.exit(gg.alert('无法获取到So','退出')) end Addr, Value = {}, {} Addr.Self, Value.Self = {}, {} Aim = {} InitializeAddressLock = false function RefreshAddr() Addr.Self.MotionY = S_Pointer(Cb_So, {0x22E80, 0x10, 0x3C, 0x328}, true) Addr.Self.MotionX, Addr.Self.MotionZ = Addr.Self.MotionY - 4, Addr.Self.MotionY + 4 Addr.Self.HitBoxX = S_Pointer(Cb_So, {0x22E80, 0x10, 0x3C, 0x304}, true) Addr.Self.HitBoxY = Addr.Self.HitBoxX + 4 Addr.Self.Y = Addr.Self.HitBoxX - 24 Addr.Self.X, Addr.Self.Z = Addr.Self.Y - 4, Addr.Self.Y + 4 Addr.Self.Y2 = Addr.Self.Y + 12 Addr.Self.X2, Addr.Self.Z2 = Addr.Self.Y2 - 4, Addr.Self.Y2 + 4 gg.setRanges(4) gg.clearResults() gg.searchNumber("-1077356886", gg.TYPE_DWORD, false, gg.SIGN_EQUAL, 0, -1) if gg.getResultCount() == 0 then os.exit(print('无法获取到地址')) end Temp_Addr = gg.getResults(1) gg.clearResults() Addr.Self.MaxViewY = Temp_Addr[1]['address'] Addr.Self.ViewY = Addr.Self.MaxViewY - 8 --Addr.Self.ViewY = S_Pointer(Cb_So, {0x95F0, 0x34, 0x20, 0xA0}, true) Addr.Self.ViewX = Addr.Self.ViewY - 4 end--RefreshAddr function Refresh() if not InitializeAddressLock then RefreshAddr() InitializeAddressLock = true end Value.Self.X, Value.Self.Y, Value.Self.Z = GetValue(Addr.Self.X, 16), GetValue(Addr.Self.Y, 16), GetValue(Addr.Self.Z, 16) Value.Self.X2, Value.Self.Y2, Value.Self.Z2 = GetValue(Addr.Self.X2, 16), GetValue(Addr.Self.Y2, 16), GetValue(Addr.Self.Z2, 16) Value.Self.MotionX, Value.Self.MotionY, Value.Self.MotionZ = GetValue(Addr.Self.MotionX, 16), GetValue(Addr.Self.MotionY, 16), GetValue(Addr.Self.MotionZ, 16) Value.Self.ViewX, Value.Self.ViewY = GetValue(Addr.Self.ViewX, 16), GetValue(Addr.Self.ViewY, 16) Aim.X, Aim.Y, Aim.Z = -50, 70, -85 MinPlayer_Distance = CountDistance(Aim.X, Aim.Y, Aim.Z, Value.Self.X, Value.Self.Y, Value.Self.Z) end--Refresh Refresh() gg.addListItems({ {address = Addr.Self.MotionY , flags = 16 , name = 'self motionY'}, {address = Addr.Self.Y , flags = 16 , name = 'self y'}, {address = Addr.Self.HitBoxX , flags = 16 , name = 'self hitboxX'}, {address = Addr.Self.ViewY , flags = 16 , name = 'self viewY'} }) gg.setVisible(false) while true do if gg.isVisible(true) then break end Refresh() --toast(MinPlayer_Distance) --2.2 1.6 Aura = true if Aura then Aura_Speed = 1.2 Aura_OffsetY = 1 Aura_Radius = 5 Aura_Range = 500 if MinPlayer_Distance < Aura_Range then AuraX = Aim.X - Value.Self.X AuraY = Aim.Y - Value.Self.Y + Aura_OffsetY AuraZ = Aim.Z - Value.Self.Z local targetDistance = Aura_Radius + 0.5 local currentDistance = math.sqrt(AuraX^2 + AuraY^2 + AuraZ^2) if MinPlayer_Distance > Aura_Radius * 2 then Motion({AuraX / 4, AuraY, AuraZ / 4}, 1) Aura_Speed = Aura_Speed * 3 toast('正在移动至目标 速度:'..Aura_Speed) end if currentDistance > targetDistance then local Aura_Scale = targetDistance / currentDistance AuraX = AuraX * Aura_Scale AuraY = AuraY * Aura_Scale AuraZ = AuraZ * Aura_Scale end AuraAngle = (AuraAngle or 0) + (Aura_Speed * 0.1) Aura_SetValueX = Aura_Limit(Aura_Radius * math.cos(AuraAngle) + Aura_Limit(AuraX)) Aura_SetValueY = Aura_Limit(Aura_Limit(AuraY)) Aura_SetValueZ = Aura_Limit(Aura_Radius * math.sin(AuraAngle) + Aura_Limit(AuraZ)) gg.setValues({ {address = Addr.Self.MotionX, flags = 16, value = Aura_SetValueX}, {address = Addr.Self.MotionY, flags = 16, value = Aura_SetValueY}, {address = Addr.Self.MotionZ, flags = 16, value = Aura_SetValueZ} }) end--if Range end--aura --print(MinPlayer_Distance)--MinPlayer_Distance AutoAim = false if Auto_Aim then AutoAim_Speed = 0.4 AutoAim_Distance = 8 if MinPlayer_Distance < AutoAim_Distance and MinPlayer_Distance > 1 then local deltaX = Value.Self.X - Aim.X local deltaZ = Value.Self.Z - Aim.Z local deltaY = Value.Self.Y - Aim.Y local Angle_XZ = math.atan2(deltaX, deltaZ) local Angle_YZ = math.atan2(deltaY, math.sqrt(deltaX^2 + deltaZ^2)) local newViewX = Value.Self.ViewX + (Angle_XZ - Value.Self.ViewX) * AutoAim_Speed local newViewY = Value.Self.ViewY + (Angle_YZ - Value.Self.ViewY) * AutoAim_Speed SetValue(Addr.Self.ViewX, 16, newViewX) if MinPlayer_Distance > 6 then SetValue(Addr.Self.ViewY, 16, newViewY) end end end--AutoAim NoFall = false if NoFall then NoFall_Speed = -1.6 if Value.Self.SaveX == nil and Value.Self.SaveY == nil and Value.Self.SaveZ == nil then Value.Self.SaveX, Value.Self.SaveY, Value.Self.SaveZ = 0, 100, 0 end if Value.Self.MotionY <= NoFall_Speed then gg.setValues({ {address = Addr.Self.X, flags = 16, value = Value.Self.SaveX}, {address = Addr.Self.Y, flags = 16, value = Value.Self.SaveY}, {address = Addr.Self.Z, flags = 16, value = Value.Self.SaveZ}, {address = Addr.Self.X2, flags = 16, value = Value.Self.SaveX + 0.5999755859400011}, {address = Addr.Self.Y2, flags = 16, value = Value.Self.SaveY + 1.80000305176}, {address = Addr.Self.Z2, flags = 16, value = Value.Self.SaveZ + 0.5999755859400011} }) Motion({nil, 0.4, nil}, 1) if Value.Self.MotionY < -2 then Motion({nil, 4, nil}, 1) toast('掉落速度过快 判定为拉回 已自动升空') end else if Value.Self.MotionY > -0.07840000093 and Value.Self.MotionY < 0 then Value.Self.SaveX, Value.Self.SaveY, Value.Self.SaveZ = Value.Self.X, Value.Self.Y, Value.Self.Z end end end--NoFall JetPack = false if JetPack then JetPack_Speed = 1 Motion({-math.sin(Value.Self.ViewX) * JetPack_Speed, math.sin(Value.Self.ViewY) * JetPack_Speed, -math.cos(Value.Self.ViewX) * JetPack_Speed}, 1) end--JetPack end--while