radon icon indicating copy to clipboard operation
radon copied to clipboard

radon can't find the class even if i put it in radon.jar

Open iocmet opened this issue 3 years ago • 2 comments

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: image

Reproduction steps:

  1. Build radon.
  2. Create minecraft 1.7.10 mod which extend DummyModContainer.
  3. Observe the obfuscation error.

iocmet avatar Dec 04 '21 18:12 iocmet

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)

iocmet avatar Dec 04 '21 19:12 iocmet

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.

ItzSomebody avatar Dec 07 '21 00:12 ItzSomebody