예제 #1
0
        public DSRHook(object caller, int refreshInterval, int minLifetime, string procesName) : base(caller, refreshInterval, minLifetime, p => p.MainWindowTitle == procesName)
        {
            Offsets = new DSROffsets();
            CELib   = new CheatEngineLibrary();

            CamMan          = RegisterRelativeAOB(DSROffsets.CamManBaseAOB, 3, 7, DSROffsets.CamManOffset);
            ChrFollowCam    = RegisterRelativeAOB(DSROffsets.ChrFollowCamAOB, 3, 7, DSROffsets.ChrFollowCamOffset1, DSROffsets.ChrFollowCamOffset2, DSROffsets.ChrFollowCamOffset3);
            GroupMaskAddr   = RegisterRelativeAOB(DSROffsets.GroupMaskAOB, 2, 7);
            GraphicsData    = RegisterRelativeAOB(DSROffsets.GraphicsDataAOB, 3, 7, DSROffsets.GraphicsDataOffset1, DSROffsets.GraphicsDataOffset2);
            ChrClassWarp    = RegisterRelativeAOB(DSROffsets.ChrClassWarpAOB, 3, 7, DSROffsets.ChrClassWarpOffset1);
            WorldChrBase    = RegisterRelativeAOB(DSROffsets.WorldChrBaseAOB, 3, 7, DSROffsets.WorldChrBaseOffset1);
            ChrDbgAddr      = RegisterRelativeAOB(DSROffsets.ChrDbgAOB, 2, 7);
            MenuMan         = RegisterRelativeAOB(DSROffsets.MenuManAOB, 3, 7, DSROffsets.MenuManOffset1);
            ChrClassBasePtr = RegisterRelativeAOB(DSROffsets.ChrClassBaseAOB, 3, 7);
            EventFlags      = RegisterRelativeAOB(DSROffsets.EventFlagsAOB, 3, 7, DSROffsets.EventFlagsOffset1, DSROffsets.EventFlagsOffset2);
            ItemGetAddr     = RegisterAbsoluteAOB(DSROffsets.ItemGetAOB);
            BonfireWarpAddr = RegisterAbsoluteAOB(DSROffsets.BonfireWarpAOB);
            ChrData3        = RegisterRelativeAOB(DSROffsets.ChrData3AOB, 3, 7, DSROffsets.ChrData3Offset);
            AnimData        = RegisterRelativeAOB(DSROffsets.AnimDataAOB, 3, 7, DSROffsets.AnimDataOffset0, DSROffsets.AnimDataOffset1, DSROffsets.AnimDataOffset2, DSROffsets.AnimDataOffset3);
            GameMan         = RegisterRelativeAOB(DSROffsets.GameManAOB, 3, 7, DSROffsets.GameManOffset);

            StopMyChr      = RegisterAbsoluteAOB(DSROffsets.StopMyChrAOB);
            EntityAngle    = RegisterAbsoluteAOB(DSROffsets.EntityAngleAOB);
            EntityCam      = RegisterAbsoluteAOB(DSROffsets.EntityCamAOB);
            DownArrowInput = RegisterAbsoluteAOB(DSROffsets.DownArrowInputAOB);
            ArrowUpInput   = RegisterAbsoluteAOB(DSROffsets.ArrowUpInputAOB);
            GamepadYInput  = RegisterAbsoluteAOB(DSROffsets.GamepadYInputAOB);
            EnemyAttacks   = RegisterAbsoluteAOB(DSROffsets.EnemyAttacksAOB);

            ChrData1    = CreateChildPointer(WorldChrBase, (int)DSROffsets.WorldChrBase.ChrData1);
            ChrMapData  = CreateBasePointer(IntPtr.Zero);
            ChrAnimData = CreateBasePointer(IntPtr.Zero);
            ChrPosData  = CreateBasePointer(IntPtr.Zero);
            ChrData2    = CreateChildPointer(ChrClassBasePtr, DSROffsets.ChrData2Offset1, DSROffsets.ChrData2Offset2);
        }
예제 #2
0
        public DSRHook(int refreshInterval, int minLifetime) :
            base(refreshInterval, minLifetime, p => p.MainWindowTitle == "DARK SOULS™: REMASTERED")
        {
            Offsets         = new DSROffsets();
            CamMan          = RegisterRelativeAOB(DSROffsets.CamManBaseAOB, 3, 7, DSROffsets.CamManOffset);
            ChrFollowCam    = RegisterRelativeAOB(DSROffsets.ChrFollowCamAOB, 3, 7, DSROffsets.ChrFollowCamOffset1, DSROffsets.ChrFollowCamOffset2, DSROffsets.ChrFollowCamOffset3);
            GroupMaskAddr   = RegisterRelativeAOB(DSROffsets.GroupMaskAOB, 2, 7);
            GraphicsData    = RegisterRelativeAOB(DSROffsets.GraphicsDataAOB, 3, 7, DSROffsets.GraphicsDataOffset1, DSROffsets.GraphicsDataOffset2);
            ChrClassWarp    = RegisterRelativeAOB(DSROffsets.ChrClassWarpAOB, 3, 7, DSROffsets.ChrClassWarpOffset1);
            WorldChrBase    = RegisterRelativeAOB(DSROffsets.WorldChrBaseAOB, 3, 7, DSROffsets.WorldChrBaseOffset1);
            ChrDbgAddr      = RegisterRelativeAOB(DSROffsets.ChrDbgAOB, 2, 7);
            MenuMan         = RegisterRelativeAOB(DSROffsets.MenuManAOB, 3, 7, DSROffsets.MenuManOffset1);
            ChrClassBasePtr = RegisterRelativeAOB(DSROffsets.ChrClassBaseAOB, 3, 7);
            EventFlags      = RegisterRelativeAOB(DSROffsets.EventFlagsAOB, 3, 7, DSROffsets.EventFlagsOffset1, DSROffsets.EventFlagsOffset2);
            ItemGetAddr     = RegisterAbsoluteAOB(DSROffsets.ItemGetAOB);
            BonfireWarpAddr = RegisterAbsoluteAOB(DSROffsets.BonfireWarpAOB);

            ChrData1    = CreateChildPointer(WorldChrBase, (int)DSROffsets.WorldChrBase.ChrData1);
            ChrMapData  = CreateBasePointer(IntPtr.Zero);
            ChrAnimData = CreateBasePointer(IntPtr.Zero);
            ChrPosData  = CreateBasePointer(IntPtr.Zero);
            ChrData2    = CreateChildPointer(ChrClassBasePtr, DSROffsets.ChrData2Offset1, DSROffsets.ChrData2Offset2);

            OnHooked += DSRHook_OnHooked;
        }
예제 #3
0
    public List <DS3GXLightBase> GetLights()
    {
        if (!IsValid())
        {
            return(null);
        }
        PHPointer             arrayBase = Hook.CreateChildPointer(BasePointer, Offset + 0x10);
        PHPointer             arrayTail = Hook.CreateChildPointer(BasePointer, Offset + 0x18);
        long                  size      = (arrayTail.Resolve().ToInt64() - arrayBase.Resolve().ToInt64()) / 8;
        List <DS3GXLightBase> lights    = new List <DS3GXLightBase>();

        for (int i = 0; i < size; i++)
        {
            PHPointer light  = Hook.CreateChildPointer(arrayBase, i * 8);
            ulong     vtable = light.ReadUInt64(0);
            if (vtable == 0x143D3A7D8)
            {
                lights.Add(new DS3GXPointLight(Hook, light, i));
            }
            else if (vtable == 0x143D3A8B8)
            {
                lights.Add(new DS3GXSpotLight(Hook, light, i));
            }
        }
        return(lights);
    }
예제 #4
0
 private void DSRHook_OnHooked(object sender, PHEventArgs e)
 {
     Offsets     = DSROffsets.GetOffsets(Process.MainModule.ModuleMemorySize);
     ChrMapData  = CreateChildPointer(ChrData1, (int)DSROffsets.ChrData1.ChrMapData + Offsets.ChrData1Boost1);
     ChrAnimData = CreateChildPointer(ChrMapData, (int)DSROffsets.ChrMapData.ChrAnimData);
     ChrPosData  = CreateChildPointer(ChrMapData, (int)DSROffsets.ChrMapData.ChrPosData);
 }
예제 #5
0
        public void DSRHook_OnHooked()
        {
            Offsets = DSROffsets.GetOffsets(Process.MainModule.ModuleMemorySize);

            ChrMapData  = CreateChildPointer(ChrData1, (int)DSROffsets.ChrData1.ChrMapData + Offsets.ChrData1Boost1);
            ChrAnimData = CreateChildPointer(ChrMapData, (int)DSROffsets.ChrMapData.ChrAnimData);
            ChrPosData  = CreateChildPointer(ChrMapData, (int)DSROffsets.ChrMapData.ChrPosData);
        }
예제 #6
0
        /// <summary>
        /// Constructor
        /// Needs to RescanAOB() for pointers to update
        /// </summary>
        /// <param name="process"></param>
        public PrepareToDie(PHook process) : base(process)
        {
            // Set pointers
            base.pFlags  = Process.RegisterAbsoluteAOB(FLAGS_AOB, 8, 0, 0);
            base.pLoaded = Process.RegisterAbsoluteAOB(CHR_DATA_AOB, 4, 0, 0x4, 0x0);

            pBasePtr       = Process.RegisterAbsoluteAOB(BASE_PTR_AOB, 2);
            pInventoryData = Process.RegisterAbsoluteAOB(INVENTORY_DATA_AOB, 1);

            Process.RescanAOB();
        }
예제 #7
0
        /// <summary>
        /// Constructor
        /// Needs to RescanAOB() for pointers to update
        /// </summary>
        /// <param name="process"></param>
        public Remastered(PHook process) : base(process)
        {
            // Set pointers
            base.pFlags  = Process.RegisterRelativeAOB(FLAGS_AOB, 3, 7, 0, 0);
            base.pLoaded = Process.RegisterRelativeAOB(CHR_FOLLOW_CAM_AOB, 3, 7, 0, 0x60, 0x60);

            pBasePtr       = Process.RegisterRelativeAOB(BASE_PTR_AOB, 3, 7);
            pItemAddr      = Process.RegisterAbsoluteAOB(ITEM_ADDR_AOB);
            pInventoryData = Process.RegisterRelativeAOB(INVENTORY_DATA_AOB, 3, 7);

            Process.RescanAOB();
        }
예제 #8
0
 private void DS1Hook_OnHooked(object sender, PHEventArgs e)
 {
     if (Is64Bit)
     {
         InventoryData = RegisterPointer("48 8B 05 ? ? ? ? 48 85 C0 ? ? F3 0F 58 80 AC 00 00 00", 3, true, 0, 0x10, 0x3B8);
         RescanAOB();
     }
     else
     {
         InventoryData = RegisterPointer("A1 ? ? ? ? 53 55 8B 6C 24 10 56 8B 70 08 32 DB 85 F6", 1, false, 0, 8, 0x2DC);
         RescanAOB();
     }
 }
        /// <summary>
        /// Constructor
        /// Needs to RescanAOB() for pointers to update
        /// </summary>
        /// <param name="process"></param>
        public PrepareToDie(PHook process) : base(process)
        {
            // Set pointers
            pCharClassBase  = Process.RegisterAbsoluteAOB(CHAR_CLASS_BASE_AOB, 2, 0);
            pInventoryReset = Process.RegisterAbsoluteAOB(INVENTORY_RESET_AOB, 36);
            pLoaded         = Process.RegisterAbsoluteAOB(CHR_DATA_AOB, 4, 0, 0x4, 0x0);
            pCurrentSlot    = Process.RegisterAbsoluteAOB(CURRENT_SLOT_AOB, 2, 0);
            pSL2            = Process.RegisterAbsoluteAOB(SL2_INFORMATION_AOB, 7);

            Process.RescanAOB();

            if (!Process.AOBScanSucceeded)
            {
                throw new Exception("At least one AOB scan failed.");
            }
        }
예제 #10
0
        public DSHook(int refreshInterval, int minLifetime) :
            base(refreshInterval, minLifetime, p => p.MainWindowTitle == "DARK SOULS")
        {
            Version = "None";

            CheckVersion = CreateBasePointer((IntPtr)DSOffsets.CheckVersion);

            PosLock              = RegisterAbsoluteAOB(DSOffsets.PosLockAOB);
            NodeGraph            = RegisterAbsoluteAOB(DSOffsets.NodeGraphAOB);
            AllNoMagicQtyConsume = RegisterAbsoluteAOB(DSOffsets.AllNoMagicQtyConsumeAOB, DSOffsets.AllNoMagicQtyConsumeAOBOffset);
            PlayerNoDead         = RegisterAbsoluteAOB(DSOffsets.PlayerNoDeadAOB, DSOffsets.PlayerNoDeadAOBOffset);
            PlayerExterminate    = RegisterAbsoluteAOB(DSOffsets.PlayerExterminateAOB, DSOffsets.PlayerExterminateAOBOffset);
            AllNoStaminaConsume  = RegisterAbsoluteAOB(DSOffsets.AllNoStaminaConsumeAOB, DSOffsets.AllNoStaminaConsumeAOBOffset);
            Compasses            = RegisterAbsoluteAOB(DSOffsets.CompassAOB);
            CompassSmall         = CreateChildPointer(Compasses, DSOffsets.CompassSmallAOBOffset);
            Altimeter            = CreateChildPointer(Compasses, DSOffsets.AltimeterAOBOffset);
            CompassLarge         = CreateChildPointer(Compasses, DSOffsets.CompassLargeAOBOffset);
            DrawMapPtr           = RegisterAbsoluteAOB(DSOffsets.DrawMapAOB, DSOffsets.DrawMapAOBOffset);

            CharData1    = RegisterAbsoluteAOB(DSOffsets.CharData1AOB, DSOffsets.CharData1AOBOffset, DSOffsets.CharData1Offset1, DSOffsets.CharData1Offset2, DSOffsets.CharData1Offset3);
            CharMapData  = CreateChildPointer(CharData1, (int)DSOffsets.CharData1.CharMapDataPtr);
            AnimData     = CreateChildPointer(CharMapData, (int)DSOffsets.CharMapData.AnimDataPtr);
            CharPosData  = CreateChildPointer(CharMapData, (int)DSOffsets.CharMapData.CharPosDataPtr);
            CharData2    = RegisterAbsoluteAOB(DSOffsets.CharData2AOB, DSOffsets.CharData2AOBOffset, DSOffsets.CharData2Offset1, DSOffsets.CharData2Offset2);
            Gestures     = CreateChildPointer(CharData2, (int)DSOffsets.CharData2.GesturesUnlockedPtr);
            GraphicsData = RegisterAbsoluteAOB(DSOffsets.GraphicsDataAOB, DSOffsets.GraphicsDataAOBOffset, DSOffsets.GraphicsDataOffset1, DSOffsets.GraphicsDataOffset2);
            WorldState   = RegisterAbsoluteAOB(DSOffsets.WorldStateAOB, DSOffsets.WorldStateAOBOffset, DSOffsets.WorldStateOffset1);
            MenuManager  = RegisterAbsoluteAOB(DSOffsets.MenuManagerAOB, DSOffsets.MenuManagerAOBOffset, DSOffsets.MenuManagerOffset1);
            ChrFollowCam = RegisterAbsoluteAOB(DSOffsets.ChrFollowCamAOB, DSOffsets.ChrFollowCamAOBOffset, DSOffsets.ChrFollowCamOffset1, DSOffsets.ChrFollowCamOffset2, DSOffsets.ChrFollowCamOffset3);
            EventFlags   = RegisterAbsoluteAOB(DSOffsets.EventFlagsAOB, DSOffsets.EventFlagsAOBOffset, DSOffsets.EventFlagsOffset1, DSOffsets.EventFlagsOffset2);
            Unknown1     = RegisterAbsoluteAOB(DSOffsets.Unknown1AOB, DSOffsets.Unknown1AOBOffset, DSOffsets.Unknown1Offset1);
            Unknown2     = RegisterAbsoluteAOB(DSOffsets.Unknown2AOB, DSOffsets.Unknown2AOBOffset, DSOffsets.Unknown2Offset1);
            Unknown3     = RegisterAbsoluteAOB(DSOffsets.Unknown3AOB, DSOffsets.Unknown3AOBOffset, DSOffsets.Unknown3Offset1);
            Unknown4     = RegisterAbsoluteAOB(DSOffsets.Unknown4AOB, DSOffsets.Unknown4AOBOffset, DSOffsets.Unknown4Offset1, DSOffsets.Unknown4Offset2);

            FuncItemGet             = RegisterAbsoluteAOB(DSOffsets.FuncItemGetAOB);
            FuncLevelUp             = RegisterAbsoluteAOB(DSOffsets.FuncLevelUpAOB);
            FuncBonfireWarp         = RegisterAbsoluteAOB(DSOffsets.FuncBonfireWarpAOB);
            FuncBonfireWarpUnknown1 = RegisterAbsoluteAOB(DSOffsets.FuncBonfireWarpUnknown1AOB, DSOffsets.FuncBonfireWarpUnknown1AOBOffset);
            FuncItemDrop            = RegisterAbsoluteAOB(DSOffsets.FuncItemDropAOB);
            FuncItemDropUnknown1    = RegisterAbsoluteAOB(DSOffsets.FuncItemDropUnknown1AOB, DSOffsets.FuncItemDropUnknown1AOBOffset);
            FuncItemDropUnknown2    = RegisterAbsoluteAOB(DSOffsets.FuncItemDropUnknown2AOB, DSOffsets.FuncItemDropUnknown2AOBOffset);

            OnHooked   += DSHook_OnHooked;
            OnUnhooked += DSHook_OnUnhooked;
        }
예제 #11
0
        /// <summary>
        /// Removes a weapon from the player's inventory
        /// </summary>
        /// <param name="weapon"></param>
        public override void DeleteItem(BlackKnightWeapon weapon)
        {
            InventoryItem[] result = new InventoryItem[0];

            if (Process.Hooked)
            {
                result = new InventoryItem[2048];
                IntPtr    pointer    = pInventoryData.Resolve();
                PHPointer pInventory = Process.CreateChildPointer(pInventoryData, 0, 0x10, 0x3B8);
                byte[]    bytes      = pInventory.ReadBytes(0, 2048 * 0x1C);

                for (int i = 0; i < 2048; i++)
                {
                    result[i] = new InventoryItem(bytes, i * 0x1C);
                    if (result[i].Category == weapon.Category && result[i].ID == weapon.ID)
                    {
                        pInventory.WriteBytes(i * 0x1C, new byte[0x1C]);
                    }
                }
            }
        }
예제 #12
0
 public DS2GXPointLight(PHook hook, PHPointer b, int index)
 {
     Hook        = hook;
     BasePointer = b;
     Index       = index;
 }
예제 #13
0
 public SampleHook() : base(5000, 5000, p => p.ProcessName == "DarkSoulsRemastered")
 {
     WorldChrBase = CreateBasePointer((IntPtr)0x141D151B0, 0);
     ChrData1     = CreateChildPointer(WorldChrBase, 0x68);
     ChrData2     = RegisterRelativeAOB("48 8B 05 ? ? ? ? 48 85 C0 ? ? F3 0F 58 80 AC 00 00 00", 3, 7, 0, 0x10);
 }
예제 #14
0
 public DS3Hook() : base(5000, 5000, p => p.ProcessName.ToLower() == "darksoulsiii")
 {
     RendManPointer = CreateBasePointer((IntPtr)0x1447809c8);
 }
예제 #15
0
 public DS1Hook() : base(p => p.MainWindowTitle == "DARK SOULS" || p.MainWindowTitle == "DARK SOULS™: REMASTERED", 5000)
 {
     InventoryData = null;
     OnHooked     += DS1Hook_OnHooked;
     OnUnhooked   += DS1Hook_OnUnhooked;
 }
예제 #16
0
 private void DS1Hook_OnUnhooked(object sender, PHEventArgs e)
 {
     InventoryData = UnregisterPointer(InventoryData);
 }
예제 #17
0
 public DS3GXLightManager(PHook hook, PHPointer b, int offset)
 {
     Hook        = hook;
     BasePointer = b;
     Offset      = offset;
 }
예제 #18
0
 public DS2SOTFSHook() : base(5000, 5000, p => p.ProcessName.ToLower() == "darksoulsii")
 {
     KatanaMainAppPointer = CreateBasePointer((IntPtr)0x14166C1D8);
     KatanaMainApp        = CreateChildPointer(KatanaMainAppPointer, 0x0);
     KatanaDrawSystem     = CreateChildPointer(KatanaMainApp, 0x348);
 }