Пример #1
0
        public unsafe void Init()
        {
            var scanner = Plugin.PluginInterface.TargetModuleScanner;

            var vfxCreateAddress  = scanner.ScanText("E8 ?? ?? ?? ?? F3 0F 10 35 ?? ?? ?? ?? 48 89 43 08");
            var vfxRunAddress     = scanner.ScanText("E8 ?? ?? ?? ?? 0F 28 B4 24 ?? ?? ?? ?? 48 8B 8C 24 ?? ?? ?? ?? 48 33 CC E8 ?? ?? ?? ?? 48 8B 9C 24 ?? ?? ?? ?? 48 81 C4 ?? ?? ?? ?? 5F");
            var vfxRemoveAddress  = scanner.ScanText("40 53 48 83 EC 20 48 8B D9 48 8B 89 ?? ?? ?? ?? 48 85 C9 74 28 33 D2 E8 ?? ?? ?? ?? 48 8B 8B ?? ?? ?? ?? 48 85 C9");
            var statusAddAddr     = scanner.ScanText("40 53 55 56 57 48 81 EC ?? ?? ?? ?? 0F 29 B4 24 ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 0F B6 AC 24 ?? ?? ?? ?? 0F 28 F3 49 8B F8");
            var statusRemoveAddr  = scanner.ScanText("40 53 48 83 EC 20 48 8D 05 ?? ?? ?? ?? 48 8B D9 48 89 01 48 8D 05 ?? ?? ?? ?? 48 89 81 ?? ?? ?? ?? 48 8B 89 ?? ?? ?? ?? 48 85 C9 74 09 48 8B 01 48 8B D3");
            var statusDeallocAddr = scanner.ScanText("48 85 C9 74 63 53 48 83 EC 20 48 83 3D ?? ?? ?? ?? ?? 48 8B D9 75 0A 48 83 C4 20 5B");

            StatusRemove  = Marshal.GetDelegateForFunctionPointer <StatusRemoveDelegate>(statusRemoveAddr);
            StatusAdd     = Marshal.GetDelegateForFunctionPointer <StatusAddDelegate>(statusAddAddr);
            VfxRemove     = Marshal.GetDelegateForFunctionPointer <VfxRemoveDelegate>(vfxRemoveAddress);
            VfxRun        = Marshal.GetDelegateForFunctionPointer <VfxRunDelegate>(vfxRunAddress);
            VfxCreate     = Marshal.GetDelegateForFunctionPointer <VfxCreateDelegate>(vfxCreateAddress);
            StatusDealloc = Marshal.GetDelegateForFunctionPointer <StatusDeallocDelegate>(statusDeallocAddr);

            // =========================

            var readFileAddress         = scanner.ScanText("E8 ?? ?? ?? ?? 84 C0 0F 84 ?? 00 00 00 4C 8B C3 BA 05");
            var readSqpackAddress       = scanner.ScanText("E8 ?? ?? ?? ?? EB 05 E8 ?? ?? ?? ?? 84 C0 0F 84 ?? 00 00 00 4C 8B C3");
            var getResourceSyncAddress  = scanner.ScanText("E8 ?? ?? 00 00 48 8D 4F ?? 48 89 87 ?? ?? 00 00");
            var getResourceAsyncAddress = scanner.ScanText("E8 ?? ?? ?? 00 48 8B D8 EB ?? F0 FF 83 ?? ?? 00 00");

            ReadSqpackHook       = new Hook <ReadSqpackPrototype>(ReadSqpackHandler, ( long )readSqpackAddress);
            GetResourceSyncHook  = new Hook <GetResourceSyncPrototype>(GetResourceSyncHandler, ( long )getResourceSyncAddress);
            GetResourceAsyncHook = new Hook <GetResourceAsyncPrototype>(GetResourceAsyncHandler, ( long )getResourceAsyncAddress);
            ReadFile             = Marshal.GetDelegateForFunctionPointer <ReadFilePrototype>(readFileAddress);
        }
Пример #2
0
        public unsafe void Init()
        {
            var scanner = Plugin.PluginInterface.TargetModuleScanner;

            var readFileAddress =
                scanner.ScanText("E8 ?? ?? ?? ?? 84 C0 0F 84 ?? 00 00 00 4C 8B C3 BA 05");

            var readSqpackAddress =
                scanner.ScanText("E8 ?? ?? ?? ?? EB 05 E8 ?? ?? ?? ?? 84 C0 0F 84 ?? 00 00 00 4C 8B C3");

            var getResourceSyncAddress =
                scanner.ScanText("E8 ?? ?? 00 00 48 8D 4F ?? 48 89 87 ?? ?? 00 00");

            var getResourceAsyncAddress =
                scanner.ScanText("E8 ?? ?? ?? 00 48 8B D8 EB ?? F0 FF 83 ?? ?? 00 00");


            ReadSqpackHook       = new Hook <ReadSqpackPrototype>(ReadSqpackHandler, ( long )readSqpackAddress);
            GetResourceSyncHook  = new Hook <GetResourceSyncPrototype>(GetResourceSyncHandler, ( long )getResourceSyncAddress);
            GetResourceAsyncHook = new Hook <GetResourceAsyncPrototype>(GetResourceAsyncHandler, ( long )getResourceAsyncAddress);

            ReadFile = Marshal.GetDelegateForFunctionPointer <ReadFilePrototype>(readFileAddress);
        }