Ejemplo n.º 1
0
        public static void Initialize()
        {
            #region SetupPTFXAssetStore

            var pattern = new Pattern("\x0F\xBF\x04\x9F\xB9", "xxxxx");

            var result = pattern.Get(0x19);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64() + 7;
                var value = Marshal.ReadInt32(IntPtr.Add(result, 3));
                PtfxAssetStorePtr = new IntPtr(rip + value);
            }

            #endregion

            #region SetupfwGetAssetIndex

            pattern = new Pattern("\x41\x8B\xDE\x4C\x63\x00", "xxxxx?");

            result = pattern.Get();

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                FwGetAssetIndex = Marshal.GetDelegateForFunctionPointer <FwGetAssetIndexFn>(new IntPtr(rip + value));
            }

            #endregion
        }
Ejemplo n.º 2
0
        public static void Init()
        {
            #region SetupPTFXAssetStore

            var pattern = new Pattern("\x0F\xBF\x04\x9F\xB9", "xxxxx");

            var result = pattern.Get(0x19);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64() + 7;
                var value = Marshal.ReadInt32(IntPtr.Add(result, 3));
                PtfxAssetStorePtr = new IntPtr(rip + value);
            }

            #endregion

            #region SetupfwGetAssetIndex

            pattern = new Pattern("\x41\x8B\xDE\x4C\x63\x00", "xxxxx?");

            result = pattern.Get();

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                FwGetAssetIndex = Marshal.GetDelegateForFunctionPointer <FwGetAssetIndexFn>(new IntPtr(rip + value));
            }

            #endregion

            #region SetupPTFXAddressFunc

            pattern = new Pattern("\x74\x21\x48\x8B\x48\x20\x48\x85\xC9\x74\x18\x48\x8B\xD6\xE8", "xxxxxxxxxxxxxxx");

            result = pattern.Get();

            if (result != IntPtr.Zero)
            {
                byte *address;

                address         = (byte *)result - 10;
                PtfxAddressFunc = Marshal.GetDelegateForFunctionPointer <PtfxAddressFuncDelegate>(new IntPtr(*(int *)(address) + address + 4));
            }

            #endregion

            bInitialized = true;
        }
Ejemplo n.º 3
0
        static MemoryAccess()
        {
            #region SetupPTFXAssetStore

            var pattern = new Pattern("\x48\x8D\x0D\x00\x00\x00\x00\xFF\x50\x10\x8B\x45\x38", "xxx????xxxxxx");

            IntPtr result = pattern.Get();

            if (result != null)
            {
                long rip   = result.ToInt64() + 7;
                int  value = Marshal.ReadInt32(IntPtr.Add(result, 3));
                _ptfxAssetStorePtr = new IntPtr(rip + value);
            }

            #endregion

            #region SetupfwGetAssetIndex

            pattern = new Pattern("\x48\x8D\x54\x24\x00\x8B\xCF\x0D\x00\x00\x00\x00", "xxxx?xxx????");

            result = pattern.Get(0x4F);

            if (result != null)
            {
                long rip   = result.ToInt64() + 4;
                int  value = Marshal.ReadInt32(result);
                _fwGetAssetIndex = Marshal.GetDelegateForFunctionPointer <FwGetAssetIndexFn>(new IntPtr(rip + value));
            }

            #endregion

/*
 #region SetupGetPooledPtfxAddress
 *
 *          pattern = new Pattern("\x48\x8B\x40\x20\x0F\x28\x0B", "xxxxxxx");
 *
 *          result = pattern.Get(-0xA);
 *
 *          if (result != null)
 *          {
 *              long rip = result.ToInt64() + 5;
 *              int value = Marshal.ReadInt32(result + 0x1);
 *              _getPooledPtfxAddress = Marshal.GetDelegateForFunctionPointer<getPooledPtfxAddressFn>(new IntPtr(rip + value));
 *          }
 *
 #endregion*/
        }
Ejemplo n.º 4
0
        /*
         * struct fwPool
         * {
         * void *m_pData;
         * unsigned __int8 *m_bitMap;
         * int m_count;
         * int m_itemSize;
         * int unkItemIndex;
         * int nextFreeSlotIndex;
         * unsigned int m_flags;
         * char pad1[4];
         * };
         */

        public static void Initialize()
        {
            #region SetupPTFXAssetStore

            var pattern = new Pattern("\x0F\xBF\x04\x9F\xB9", "xxxxx");

            var result = pattern.Get(0x19);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64() + 7;
                var value = Marshal.ReadInt32(IntPtr.Add(result, 3));
                PtfxAssetStorePtr = new IntPtr(rip + value);
            }

            #endregion

            #region SetupfwGetAssetIndex

            pattern = new Pattern("\x41\x8B\xDE\x4C\x63\x00", "xxxxx?");

            result = pattern.Get();

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                FwGetAssetIndex = Marshal.GetDelegateForFunctionPointer <FwGetAssetIndexFn>(new IntPtr(rip + value));
            }

            // Entity Pool ->

            pattern = new Pattern("\x4C\x8B\x0D\x00\x00\x00\x00\x44\x8B\xC1\x49\x8B\x41\x08", "xxx????xxxxxxx");

            result = pattern.Get(7);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                ScriptEntityPoolAddr = Marshal.ReadIntPtr(new IntPtr(rip + value));

                // UI.ShowSubtitle(ScriptEntityPoolAddr.ToString("X"));
            }

            // Vehicle Pool ->

            pattern = new Pattern("\x48\x8B\x05\x00\x00\x00\x00\xF3\x0F\x59\xF6\x48\x8B\x08", "xxx????xxxxxxx");

            result = pattern.Get(7);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                VehiclePoolAddr = Marshal.ReadIntPtr(new IntPtr(rip + value));

                //   UI.ShowSubtitle(VehiclePoolAddr.ToString("X"));
            }

            // Ped Pool ->

            pattern = new Pattern("\x48\x8B\x05\x00\x00\x00\x00\x41\x0F\xBF\xC8\x0F\xBF\x40\x10", "xxx????xxxxxxxx");

            result = pattern.Get(7);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                PedPoolAddr = Marshal.ReadIntPtr(new IntPtr(rip + value));

                //  UI.ShowSubtitle(PedPoolAddr.ToString("X"));
            }

            // Object Pool ->

            pattern = new Pattern("\x48\x8B\x05\x00\x00\x00\x00\x8B\x78\x10\x85\xFF", "xxx????xxxxx");

            result = pattern.Get(7);

            if (result != IntPtr.Zero)
            {
                var rip   = result.ToInt64();
                var value = Marshal.ReadInt32(result - 4);
                ObjectPoolAddr = Marshal.ReadIntPtr(new IntPtr(rip + value));

                //  UI.ShowSubtitle(ObjectPoolAddr.ToString("X"));
            }

            pattern = new Pattern("\x48\xF7\xF9\x49\x8B\x48\x08\x48\x63\xD0\xC1\xE0\x08\x0F\xB6\x1C\x11\x03\xD8", "xxxxxxxxxxxxxxxxxxx");

            result = pattern.Get();

            if (result != IntPtr.Zero)
            {
                AddEntityToPool = Marshal.GetDelegateForFunctionPointer <AddEntityToPoolFn>(IntPtr.Subtract(result, 0x68));

                //UI.ShowSubtitle(result.ToString("X"));
            }

            // WinHelper.CopyTlsValues(WinHelper.GetProcessMainThreadId(), Win32Native.GetCurrentThreadId(), 0xC8, 0xC0, 0xB8);

            #endregion

            bInitialized = true;
        }