Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JAR hidden inside EXE?

Minecraft, a Java game, is free this weekend. The Windows version downloads as an exe file. I was curious what the EXE file is doing and where it's unpacking and running the actual game JAR from. So using a command, I found the command-line arguments to the running javaw.exe process; and oddly enough, it was launched with a classpath pointing to the executable! (meaning, the .exe file was acting as a jar). Indeed, after renaming Minecraft.exe to Minecraft.jar, I was able to open it and see the loader class files and such, as if it were a normal JAR file and not an EXE at all.

How is this possible? And how can I do it with my own JAR files?

like image 679
Ricket Avatar asked Sep 20 '10 18:09

Ricket


2 Answers

This used previously to be very common - especially in the days of floppy disks where space was precious and it was tedious for the unzip program to be on a different disk than the zip file.

The reason why it can be done is because the zip-file inventory structure is located at the end of the zip-file, not the front, so a zip file can contain a large number of initial irrelevant bytes as long as the inventory structure does not point to them (and by extension jar-files too). A very frequent use for this has been to enclose a small unzip-only program which could then unpack the zip file.

One utility to prepend such a program is the unzipsfx. Here is a manual page for it: http://linuxcommand.org/man_pages/unzipsfx1.html

It appears that Minecraft uses another prepended program which invokes Java on itself.


EDIT: Looked inside with an hex editor. Minecraft.exe is wrapped with Launch4j.

like image 108
Thorbjørn Ravn Andersen Avatar answered Nov 01 '22 20:11

Thorbjørn Ravn Andersen


after renaming Minecraft.exe to Minecraft.jar, I was able to open it and see the loader class files and such

Some EXE files are in fact self-extracting ZIP files. JAR files are in turn normal ZIP files with a special file structure. I bet that you was just opening it using a ZIP tool after renaming it. Note that some ZIP tools will auto-integrate in Windows explorer (or the other way round) so that it happens seemingly transparently.

like image 25
BalusC Avatar answered Nov 01 '22 20:11

BalusC