Clandestiny
September 19th, 2002, 14:03
Quote:
Originally posted by chitech
Maybe a solution : I can successful dump a java class from memory, will it still be a lot of garbage or is it been deobfuscation?. (sorry for my bad english)
|
I presume you're asking weather you can eliminate the obsfucation on a java class by dumping it from memory, as you would strip off the compression / encryption of a packed .exe by waiting until it had been loaded and unpacked in memory before dumping an image of it to disk. If your class was encrypted, I would agree with you... Your class would have to be decrypted before it could be put through the Java Class Loader and executed... BUT encryption is not the same thing as obsfucation. A class will execute, obsfucated or not... An obsfucated piece of code will run and maintain the same functionality as an unobsfucated piece of code... It has simply been stripped or transformed in a way that makes it more difficult for a human reader to understand. Simplest case: Your java virtual machine doesn't care if it is running methods with descriptive names like CalculateSerial or DisplayNagScreen. For all it cares, your code might as well have method names like Garbage1 and Garbage2. Therefore, the obsfucator can change CalculateSerial to Garbage1 and the JVM doesn't care. Only *you* will care when you go to decompile it. Same with the code flow transforms. The code still does the same thing, it is just uglier. Consider a nice piece of code with easy to understand high level control structures like if, else, and elseif statements. Now, transform all of those instructions to cmp, jmp combinations. You haven't changed the functionality, but you've taken it up a notch in complexity for the programmer to understand. Clearly, this would not deter an ASM programmer, but from the point of view of the average high level OOP programmer, converting their high level control directives to ASM would be a form of "obsfucation"

Another concrete example of the concept of obsfucation would be self modifying code... The code runs, but it is a bitch to trace (for you

)... The processor doesn't care if its running SMC or not.
Patching is probably the cleanest and easiest solution in this situation, especially since you're only changing a few bytes to remove a nag screen.
Cheers,
Clandestiny