Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#82 jode-1.1.2-pre1 obfuscator misses calls to super

open
nobody
obfuscator (18)
5
2005-09-12
2005-09-12
No

If you take the jode-1.1.2-pre1.jar and obfuscate it with a
unique naming scheme - jos file containing:

#strip = "unreach","lvt","inner"

# in the obfuscated.jar package.
load = new WildCard { value = "jode.*" },
new WildCard { value = "gnu.*" }

renamer = new UniqueRenamer

The class ConstantRuntimeException with method:

public Object invokeConstructor(Reference reference,
Object[] objects)
throws InterpreterException,
InvocationTargetException {
if (isWhite(reference))
return super.invokeConstructor(reference,
objects);

is not obfuscated properly. The resulting class
decompiles to

public Object invokeConstructor(xxx2306
var_xxx2306, Object[] objects)
throws xxx24, InvocationTargetException {
if (xxx588(var_xxx2306))
return ((NON VIRTUAL
jode.jvm.SimpleRuntimeEnvironment) this)
.invokeConstructor
(var_xxx2306, objects);

the jode.jvm.SimpleRuntimeEnvironment should have
been renamed too. The decompiler barfs with this error:

jode.jvm.VerifyException: 1_1bcdc8: invokespecial
Ljode/jvm/SimpleRuntimeEnvironment; <init> ()V
at jode.jvm.CodeVerifier.modelEffect
(CodeVerifier.java:909)
at jode.jvm.CodeVerifier.doVerify
(CodeVerifier.java:1033)
at jode.jvm.CodeVerifier.verify
(CodeVerifier.java:1102)
at jode.decompiler.MethodAnalyzer.analyze
(MethodAnalyzer.java:610)
at jode.decompiler.ClassAnalyzer.analyze
(ClassAnalyzer.java:315)
at
jode.decompiler.ClassAnalyzer.dumpJavaFile
(ClassAnalyzer.java:624)
at
jode.decompiler.ClassAnalyzer.dumpJavaFile
(ClassAnalyzer.java:613)
at jode.decompiler.Main.decompileClass
(Main.java:188)
at jode.decompiler.Main.decompile
(Main.java:397)
at jode.decompiler.Main.main(Main.java:214)

Discussion