Breaking Eggs And Making Omelettes

Topics On Multimedia Technology and Reverse Engineering


Meta:

Java Obfuscation Arms Race

April 29th, 2005 by Multimedia Mike

So I have managed to automatically de-obfuscate an obfuscated Java project. Remember, there are 2 major challenges in reverse engineering: 1) Understanding the original code flow, and 2) understanding what the original identifier names could have been. My experiment was focused on problem #2. Problem #1 is generally a non-issue in decompiled Java code since Java classes retain so much information about the original code flow.

Are there better approaches for obfuscating Java code?

Read the rest of this entry »

Posted in Java, On2/Duck, Reverse Engineering | No Comments »

Try The Java Experiment For Yourself

April 28th, 2005 by Multimedia Mike

For those who would like to try out the RetroGuard program, only modified to be a quasi-de-obfuscator, check out Deobfuscating Obfuscated Code With RetroGuard. It explains everything you need to know about running the experiment.

Posted in Java, Reverse Engineering | No Comments »

Chaos Works In Strange Ways

April 25th, 2005 by Multimedia Mike

This evening, I implemented the VerbNameMaker Java class for the Retroguard project by simply copying the NounNameMaker class and replacing the animal list with a list of English verbs extracted from verba.org. So the class picks a random verb from a list of over 4000 verbs and replaces obfuscated method names. Remember that dequantizer method from the previous post? Guess what the new Java class, working in conjunction with Java’s random number generator, decided to name the method?

    private void fondle(int i)
    {
        short aword0[] = australianKestrel[i];
        for(int j = 0; j < 64; j++)
            kingsnake[eastAfricanCrownedCrane[j]] = aword0[j] * conch[j];
    }

Just as I have long suspected, Java is a sick, perverted language.

Read the rest of this entry »

Posted in Java, Reverse Engineering | No Comments »

Success On The Java De-obfuscation Front

April 24th, 2005 by Multimedia Mike

So I finally managed to recompile the Retroguard project. Then I created my own class to help in de-obfuscating obfuscated Java source code. The first part of this exercise is to de-obfuscate fields, i.e. nouns. For my list of nouns, I used this impressive list of animal names (2400+).

Read the rest of this entry »

Posted in Java, Reverse Engineering | No Comments »

Daily Dose of DRM

April 20th, 2005 by Multimedia Mike

A coworker brought to my attention the latest cross-company DRM consortium effort: Advanced Access Content System (AACS). When I hear about these efforts, I feel as apathetic as the AACS model pictured here (they put all this effort into making their movies and music secure but they still can not stop me from ripping the still images from their website):

She just does not look too happy, does she? Almost as if she is getting burned out on multimedia technology. All of the usual promises are there: All multimedia hardware and software will eventually adopt this standard. This includes HD-DVD, Blu-Ray, recording from broadcast, and the capability to move the content around in a “managed” fashion, probably designed to optimize the amount of cash moving out of consumers’ wallets.

AACS Spokesmodel
Green AACS Spokesmodel says: “Is Sony Blu-Ray going to clash with my outfit?”

Read the rest of this entry »

Posted in DRM, Multimedia PressWatch | No Comments »

More On Automated Java De-obfuscation

April 19th, 2005 by Multimedia Mike

I am not especially proficient in understanding software projects that were written in an excessively object-oriented manner, as languages like C++ and Java encourage a programmer to do. So I had trouble getting my head around the GPL’d source code for the Retroguard Java obfuscator, which I had hoped to subvert into a source code de-obfuscator. Fortunately, Doxygen proved invaluable for generating documentation and hierarchy diagrams that helped illustrate the program’s architecture (I think Javadoc can be used for the same purpose, but I find that Doxygen is easier to install). I think I see where I can hook in to get a basic de-obfuscator.

Read the rest of this entry »

Posted in Java, Reverse Engineering | No Comments »

Custom NES Video Codec

April 14th, 2005 by Multimedia Mike

The 8-bit Nintendo Entertainment System (NES) is my favorite video game console of all time. I even used to maintain a native Linux NES emulator named TuxNES to help preserve the nostalgia.

Castlevania Screenshot <– Simon vs. the undead fish monsters in Konami’s original Castlevania

Link, the hope of Hyrule, takes on the Octoroks in the original Legend of Zelda –>
Legend of Zelda Screenshot

But I love these: Videos showcasing tool-assisted “Time Attacks”. The basic idea is that the people behind the videos use a variety of feature-rich console emulators to get through games very quickly using some very clever methods. Watching a video from start to finish usually lets you relive the experience of playing through the entire game, all in 10-20 minutes, nominally.

The video is encoded with the DivX codec; the frames are each 256×224 at 60 frames/sec (for NTSC games; 50 fps for PAL games). Audio is generally encoded as MP3 audio at 32-64 kbps. As a multimedia freak, I have to admit that it is a little frustrating to watch these videos which are typically encoded with ISO MPEG-4 (under the fourcc DIVX). So I started to wonder if it would be possible to develop a custom codec specifically for coding this type of video, and losslessly.

Read the rest of this entry »

Posted in Nintendo, Open Source Multimedia, Outlandish Brainstorms, PAVC | No Comments »

Video Coding Concepts: Quantization

April 14th, 2005 by Multimedia Mike

This article is now maintained as a Wiki page at http://wiki.multimedia.cx/index.php?title=Quantization.

I have never quite understood what is so hard about quantization. Maybe I am missing something but it seems to be primarily a matter of division (for quantization) and multiplication (for dequantization, a.k.a. requantization).

Read the rest of this entry »

Posted in Codec Technology, Video Codecs | No Comments »