RE: JAVA Classes - Recompilation condition errors!!

From: V. Poddubnyy (vpoddubniy@mail.ru)
Date: Sat Dec 04 2004 - 02:06:45 EST


Hello,

If you use decompilation (and it looks so), then this is decompilation
error. We investigated this issue this summer and found that:

- some exception handlers are not decompiled correctly (and this looks like
synchronized statements too - your monitor* and class1);
- some JVM instructions are not decompiled at all (your JVM INSTRs);
- if the code is obfuscated, some of the functions may be overloaded by only
the return value, not a name or arguments (this is prohibited in Java, but
not in bytecode);
- and some other problems.

We wrote a tool, which tries to repair the code, but it is not the best
thing. You should modify the code without any decompilation: just modify
bytecode in *.class files. This really helps.
Also you can try to switch decompiler and file a bug to it... :) But this
won't help if to talk about free decompilers.

Hope this answered your question.

--
Best regards,
 Vladimir Poddubnyy
> -----Original Message-----
> From: George Fekkas [mailto:G.Fekkas@encode-sec.com] 
> Sent: Friday, December 03, 2004 12:01 PM
> To: pen-test@securityfocus.com; webappsec@securityfocus.com
> Subject: JAVA Classes - Recompilation condition errors!!
> 
> Hi Pen-Testers
> 
> I am performing a code injection into JAVA classes. I am 
> working with the Java Object Inspector Tool (COMPASS). I 
> injected the desirable code in order to inspect JAVA objects. 
> However, when I am trying to recompile the classes then the 
> following errors are occurred. I have already checked all the 
> "imports" for the right paths and all seems to be correct.
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:89: ';' expected
> 
> JVM INSTR monitorenter ;
> 
> ^
> 
> C:\Documents and
> 
> Settings\Administrator\Desktop\HackClasses\*****.java:112:not 
> a statement
> 
> class1;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:113:
> 
> ';' expected
> 
> JVM INSTR monitorexit ;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:116: 
> not a statement exception;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:87: u ndefined
> label: MISSING_BLOCK_LABEL_247
> 
> break MISSING_BLOCK_LABEL_247;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:89: c 
> annot resolve symbol symbol : class JVM
> 
> location: class com.edi.commerce.********
> 
> JVM INSTR monitorenter ;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:91: u ndefined
> label: MISSING_BLOCK_LABEL_237
> 
> break MISSING_BLOCK_LABEL_237;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:113:cann
> ot resolve symbol
> 
> symbol : class JVM
> 
> location: class com.edi.commerce.*********
> 
> JVM INSTR monitorexit ;
> 
> ^
> 
> C:\Documents and
> Settings\Administrator\Desktop\HackClasses\*****.java:114:
> 
> undefined label: MISSING_BLOCK_LABEL_247
> 
> break MISSING_BLOCK_LABEL_247;
> 
> ^
> 
> However, the recompilation was succeeded by comment out the 
> lines in the source code (Decompile Java Classes).
> 
>  //if(_type !=3D null) 
> 
> // break MISSING_BLOCK_LABEL_247; 
> 
> //Class class1 =3D org.omg.CORBA.TypeCode.class; 
> 
> //JVM INSTR monitorenter; 
> 
> //if(_type !=3D null)
> 
> // break MISSING_BLOCK_LABEL_237;
> 
> //class1;
> 
> //JVM INSTR monitorexit;
> 
> //break MISSING_BLOCK_LABEL_247;
> 
> Is this a big problem? If it is what can I do in order to 
> avoid these errors?
> 
> Thank you for your time.
> 
> 
> 
> ******************************************************************
> Any views expressed in this message are those of the 
> individual sender, except where the sender specifically 
> states them to be the views of ENCODE S.A.
> ******************************************************************
> 
> 


This archive was generated by hypermail 2.1.7 : Sat Apr 12 2008 - 10:54:09 EDT