-
Reverse Engineering Adventures: Honkai Impact 3rd (Houkai 3) (IL2CPP) (Part 1)
Of all the IL2CPP workloads that have landed on my office desk over the years, those published by miHoYo (web site in Chinese) are what I consider to be the current gold standard for IL2CPP obfuscation. miHoYo has taken aim at our beloved (and sometimes hated) IL2CPP tools and trashed them with customized metadata encryption…
-
Reverse Engineering Adventures: League of Legends Wild Rift (IL2CPP)
The most common issue I receive on the tracker for Il2CppInspector is “this file won’t load”. Oftentimes this is due to a bug in the tool, but sometimes it leads me down a reverse engineering rabbit hole. From the end-user’s perspective, there is no difference: they post the issue and wait, and some time later…
-
Il2CppInspector Tutorial: Working with code in IL2CPP DLL injection projects
Once you have created a C++ scaffolding project for DLL injection with Il2CppInspector, you will likely be wondering how to interact with the injected IL2CPP application. In this article, we’ll look at how to perform common tasks such as accessing static and instance fields, creating new objects, working with strings, calling vtable functions and more.…
-
Il2CppInspector Tutorial: How to create, use and debug IL2CPP DLL injection projects
Il2CppInspector allows you to automatically create a Visual Studio solution containing a C++ DLL project targeted at the application you are reverse-engineering, which – when compiled – can be injected into the running application process to monitor or modify the application’s behaviour. In the bad old days, you used to have to find every type,…
-
Practical IL2CPP Reverse Engineering: Extracting Protobuf definitions from applications using protobuf-net (Case Study: Fall Guys)
DISCLAIMER: The following information and source code is provided for educational purposes only. I do not condone cheating in online multiplayer games and expressly discourage this behaviour. This tutorial is intended to demonstrate the thought processes and techniques involved in reverse engineering. It is not intended to enable cheating, the modification of gameplay or any…
-
IL2CPP Reverse Engineering Part 1: Hello World and the IL2CPP Toolchain
[You can use Il2CppInspector to help automate the techniques outlined in this series] [Updated 27th November 2020: the command-line build instructions were updated to be compatible with Il2CppInspector 2020.2.1] In this article, you will learn: what IL2CPP is and why it exists what the generated C++ source code and binary disassembly of a simple function…
-
LightSwitch for Games Part 4: OData Access from C++ Client Code with the C++ REST SDK
NOTE: Although this series is aimed at small game developers, it is equally applicable to anyone wishing to learn how to use LightSwitch. In Part 2 of this series we built a user account and profile database on our LightSwitch server, and in part 3 we showed how to make a web interface to allow…
-
How to statically link the C++ REST SDK (Casablanca)
You are trying to use the C++ REST SDK (Casablanca) in your Windows application. You have one of the following problems: you need Windows XP support when your code executes you receive a debug assertion: _pFirstBlock == pHead you get unpredictable behaviour or random crashing you need to build an application which links against static…
-
2D Platform Games Part 12: A Framework for Interactive Game Objects
IMPORTANT! To run the pre-compiled EXEs in this article, you must have Windows 7 Service Pack 1 with Platform Update for Windows 7 installed, or Windows 8. This article builds upon the demo project created in 2D Platform Games Part 11: Collision Detection Edge Cases for The Uninitiated. Start with 2D Platform Games Part 1: Collision Detection for Dummies if you…