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); }
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; }
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); }
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); }
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); }
/// <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(); }
/// <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(); }
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."); } }
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; }
/// <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]); } } } }
public DS2GXPointLight(PHook hook, PHPointer b, int index) { Hook = hook; BasePointer = b; Index = index; }
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); }
public DS3Hook() : base(5000, 5000, p => p.ProcessName.ToLower() == "darksoulsiii") { RendManPointer = CreateBasePointer((IntPtr)0x1447809c8); }
public DS1Hook() : base(p => p.MainWindowTitle == "DARK SOULS" || p.MainWindowTitle == "DARK SOULS™: REMASTERED", 5000) { InventoryData = null; OnHooked += DS1Hook_OnHooked; OnUnhooked += DS1Hook_OnUnhooked; }
private void DS1Hook_OnUnhooked(object sender, PHEventArgs e) { InventoryData = UnregisterPointer(InventoryData); }
public DS3GXLightManager(PHook hook, PHPointer b, int offset) { Hook = hook; BasePointer = b; Offset = offset; }
public DS2SOTFSHook() : base(5000, 5000, p => p.ProcessName.ToLower() == "darksoulsii") { KatanaMainAppPointer = CreateBasePointer((IntPtr)0x14166C1D8); KatanaMainApp = CreateChildPointer(KatanaMainAppPointer, 0x0); KatanaDrawSystem = CreateChildPointer(KatanaMainApp, 0x348); }