March 10th, 2008 by Multimedia Mike
Ma.tt (his actual domain name), the father of the WordPress blogging system, snapped this photo at the SxSW event and it gave me a cold chill for some reason:
I did a little searching and realized that I had already been exposed to the idea that Blu-Ray was colluding with Java. Now it occurs to me to wonder: Has there been demand for free multimedia players to support the Java functionality necessary to play Blu-Ray discs?
Posted in Java | 5 Comments »
November 12th, 2007 by Multimedia Mike
Google has unveiled their mighty Android platform SDK today. It apparently based uses that phone-based flavor of Java. An ergonomic Eclipse-based development environment and a software emulator are both provided for your experimentation.
That’s nice. But let’s cut to what really matters — multimedia. The SDK specifies the Media API along with its MediaPlayer and MediaRecorder APIs. According to the AudioEncoder class, audio can be encoded to AMR-NB. The VideoEncoder class specifies H.263, H.264, and MPEG-4 SP. All pretty standard for a mobile application, I suppose.
Who handles the multimedia heavy lifting? Vitor noticed this press release and associated fluffy overview from PacketVideo
It’s Java, though, and that means obfuscated Java bytecode programs. Time for a renaissance for my Java de-obfuscator?
Posted in Java, Multimedia PressWatch | 6 Comments »
January 3rd, 2007 by Multimedia Mike
IMDb Studio Briefing carries a news snippet today about new Blu-Ray discs that can play in Sony PlayStation 3 units but not in standalone players: Sony Encounters New Blu-ray Glitches. It seems that the new discs use some system called BD-Java for processing extras and additional features. Just when you thought multimedia tech couldn’t get more complicated and bloated. So now players have to have some kind of Java VM?
As usual, Wikipedia is on top of it.
Posted in Java, Multimedia PressWatch | 5 Comments »
August 12th, 2006 by Multimedia Mike
Just in case anyone is following this blog in hopes of finding information about a Java-related COD file format that I mentioned last year, some folks at a blog called Reverse & Форсаж (would love to know what that title means) have posted a 2-part (so far) analysis of the format. Part 1 and Part 2.
Posted in Java, Reverse Engineering | 3 Comments »
August 28th, 2005 by Multimedia Mike
Believe it or not, other people actually are using my Java de-obfuscation via RetroGuard solution. Further, they are finding a lot of problems with my basic solution and have contributed a number of patches to make the program stronger. I hope to incorporate the patches in the next few days and also maybe figure out how to release an actual .jar file so that using the program will be simpler.
On a Java-related topic, there is the Eclipse project. I am not especially familiar with it but apparently it is supposed to be God’s gift to software engineering. The reason I bring it up is that one of the Java de-obfuscator contributors passed along that Eclipse can help refactor Java code (automatically searching for and replacing identifier names throughout an entire project). The catch, it seems, is that the source code needs to be compilable. The de-obfuscator did not always meet that requirement which is why this particular individual needed the program fixed.
Anyway, I just thought I would mention it since I have not seen a tool that can do this. The refactoring support would be useful for reverse engineering/de-obfuscation work.
Posted in Java, Reverse Engineering | Comments Off on Java Deobfuscation In Use; Eclipse For Refactoring
August 21st, 2005 by Multimedia Mike
Readers of this blog have highly diverse reverse engineering goals. I was contacted by a reader who is interested in reverse engineering a .cod file. This file comes from the Blackberry run time environment and has to do with Java. I suspect that it is a file full of native CPU code for whatever CPU happens to run inside of a Blackberry. Anyway, since I have neither the time nor the inclination to chase after every code format in existence (and I have never even been entirely sure on what a Blackberry even is), I thought I would put it to the readers in case anyone happens to know off the top of their head. Pertinent details, questions, and speculations:
- Blackberry JDE is available here
- Blackberry development documentation
- Is the .cod a native CPU code file?
- If it is a native code file, is this a fabled Java Native Interface (JNI) code file?
- If yes, is there a standard way to disassemble the files?
- If no, and this is some kind of custom file format, what is the format, the section definitions, etc.?
- I have examined one sample .cod file. It starts with hex bytes DE C0 FF FF (CODE FFFF in little endian). No other patterns jump out at me except for a few embedded PNG files.
If you have any insight into this format, feel free to contact me.
Posted in Java, Reverse Engineering | 9 Comments »
August 15th, 2005 by Multimedia Mike
Every so often, a discussion of the Java Multimedia Format (JMF) library pops up on an open source multimedia development list. I had never given it any kind of attention until a Google search recently led me to the documentation. I always assumed that it just supported raw formats and some common, open MPEG formats. It turns out that the library actually supports a few better known codecs, some of which are not completely reverse engineering. Of course, my interest in this would be decompiling them and de-obfuscating them beforehand, as necessary. The library contains a non-obfuscated, pure-Java implementation of the Cinepak codec. It also includes an obfuscated, pure-Java implementation of what I believe are some or all of the MPEG-1 codecs.
However, most interesting codecs (including all of those that are not yet RE’d) are only supported via the Win32 or Linux/Solaris “Performance Packs” which are presumably compiled, SIMD-optimized x86 code.
Some curious features– the pure-Java portion of the library supports some of the quirkier Sound Blaster playback frequencies like 11127 Hz and 22254 Hz (while the performance packs support 8000 Hz -> 48000 Hz). Also, I can not get over the fact that the documentation for the javax.media.format.VideoFormat class states that SMC corresponds to “Sorenson format”. (Here is the SMC format, apparently named for its creator, one Sean M. Callahan.)
Posted in Java | Comments Off on Java Multimedia Library
July 20th, 2005 by Multimedia Mike
compn has put together a nice inventory of Java-based multimedia formats, including some reverse engineering efforts. And I quote:
Read the rest of this entry »
Posted in Java, Reverse Engineering | Comments Off on Java Multimedia Inventory
May 27th, 2005 by Multimedia Mike
I learned that this blog ranks highly on Google with the search query “deobfuscating java”. I decided to see what other items come up with such a term. In doing so, I found someone who eats, sleeps, and breathes code obfuscation the same way I do de-obfuscation and reverse engineering.
And if “deobfuscating java” brought you here, this page on Retroguard deobfuscation is the reason.
Meet Paul Tyma, Ph.D. I became aware of him through this I, Cringely column entitled “Misinterpretation”. Tyma and his company PreEmptive Solutions have developed code obfuscators for both the Java and .NET languages. The article notes that one technique under development (possibly already deployed?) is called “Program State Code Protection”. From what I can discern, it almost sounds like self-modifying code for Java. I would be interested to see it in action.
Further, the company has 2 patents assigned to it:
- 6,102,966: Method for renaming identifiers of a computer program
- 5,903,761: Method of reducing the number of instructions in a program code sequence
Tyma also has an article in a Java publication entitled “The New Obfuscation”. This piece presents some examples of code mangling that are difficult to decompile and would be almost impossible to recompile.
Posted in Java, Reverse Engineering | Comments Off on Monitoring The Competition
May 21st, 2005 by Multimedia Mike
I don’t know why this did not occur to me sooner: Distributed reverse engineering!
Read the rest of this entry »
Posted in Java, On2/Duck, Reverse Engineering | Comments Off on Distributed Reverse Engineering