<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Breaking Eggs And Making Omelettes &#187; Java</title>
	<atom:link href="http://multimedia.cx/eggs/category/reverse-engineering/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://multimedia.cx/eggs</link>
	<description>Topics On Multimedia Technology and Reverse Engineering</description>
	<lastBuildDate>Sun, 29 Apr 2012 05:01:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Unholy Alliance</title>
		<link>http://multimedia.cx/eggs/unholy-alliance/</link>
		<comments>http://multimedia.cx/eggs/unholy-alliance/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 05:57:57 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/unholy-alliance/</guid>
		<description><![CDATA[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 [...]]]></description>
			<content:encoded><![CDATA[<p>Ma.tt (his actual domain name), the father of the WordPress blogging system, snapped this photo at the <a href="http://sxsw.com/">SxSW event</a> and it gave me a cold chill for some reason:</p>
<p><center><br />
<a href="http://ma.tt/2008/03/sxsw-day-one/mat_0906/"><img src="/eggs/images/blu-ray-java-segway.jpg" alt="Blu-Ray/Java Segway" /></a><br />
</center></p>
<p>I did a little searching and realized that I had already been exposed to the idea that <a href="http://multimedia.cx/eggs/blu-ray-java/">Blu-Ray was colluding with Java</a>. 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?</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/unholy-alliance/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Android Multimedia SDK</title>
		<link>http://multimedia.cx/eggs/android-multimedia-sdk/</link>
		<comments>http://multimedia.cx/eggs/android-multimedia-sdk/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 02:40:34 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Multimedia PressWatch]]></category>
		<category><![CDATA[android platform]]></category>
		<category><![CDATA[gphone]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/android-multimedia-sdk/</guid>
		<description><![CDATA[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&#8217;s nice. But let&#8217;s cut to what really matters &#8212; multimedia. The SDK specifies the Media API along with its MediaPlayer and [...]]]></description>
			<content:encoded><![CDATA[<p>Google has unveiled their mighty <a href="http://code.google.com/android/">Android platform SDK today</a>. 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.</p>
<p><center><br />
<a href="http://code.google.com/android/"><img src="/eggs/images/android-logo.gif" alt="Android logo" border="0" /></a><br />
</center></p>
<p>That&#8217;s nice. But let&#8217;s cut to what really matters &#8212; multimedia. The SDK specifies the <a href="http://code.google.com/android/toolbox/apis/media.html">Media API</a> along with its <a href="http://code.google.com/android/reference/android/media/MediaPlayer.html">MediaPlayer</a> and <a href="http://code.google.com/android/reference/android/media/MediaRecorder.html">MediaRecorder</a> APIs. According to the <a href="http://code.google.com/android/reference/android/media/MediaRecorder.AudioEncoder.html">AudioEncoder class</a>, audio can be encoded to <a href="http://wiki.multimedia.cx/index.php?title=AMR-NB">AMR-NB</a>. The <a href="http://code.google.com/android/reference/android/media/MediaRecorder.VideoEncoder.html">VideoEncoder class</a> specifies H.263, H.264, and MPEG-4 SP. All pretty standard for a mobile application, I suppose.</p>
<p>Who handles the multimedia heavy lifting? <a href="http://multimedia.cx/eggs/android-multimedia/#comment-87870">Vitor</a> noticed this <a href="http://www.packetvideo.com/press_releases/11_05_2007.html">press release</a> and associated <a href="http://www.packetvideo.com/products/core/technology.html">fluffy overview</a> from <a href="http://www.packetvideo.com/index.html">PacketVideo</a></p>
<p>It&#8217;s Java, though, and that means obfuscated Java bytecode programs. Time for a renaissance for my <a href="http://multimedia.cx/pre/re-retroguard.html">Java de-obfuscator</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/android-multimedia-sdk/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Blu-Ray Java</title>
		<link>http://multimedia.cx/eggs/blu-ray-java/</link>
		<comments>http://multimedia.cx/eggs/blu-ray-java/#comments</comments>
		<pubDate>Thu, 04 Jan 2007 06:58:18 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Multimedia PressWatch]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/blu-ray-java/</guid>
		<description><![CDATA[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&#8217;t get [...]]]></description>
			<content:encoded><![CDATA[<p>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: <a href="http://imdb.com/news/sb/2007-01-03/#film2">Sony Encounters New Blu-ray Glitches</a>. 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&#8217;t get more complicated and bloated. So now players have to have some kind of Java VM?</p>
<p>As usual, <a href="http://en.wikipedia.org/wiki/BD-Java">Wikipedia is on top of it</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/blu-ray-java/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>COD File Redux</title>
		<link>http://multimedia.cx/eggs/cod-file-redux/</link>
		<comments>http://multimedia.cx/eggs/cod-file-redux/#comments</comments>
		<pubDate>Sun, 13 Aug 2006 02:31:48 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/cod-file-redux/</guid>
		<description><![CDATA[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 &#038; Форсаж (would love to know what that title means) have posted a 2-part (so far) analysis of the format. Part 1 and Part [...]]]></description>
			<content:encoded><![CDATA[<p>Just in case anyone is following this blog in hopes of finding information about a Java-related <a href="http://multimedia.cx/eggs/reverse-engineering-blackberry-java-native-modules/">COD file format that I mentioned last year</a>, some folks at a blog called <a href="http://drbolsen.wordpress.com/">Reverse &#038; Форсаж</a> (would love to know what that title means) have posted a 2-part (so far) analysis of the format. <a href="http://drbolsen.wordpress.com/2006/07/26/blackberry-cod-file-format/">Part 1</a> and <a href="http://drbolsen.wordpress.com/2006/08/11/10/">Part 2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/cod-file-redux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Java Deobfuscation In Use; Eclipse For Refactoring</title>
		<link>http://multimedia.cx/eggs/java-deobfuscation-in-use-eclipse-for-refactoring/</link>
		<comments>http://multimedia.cx/eggs/java-deobfuscation-in-use-eclipse-for-refactoring/#comments</comments>
		<pubDate>Sun, 28 Aug 2005 22:03:35 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/?p=115</guid>
		<description><![CDATA[People are using (and patching) the de-Retroguard solution...]]></description>
			<content:encoded><![CDATA[<p>Believe it or not, other people actually are using my <a href="http://multimedia.cx/pre/re-retroguard.html">Java de-obfuscation via RetroGuard solution</a>. 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.</p>
<p>On a Java-related topic, there is the <a href="http://www.eclipse.org/">Eclipse</a> project. I am not especially familiar with it but apparently it is supposed to be God&#8217;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.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/java-deobfuscation-in-use-eclipse-for-refactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reverse Engineering Blackberry Java Native Modules (?)</title>
		<link>http://multimedia.cx/eggs/reverse-engineering-blackberry-java-native-modules/</link>
		<comments>http://multimedia.cx/eggs/reverse-engineering-blackberry-java-native-modules/#comments</comments>
		<pubDate>Mon, 22 Aug 2005 02:21:21 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/?p=113</guid>
		<description><![CDATA[A highly esoteric request...]]></description>
			<content:encoded><![CDATA[<p>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:</p>
<ul>
<li><a href="http://www.blackberry.net/developers/downloads/jde/index.shtml">Blackberry JDE is available here</a></li>
<li><a href="http://www.blackberry.com/developers/dev_support/index.shtml">Blackberry development documentation</a></li>
<li>Is the .cod a native CPU code file?</li>
<li>If it is a native code file, is this a fabled Java Native Interface (JNI) code file?</li>
<li>If yes, is there a standard way to disassemble the files?</li>
<li>If no, and this is some kind of custom file format, what is the format, the section definitions, etc.?</li>
<li>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.</li>
</ul>
<p>If you have any insight into this format, feel free to contact me.</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/reverse-engineering-blackberry-java-native-modules/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Java Multimedia Library</title>
		<link>http://multimedia.cx/eggs/java-multimedia-library/</link>
		<comments>http://multimedia.cx/eggs/java-multimedia-library/#comments</comments>
		<pubDate>Mon, 15 Aug 2005 23:23:58 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://multimedia.cx/eggs/?p=110</guid>
		<description><![CDATA[Surveying the Java Multimedia Format library...]]></description>
			<content:encoded><![CDATA[<p>Every so often, a discussion of the <a href="http://java.sun.com/products/java-media/jmf/index.jsp">Java Multimedia Format (JMF) library</a> 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 <a href="http://java.sun.com/products/java-media/jmf/2.1.1/formats.html">library actually supports</a> 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.</p>
<p>However, most interesting codecs (including all of those that are not yet RE&#8217;d) are only supported via the Win32 or Linux/Solaris &#8220;Performance Packs&#8221; which are presumably compiled, SIMD-optimized x86 code.</p>
<p>Some curious features&#8211; 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 <a href="http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/javax/media/format/VideoFormat.html">documentation for the javax.media.format.VideoFormat</a> class states that SMC corresponds to &#8220;Sorenson format&#8221;. (<a href="http://multimedia.cx/smc.txt">Here is the SMC format, apparently named for its creator, one Sean M. Callahan</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/java-multimedia-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Multimedia Inventory</title>
		<link>http://multimedia.cx/eggs/java-multimedia-inventory/</link>
		<comments>http://multimedia.cx/eggs/java-multimedia-inventory/#comments</comments>
		<pubDate>Wed, 20 Jul 2005 13:41:41 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">/?p=93</guid>
		<description><![CDATA[There are actually a number of Java-based multimedia formats...]]></description>
			<content:encoded><![CDATA[<p>compn has put together a nice inventory of Java-based multimedia formats, including some reverse engineering efforts. And I quote:</p>
<p><span id="more-93"></span></p>
<p><strong>VX30</strong></p>
<ul>
<li><a href="http://www.vx30.com/">official website</a></li>
<li><a href="http://information.networkessence.net/mxs/vx30/analysis.html">stolen code screenshots, analysis</a></li>
<li><a href="http://www.tliquest.net/ryan/cherryos/vx30/">hex dump and investigation of stolen gpl code in vx30</a></li>
<li><a href="http://www.indy.org/video/Music/">for a sample html file, vx30 and meta file, and the required player</a></li>
</ul>
<p><strong>Eyewonder</strong></p>
<ul>
<li><a href="http://cdn.eyewonder.com/100125/400136/400907/designTheme.html?videoname=boosterseated_anthemdummy_30">a PSA about booster seats (HTML)</a></li>
<li><a href="http://cdn.eyewonder.com/100125/400136/400907/rel.jar">with the Java applet</a></li>
<li>and the <a href="http://cdn.eyewonder.com/100125/400136/400907/boosterseated_anthemdummy_30-300.eye">video</a> and <a href="http://cdn.eyewonder.com/100125/400136/400907/boosterseated_anthemdummy_30-aud.eye">audio</a>  files</li>
<li><a href="http://www.eyewonder.com">vendor site</a></li>
</ul>
<p><strong>some Japanese name, possibly vplayer</strong></p>
<ul>
<li><a href="http://www.actonbb.com/contents/health/0501shape1_health/">original URL</a></li>
<li><a href="http://www.actonbb.com/actonbb/0501shape1/0501shape1_01.w1">sample movie (video)</a></li>
<li><a href="http://www.actonbb.com/actonbb/0501shape1/0501shape1_01.w0">sample movie (meta data?)</a></li>
<li><a href="http://www.actonbb.com/player/v38081/vplayer.jar">Java decoder files (.jar)</a></li>
<li><a href="http://www.actonbb.com/player/v38081/vplayer.cab">Java decoder files</a></li>
</ul>
<p><strong>Emblaze</strong></p>
<ul>
<li><a href="http://www.rxdesign.com/portfolio/video/emblaze/">Emblaze format sample</a></li>
<li><a href="http://www.emblaze.com/serve/products/pc_players.asp">vendor site</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/java-multimedia-inventory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitoring The Competition</title>
		<link>http://multimedia.cx/eggs/monitoring-the-competition/</link>
		<comments>http://multimedia.cx/eggs/monitoring-the-competition/#comments</comments>
		<pubDate>Sat, 28 May 2005 02:58:49 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">/?p=83</guid>
		<description><![CDATA[There are also people obsessed with obuscation...]]></description>
			<content:encoded><![CDATA[<p>I learned that this blog ranks highly on Google with the search query &#8220;deobfuscating java&#8221;. 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.</p>
<blockquote><p>
And if &#8220;deobfuscating java&#8221; brought you here, <a href="/pre/re-retroguard.html">this page on Retroguard deobfuscation</a> is the reason.
</p></blockquote>
<p>Meet <a href="http://www.tyma.com/">Paul Tyma</a>, Ph.D. I became aware of him through this <a href="http://www.pbs.org/cringely/">I, Cringely</a> column entitled <a href="http://www.pbs.org/cringely/pulpit/pulpit20040219.html">&#8220;Misinterpretation&#8221;</a>. Tyma and his company <a href="http://www.preemptive.com/">PreEmptive Solutions</a> have developed code obfuscators for both the Java and .NET languages. The article notes that one technique under development (possibly already deployed?) is called &#8220;Program State Code Protection&#8221;. From what I can discern, it almost sounds like self-modifying code for Java. I would be interested to see it in action.</p>
<p>Further, the company has 2 patents assigned to it:</p>
<ul>
<li>6,102,966: Method for renaming identifiers of a computer program</li>
<li>5,903,761: Method of reducing the number of instructions in a program code sequence</li>
</ul>
<p>Tyma also has an article in a Java publication entitled <a href="http://today.java.net/pub/a/today/2004/10/22/obfuscation.html">&#8220;The New Obfuscation&#8221;</a>. This piece presents some examples of code mangling that are difficult to decompile and would be almost impossible to recompile.</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/monitoring-the-competition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributed Reverse Engineering</title>
		<link>http://multimedia.cx/eggs/distributed-reverse-engineering/</link>
		<comments>http://multimedia.cx/eggs/distributed-reverse-engineering/#comments</comments>
		<pubDate>Sat, 21 May 2005 20:30:57 +0000</pubDate>
		<dc:creator>Multimedia Mike</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[On2/Duck]]></category>
		<category><![CDATA[Reverse Engineering]]></category>

		<guid isPermaLink="false">/?p=79</guid>
		<description><![CDATA[Chip in and help with reverse engineering a production codec...]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know why this did not occur to me sooner: Distributed reverse engineering!</p>
<p><span id="more-79"></span></p>
<p>Thanks to the <a href="http://www.kpdus.com/jad.html">Jad</a> decompiler coupled with my own <a href="http://multimedia.cx/eggs/index.php?cat=9">Java de-obfuscation research</a>, I can get a good head start on reverse engineering multimedia decoder modules written in Java. However, I only have so much time. Plus, I know there are more than a few folks out there who would like to check out the de-obfuscated source code and look for multimedia codec patterns.</p>
<p>So I am posting the work I have done so far to solve the Java cryptogram that is On2&#8242;s VP5 decoder. There are 2 files:</p>
<ul>
<li><a href="/pre/vp5-deobf.java">vp5-deobf.java</a></li>
<li><a href="/pre/vp5-deobf-orig.java">vp5-deobf-orig.java</a></li>
</ul>
<p>vp5-deobf.java is the file that I am modifying to try to recover the original algorithm. vp5-deobf-orig.java is the original de-obfuscated file. Use this for reference if you accidentally search and replace overzealously.</p>
<p>So take a look at it. See what patterns jump out at you. Use search &#038; replace text editing features to replace the nonsense English verbs and animal names when if becomes obvious that they stand for something else. Send me patches against the current revision using &#8216;diff -u&#8217;. I will roll them back into the local Subversion (SVN) repository I am maintaining for this effort. I will keep your effort anonymous if you so wish.</p>
<p>Happy reverse engineering!</p>
]]></content:encoded>
			<wfw:commentRss>http://multimedia.cx/eggs/distributed-reverse-engineering/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

