Surasia / InfiniteExt

InfiniteExt is a customizable DLL Hook for Halo Infinite for interacting with the built-in HavokScript VM and tag system.
GNU General Public License v3.0
6 stars 0 forks source link
halo haloinfinite hooking reverse-engineering

InfiniteExt

InfiniteExt is a customizable DLL Hook for Halo Infinite for interacting with the built-in HavokScript VM and tag system. This project is built on top of Blamify's Gatekeeper, with functionality updated for the latest build of Halo Infinite.

Features/To-Do

[!TIP] PRs and Feature requests are appreciated!

Installation

InfiniteExt requires Easy Anti Cheat to be disabled, which can be achieved by moving the contents of the /game folder into the main installation directory, overriding the existing HaloInfinite.exe which acts only as an Easy Anti Cheat loader.

For hooking InfiniteExt to Halo Infinite, the USER32 DLL has to be replaced with InfiniteExt. In a Hex editor of your choice, open the HaloInfinite.exe executable, search for USER32.DLL and replace with InfExt.DLL.

[!IMPORTANT] Replace the User32 DLL inside the main HaloInfinite.exe, the one you moved from /game. This file should be around 80-90MBs depending on version.

Building

This project can be built using Visual Studio 2022 (vc143) with vcpkg installed. To install vcpkg, follow these instructions.. Previous versions of Visual Studio haven not been tested.

[!NOTE] The current project is not cross-platform compatible due to a multitude of Microsoft-specific extensions of C++ being used. Usage on Linux using Wine has not been tested.

Usage

Console

InfiniteExt's ImGui interface contains a command line that is directly integrated into the built-in HavokScript VM of Halo Infinite. Here, you can run regular lua functions in addition to the custom C bindings which you can find a list for here.

Debug Menu

The debug menu contains multiple toggles for:

Tag Editor

InfiniteExt provides a tag window that allows you to load and view tags. Simply press the "Load Tags" button and the list will populate with tags sorted by their class. Currently, except for CMSW (CoatingSwatch) files, the list view only provides metadata for tags. For CMSW files however, you can click the "Edit Tag" button, which will open up a seperate window that will allow you to edit every property of the tag.

Keybindings:

Licenses/Dependencies