Mods Program

Enigma: Minecraft deobfuscation tool

  • 13.1k views 1 today
  • save_alt 706 downloads
Game Version
Minecraft 1.8
Progress
85% complete
  • 19
  • 14
  • 38
cuchaz
Lvl 77Legendary Modder
239
I created a tool called Enigma that helps you deal with the pesky obfuscation that is the bane of all Minecraft core modders. Minecraft classes are always obfuscated, meaning they all have gibberish names. Enigma helps more advanced modders, who want to make changes to the Minecraft classes directly, give these classes (and fields, methods, etc) more meaningful names.

Enigma is very similar to MCP, which you may have heard of. Sadly, using the deobfuscation mappings from the MCP project without explicit written permission (from people who are very hard to communicate with =P) is against the terms of their license. That basically means if you wanted to do something crazy, like write your own mod loader, you're not allowed to use MCP unless they say it's ok.

Enigma is different. Not only is Enigma completely open source, but the current mappings for Minecraft 1.8.3 are released under a very permissive Creative Commons license. It basically means you can use the Enigma mappings in whatever project you like without having to ask first. Just abide by the terms of the Minecraft EULA, and you should be fine.

Enigma has a lot of whiz-bang features like:
  • convenient source code browser using on-the-fly decompilation
  • full source code nagivation and cross-referencing of identifiers
  • allows quick renaming of any class, field, method, and even method argument
  • automatic detection of inner/anonymous classes (not 100% perfect though...)
  • export to deobfuscated jar feature
  • export to source folder feature (source doesn't always compile though, it's not 100% perfect either)
I should also mention that the primary goal of Enigma is to be a tool that lets you rename obfuscated things. It's basically a library for mod loaders that want to have a stable way to refer to Minecraft classes. Getting Enigma to decompile obfuscated classes into source code that actually compiles into a working program isn't necessary to get a mod loader working, so it's not really a goal for this project. If you want to directly edit the source code of Minecraft, MCP is still your best bet.

Building the Minecraft mappings is also an open source effort. If you'd like to contribute to the mappings, read more about the Enigma project on my website.



2 Update Logs

Update to v0.10 beta : by cuchaz 03/18/2015 10:31:01 pmMarch 19, 2015 @ 2:31 am UTC

adds support for new features in the Minecraft 1.8.3 jar!
  • reading (but not editing) of local variable names
  • parsing/translation of classes in generic type signatures
  • fixes lots of issues with inner classes
LOAD MORE LOGS

More like this

  Have something to say?

dreadend
12/13/2016 4:54 pm
Level 41 : Master Dragonborn
This is neat!

I've been looking for something like this, I'm currently still working in 1.2.5 for a difficult implementation which I want to port into later versions. This will certainly come in handy.




Might also help me port my 1.2.5 plugins over to recent versions of MC.
1
QuickWhitt7
06/22/2015 11:48 pm
He/Him • Level 36 : Artisan Creeper Hugger
This is a beautiful work of art made entirely in Java. This is incredible. Love this.
1
cuchaz
06/23/2015 11:39 am
Level 77 : Legendary Modder
=D thanks!
1
Gegy
05/15/2015 10:33 am
Level 46 : Master Blob
Could you maybe add an auto-mapping feature that makes a mapping file with names like Class0, Class1 so that you can get it into a workspace and then find what each class is.
1
cuchaz
05/15/2015 10:43 am
Level 77 : Legendary Modder
Exporting source files that are useful isn't really the point of Enigma. The point is just to rename classes/fields/methods/etc directly in the bytecode.
1
Gegy
05/15/2015 10:58 am
Level 46 : Master Blob
Okay, I also have gotten a weird error when exporting my source files (not Minecraft sources) http://pastebin.com/8MrMZRhz
1
cuchaz
05/16/2015 9:58 am
Level 77 : Legendary Modder
The decompiler esploded. The decompiler isn't my code, so there's not much I can do about it. The decompiler isn't perfect.
1
JavaBuckets
04/12/2015 12:28 pm
Level 80 : Elite Modder
Nice work! This is really neat, thanks a lot, again... for your great work ;)

- Thom, Head Developer and Leader of JavaBuckets
1
cuchaz
04/12/2015 3:22 pm
Level 77 : Legendary Modder
=)
1
aarondwillims
04/08/2015 9:46 pm
Level 14 : Journeyman Modder
Aha, using Java eh?
I can't even make this with java! Wow!
Can you give me the src code of this please? I just wanna see how you did this..
1

Welcome