2

I am currently trying to de-obfuscate a Java program (i.e. find each class name and namespace, each method name and each method parameter name). To do so, I started by using Enigma (the fork from FabricMC).

But I have access to old sources that are not obfuscated and I was wondering if I could automatically de-obfuscate the part of my Java program that did not change since then.

Basically, I have:

  • Version 3 that is non-obfuscated.
  • Version 6 that is obfuscated.
  • Version 7 that is obfuscated.
  • Version 9 that is obfuscated.

and I want to de-obfuscate automatically as much symbols as possible in Version 9.

Are you aware of any tool that can do this? Currently, I am navigating the unobfuscated files of Version 3 by hand and mapping Version 9 on Enigma by hand too, which is quite a long and tedious process.

Note: all the subjects I found during my research were about de-obfuscating without access to any prior, non-obfuscated, sources. I would like to extract the maximum I can from the non-obfuscated sources I obtained.

1
  • 1
    An old release of skidsuite used to have something like this: github.com/GenericException/SkidSuite/tree/master/archive/… (antiob package has CorrelationMapper). Can't say how well it works, never used it myself. But I would love to support a similar feature in my own project, Recaf.
    – Col-E
    Commented Oct 21, 2022 at 6:43

1 Answer 1

2

Have you tried https://github.com/FabricMC/Matcher?
It doesn't always create the best matches automatically but it helps a lot by suggesting classes/methods/fields that are similar to each other across the different versions.

1
  • I do not know how I missed this tool, but it nicely answer my question! It lacks documentation though, but the community is super nice and very reactive on the FabricMC Discord! Commented Oct 22, 2022 at 16:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.