radon
radon copied to clipboard
radon can't find the class even if i put it in radon.jar
Description of Bug: I want to obfuscate my mod for some reason and came across this oobfuscator, but when I try to run it, it gives me an error.
Expected behavior: the mod should have been successfully obfuscated.
Radon version: 2.0.0 SNAPSHOT
Configuration: config.txt
Relevant errors: me.itzsomebody.radon.exceptions.RadonException: Could not find cpw/mods/fml/common/DummyModContainer at me.itzsomebody.radon.Radon.getClassWrapper(Radon.java:277) at me.itzsomebody.radon.Radon.buildHierarchy(Radon.java:304) at me.itzsomebody.radon.Radon.lambda$buildInheritance$6(Radon.java:321) at java.util.HashMap$Values.forEach(Unknown Source) at me.itzsomebody.radon.Radon.buildInheritance(Radon.java:321) at me.itzsomebody.radon.transformers.obfuscators.Renamer.transform(Renamer.java:71) at me.itzsomebody.radon.Radon.lambda$run$1(Radon.java:104) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at me.itzsomebody.radon.Radon.run(Radon.java:100) at me.itzsomebody.radon.Main.main(Main.java:121)
Screenshots:
Reproduction steps:
- Build radon.
- Create minecraft 1.7.10 mod which extend DummyModContainer.
- Observe the obfuscation error.
fixed by adding some .jars to libraries but another error appeared
java.lang.IllegalStateException: Cache contained string O at me.itzsomebody.radon.dictionaries.CustomDictionary.nextUniqueString(CustomDictionary.java:89) at me.itzsomebody.radon.transformers.obfuscators.Renamer.lambda$null$0(Renamer.java:87) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at me.itzsomebody.radon.transformers.obfuscators.Renamer.lambda$transform$2(Renamer.java:83) at java.util.HashMap$Values.forEach(Unknown Source) at me.itzsomebody.radon.transformers.obfuscators.Renamer.transform(Renamer.java:82) at me.itzsomebody.radon.Radon.lambda$run$1(Radon.java:104) at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.util.stream.ReferencePipeline$2$1.accept(Unknown Source) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source) at java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at me.itzsomebody.radon.Radon.run(Radon.java:100) at me.itzsomebody.radon.Main.main(Main.java:121)
The issue with this one has to with your config.
Relevant lines of code: https://github.com/ItzSomebody/radon/blob/c84286d9ab86c95edf2c976066c4a78ccd8bbb0a/src/main/java/me/itzsomebody/radon/dictionaries/CustomDictionary.java#L84-L94
Your config has multiple instances of "O" repeated in your string being used as a character lookup. As a result, when radon attempts to iterate through the entire string, it is running into those duplicate instances and complaining that it is somehow getting duplicate characters when attempting to generate random strings.
Solution is to just remove the duplicate characters from your string and it should work fine then. Also, you will likely want to increase the randomized string length to more than 1 since the innate design of radon is sloppy in that it does not always handle shorter strings for method/field names particularly well in terms of duplicate methods/fields.