[ad_1]
On this tutorial you’ll use ILSpy and AssetStudio to extract code and property from a compiled Unity recreation.
Within the context of software program, reverse engineering is the apply of analyzing a system to extract design and implementation data. That is typically used to higher perceive how software program features. One technique of reverse engineering is decompiling, which performs the alternative operations of a compiler to transform executable packages again into human-readable code.
You may decompile Unity video games utilizing specialised instruments to extract the code and most property. Listed here are some widespread use circumstances the place this may be helpful:
- Get well the misplaced code and property of a recreation you made.
- Check out the supply code or 3D fashions of a recreation to review and be taught from.
- Mod a recreation by changing property with your individual.
Word: With nice energy comes nice duty. The reverse engineering strategies described on this tutorial are meant for authorized use circumstances like recovering tasks you made your self or for academic use. Stealing code and property and claiming them as your individual is against the law and I’m not answerable for any authorized penalties.
On this tutorial, you’ll use ILSpy and AssetStudio to decompile a Unity recreation on Home windows. Alongside the way in which, you’ll discover ways to:
- Use ILSpy to decompile a recreation’s code
- Save the code to your laptop
- Examine property utilizing AssetStudio
- Extract audio and 3D fashions from a recreation
Whereas I’ll be protecting Home windows purposes on this tutorial, there are options for Linux and macOS on the market with the identical performance like AvaloniaILSpy and UnityPy. I’ve additionally added some extra software program concerns on the backside of the tutorial, a few of that are cross-platform.
Getting Began
Click on the Obtain Supplies button on the high or backside of this web page to obtain the pattern recreation, Avoiding Duty. Extract the zip file to a folder to be used in a while. If you need, you’ll be able to play the sport on Home windows by operating Avoiding Duty.exe. You may stop the sport by urgent Escape or Alt + F4.

Granted, there’s not a lot happening apart from some pink “duty” crystals falling down from above whereas a cheery tune performs within the background. It received’t be the sport of the 12 months anytime quickly, however that’s not the main target of this tutorial. Within the following sections, you’ll choose this recreation aside to entry its supply code and property.
Software necessities
On to the instruments! Each ILSpy and AssetStudio want the .NET 6 SDK to work. To verify if you have already got this SDK put in, open a Command Immediate by opening the Begin menu, getting into “cmd” and urgent Enter. With the Command Immediate open, enter the next command and press Enter to execute it:
dotnet --list-sdks
If in case you have .NET 6 SDK put in, there must be a 6.X.X entry within the checklist:
![]()
If there’s no 6.X.X entry, otherwise you get an “dotnet shouldn’t be acknowledged” error, you’ll want to put in the newest model of the SDK from right here: https://dotnet.microsoft.com/en-us/obtain/dotnet/6.0
Select the installer model that matches your CPU’s structure and obtain it. In most fashionable methods, this might be x64:

Now set up the SDK and re-run the dotnet --list-sdks command in a Command Immediate to confirm it’s put in.
Downloading ILSpy and AssetStudio
With the necessities out of the way in which, head over to the releases web page of ILSpy: https://github.com/icsharpcode/ILSpy/releases
Click on on the Property button on the backside of the changelog of the newest launch and click on on the ILSpy_selfcontained_x64 zip to obtain it.

As soon as the obtain finishes, extract the zip to a folder to be used within the subsequent part.
Subsequent up is AssetStudio, the obtain course of right here is much like IlSpy. To start out off, head over to the releases web page: https://github.com/Perfare/AssetStudio/releases
Click on the Property button if the property aren’t seen immediately and click on on the .net6 hyperlink to obtain the .NET 6 model of AssetStudio.

Extract the contents of the zip to a folder for later use.
Extracting Supply Code
To extract the code from the pattern recreation, you’ll want to make use of ILSpy, which is a an open-source .NET meeting browser and decompiler. Unity video games use C# for his or her scripts, which get compiled to Intermediate Language, or IL for brief. IL is a decrease stage language than C#, however nonetheless larger stage than machine code. Right here’s what IL code seems to be like:
.technique public hidebysig static void Important() il managed
{
.entrypoint
// Code dimension 11 (0xb)
.maxstack 8
IL_0000: ldstr "Hey, World"
IL_0005: name void [mscorlib]System.Console::WriteLine
(class System.String)
} // finish of technique HelloWorld::Important
By default, Unity compiles all scripts collectively right into a single file named Meeting-CSharp.dll. As a Unity developer, you’ll be able to select to group scripts in extra meeting definitions recordsdata, which can generate additional meeting recordsdata when you compile your recreation. ILSpy can learn the IL code in these recordsdata and convert them again to C# courses.
Time to try what IlSpy affords! Open the ILSpy folder and double click on on ILSpy.exe to start out ILSpy. In case your necessities are so as, that is what you’ll see as soon as the appliance hundreds:

Exploring ILSpy
The interface is break up up into two most important sections: an inventory of loaded assemblies on the left and the decompiled C# code on the precise. ILSpy has some generally used .NET assemblies loaded by default like mscorelib and System.
To load the pattern recreation’s CSharp meeting, click on on the folder icon within the menu bar or press CTRL + O in your keyboard to open a folder browser window.

Navigate to the Avoiding Duty folder you unzipped earlier, there must be a file named Avoiding Duty.exe in there. From there, navigate to the Information folder, named Avoiding Responsibility_Data on this case and open the Managed folder in there. In brief: Sport folder / Information / Managed.
You must see an inventory of DLL recordsdata in there.

Double-click Meeting-CSharp.dll to load the meeting in ILSpy. If all went effectively, a brand new entry was added within the Assemblies checklist on the left named Meeting-CSharp.

To examine the meeting, click on on the little + button on the left of the entry to broaden the meeting. This unveils the next gadgets:
- Metadata: This accommodates data on the meeting, together with its headers and strings.
- References: A listing of different assemblies this meeting references. ILSpy will routinely load in these assemblies whenever you’re inspecting code that references them, so don’t be shocked if the Assemblies checklist will get stuffed up with extra assemblies.
- A “-” namespace: The pattern recreation doesn’t use namespaces in its code, however different tasks can have an inventory right here of the completely different namespaces used. That is the place the supply code lives.
Increase the - namespace to get your first glimpse of one thing acquainted — an inventory of courses! Subsequent, click on on the Rotate class and also you’ll see the supply code being proven on the precise.

You will have to click on the + buttons within the code to broaden the strategies, however it’s all proper there:

Exporting Code
It can save you the code by copy-pasting it right into a file, or by right-clicking the category within the Assemblies checklist and choosing Save Code… within the menu. Now you can select a location to avoid wasting the C# file to. Don’t fear, you’re free to repeat my superb code and use it to your personal. :]

In massive assemblies, having to examine and save the courses individually can get tedious, so I’ll introduce you to a extra environment friendly means of saving the code. Proper-click on Meeting-CSharp and select Save Code… within the menu. It will immediate you to decide on a location to avoid wasting the C# venture file to. It would appear to be you’re saving a single file right here, however ILSpy will truly copy over all courses it could possibly discover as C# recordsdata, together with a venture file.

Usually, ILSpy does a fairly good job of decompiling the code, however you could run into some bizarre code right here and there if the decompiler wasn’t certain what to do. For example, should you check out the BrokenResponsibility class, it has a DestroySelf technique which differs from the unique code. The decompiled model seems to be like this:
non-public void DestroySelf()
{
Object.Destroy(base.gameObject);
}
Whereas the unique code was the next:
non-public void DestroySelf()
{
Destroy(gameObject);
}
Word the Object class and base key phrase that had been added to the tactic name. The decompiled code remains to be legitimate, however you would possibly wish to take into account cleansing it up a bit when utilizing it in your individual tasks.
That concludes the usage of ILSpy! It’s a robust instrument to remember when you must extract the supply code from Unity video games and different .NET primarily based merchandise. It has saved me just a few occasions already after I misplaced my tasks because of knowledge corruption. Backups are higher in each means, however it is a good backup. Simply bear in mind to be good and use it for good solely.
Now you know the way to examine and save supply code, it’s time to maneuver on to extracting the property.
Extracting Property
AssetStudio is an open-source instrument that may examine and extract the next asset sorts from Unity 3.4 to 2022.1:
- Textures and sprites
- Audio
- Fonts
- Meshes
- Textual content
- Shaders
- Video recordsdata
- Animations
It does this by reverse engineering the packed codecs and changing these again into usable codecs. A texture for instance could be transformed into png, tga, jpeg or bmp.
Open AssetStudio by opening the folder you extracted within the Getting Began part and double-click AssetStudioGUI.exe. After a short time, you’ll be greeted by its person interface:

Tour of AssetStudio
Like ILSpy, AssetStudio has two most important sections: a file browser on the left and a preview on the precise. Not like ILSpy nevertheless, there’s nothing to see right here till you open an property file or a folder of a compiled recreation.
Earlier than delving deeper within the utility, disable all error messages as on the time of writing AssetStudio has some points with loading in shaders, leading to a ton of errors being generated. To disregard these, choose Debug within the toolbar and uncheck Present error message.

Now load within the property by choosing File â–¸ Load folder within the toolbar to open a folder browser window.

Navigate to the Avoiding Duty folder, you understand you’re on the proper place should you see the Avoiding Responsibility_Data folder:

Choose this folder to load it. AssetStudio will now search all subfolders for any asset recordsdata and skim their contents. This will take fairly some time relying on the quantity of property and their sort. So long as the progress bar on the backside is shifting and the textual content area under the preview reads “Learn property…” try to be good. It took my system about two minutes earlier than the appliance was lastly performed loading.
As soon as the property are loaded, it is best to see an inventory of scenes and prefabs showing within the Scene Hierarchy tab:

You may broaden these to get a tough concept of what kind of GameObjects make up the scene, however other than that it’s not that helpful.

Exporting Property
Open the Asset Record tab, as that’s the place the enjoyable begins. In right here, you’ll find all property supported by AssetStudio which might be a part of the pattern recreation. Most of those are included by Unity, however some had been added by me when creating the sport.

The checklist could be filtered by identify if you understand what to search for through the use of the textbox under the tabs. For instance, sort in “Entertainer” and wait a short time, the checklist will shrink right down to a single AudioClip of the background music.

Preview the file by clicking on its identify within the Asset Record and urgent the Play button within the Preview window on the precise.

Click on on the Cease button when you’re performed having fun with the tune. It can save you this asset by right-clicking its identify and choosing Export chosen property within the menu. It will immediate you to decide on a folder to reserve it to.
Word: The music is “The Entertainer” by Kevin MacLeod (incompetech.com). It’s licensed below the Artistic Commons: By Attribution 4.0 License.

AssetStudio will create a folder primarily based on the kind of asset, AudioClip on this case. Inside you’ll discover the audio file in WAV format.

Filter the filter by choosing the textual content you’ve added and hitting Backspace or Delete in your keyboard. There’s one other method to filter property: by their sort.
Choose Filter Kind â–¸ Mesh within the toolbar to solely present 3D fashions within the checklist. The fashions used within the pattern recreation all have the identical identify: default. You may choose them one after the other to get a pleasant preview.
Now choose all default meshes, right-click on any of them and choose Export chosen Property within the menu. Choose a folder to avoid wasting the fashions to within the folder browser window like earlier than.
As soon as the fashions are exported, they’re all in OBJ format. You should utilize an utility like Blender to import these recordsdata, edit them and export to a format of your selecting. You too can use them as-is, as most recreation engines help OBJ meshes.

Right here’s the default.obj file opened up in Blender for instance:

That’s it for AssetStudio, one other effective instrument to have in your arsenal.
The place to Go From Right here?
Congratulations on ending this tutorial! You now know how one can extract the supply code and property out of a compiled Unity recreation. I sincerely hope these strategies will show as helpful for you as they did for me.
You may obtain the pattern recreation utilizing the Obtain Supplies button on the high or backside of this tutorial if you wish to mess around with it some extra.
If you wish to check out another instruments to reverse engineer Unity video games, listed below are my suggestions:
- dnSpyEx: Much like ILSpy, however it means that you can debug and even edit assemblies
- IL2CppDumper: Extracts the supply code from video games that had been constructed with IL2CPP
- AssetRipper: A substitute for AssetStudio to extract property
Thanks for studying this tutorial to the tip! If in case you have any questions or feedback, be at liberty to affix the dialogue under.
[ad_2]
