Concepts

String Abusing in IDA:

This concept is searching a string in IDA and finding a function. Now, how does this work?

String abusing with a PDB (Debug symbols/most functions are named):

Open a game with a PDB in IDA, I will be using the 4.21 game. In the functions window, search for "FName::GetNames". Now, we use "%d.%d.%d.%d.%d.%s" to find GetNames. If you scroll down a little, you will see the same exact string.

String abusing with a PDB example:

This works for any function, let's take a look at UCheatManager::Ghost. If you look at the function you should see a string right under it "You feel ethereal". Let's go look at our IDA for Fortnite and search for that string. And if you compare it looks the same! Now, you may rename the function. Congrats! You've done it.

Fortnite Encryption/Decryption:

Fortnite encrypts GNames/FNamePool. To decrypt the names, you have a couple of options. You can call GetPlainNameString, ToString, or directly call the decrypt name function. This is what makes Fortnite and other games like PUBG less beginner-friendly, and way fewer people are willing to help. They encrypt names starting on 1.10 aka UE4.19) (Season 2, not one it's weird).

How to Create Sigs/Offsets in IDA:

To create a signature (pattern/sig, etc.), I recommend an IDA plugin like SigMaker. To create an offset, you need to get the image base (scroll to the top while in IDA View tab). And then minus it by the address of the variable/function. You can find the address in .text0000(Address) or .(r)data0000(address).

How to go to strings (aka use strings):

Open the strings window (SHIFT + F12), search for that string (CTRL + F) For example,

Double click right here,

and that's it!

Last updated