-
-
Notifications
You must be signed in to change notification settings - Fork 13
Development
For building, use Visual Studio Community 2019 or a compatible IDE.
All binaries are 32 bit, because the game is 32 bit and also the free version of the Detours library cant do 64 bit. However, everything runs fine on a 64 bit system.
Development happens on the dev
branch, beta versions get built from the beta
branch and release versions from the master
branch.
Please note that no decompiled source code of the game is provided, instead you must decompile your own copy of the game.
First of all, copy setup.bat.example
to setup.bat
and adjust the paths to your environment. Then, install https://github.com/djkaty/Il2CppInspector and https://github.com/glmcdona/Process-Dump (http://split-code.com/processdump.html) and add both to your PATH
or change setup.bat
. Launch the game, and then run decompile.bat
.
The dynamic_analysis.py
script can be used to generate tracing code in order to isolate specific obfuscated functions during runtime.
If you want to build for a specific version of the game (each build uses different obfuscated names), append the preprocessor macro GAME_VERSION
in the project configuration like this: GAME_VERSION=20209220
. See the README for version numbers.
A post-build task ist defined in Visual Studio, which calls the file vmupload.bat
. This script copies the compiled DLL to the Steam game installation directory, and pushes it to a few test VMs if you enabled this in setup.bat
.
For testing, I recommend setting up a private game server using https://github.com/Impostor/Impostor or https://github.com/roobscoob/NodePolus.
Prefer C++11 & stdlib features over legacy C, do not use C-like string handling except if required by external APIs. Use nullptr
instead of NULL
. Curly brackets in a new line if the code block has more than one line. Use the following naming scheme:
- Files containing classes/structs:
ClassName.cpp
/StructName.h
- Other files:
other-file.h
- Functions:
CamelCase
- Variables:
lowerCamelCase
- Classes/Structs:
CamelCase
- Enums/Defines:
SCREAMING_CAMEL
- Hooks/Trampolines:
OriginalName_Hook
andOriginalName_Trampoline
- Deobfuscated classes/structs:
ClassName
- Deobfuscated class members:
ClassName_MemberName
- Deobfuscated enums/-entries:
ClassName_EnumName__Enum
andClassName_EnumName__Enum_EntryName
- Look at the files generated by IL2CPPInspector
- Look for unobfuscated enum entry names or function names
- Use the
dynamic_analysis.py
script for runtime observation - Hook multiple functions and look at the stacktrace
- Attach the debugger and explore memory