This (very early, highly alpha) software is designed to unpack PS2 elf. It uses lots of pcsx2's internal code ( http://pcsx2.net ). It will load your elf, and start emulating it, until it think it has reached the entry point.
2004/08/14: release of version 0.1, first version. 2004/08/16: addded trace option release of version 0.1.1 2005/04/19: added more raw options per popular request. release of version 0.1.2
-) Add full COP0 support maybe ? -) Add multiple section dump ? -) Add other syscalls supports ? -) Better bss detection ? -) Improve code in general :p
This code is covered by GPL. Actually, I don't give a shit about licenses and stuff. If you don't like it covered by GPL, just ask me, and we'll change it. The only problem is it uses modified version of a lot of GPLed code, especially pcsx2, so...
Beeing a ps2dev.org developper got me banned from ps2ownz.com's website. Thus, as a special exception to the GPL, since I can not go on their forums, and react and help people about that software, I to NOT give them the autorization to mirror these packages on their website, only to link to the homepage of this project, that is, http://www.nobis-crew.org/ps2-unpacker nor are they authorized to support their users on their forums on questions about that software.
If you want to reach me, and find support about ps2-unpacker, either ask me directly, by mail, or by reaching me on IRC (channel #ps2dev on EfNet), or ask your questions on ps2dev.org's forums and ps2-scene's forums.
I actually know they won't give a shit about these restrictions, but I felt like proceeding so. If you want real and legit ps2 development, go on the genuine ps2dev website, that is, http://ps2dev.org
Usage: ps2-unpacker [-t] [-l lo] [-i hi] [-a align] <in_elf> <out_elf>
Options description: -t activate output trace. -l low sets the low address of the final dumped binary. Otherwise, it is auto detected. -i high sets the high address of the final dumper binary. Otherwise, it is auto detected. -a align sets section alignment. 16 by default. Any value accepted. However, here is a list of alignments to know: 1 - no alignment, risky, shouldn't work. 4 - 32-bits alignment, tricky, should on certain loaders. 16 - 128-bits alignment, normal, should work everywhere. 128 - 128-bytes alignment, dma-safe. 4096 - supra-safe, this is the default alignment of binutils.
Now, you have to understand the mechanisms.
The emulation core will run, and tag the memory during the long run. When the execution reaches the ExecPS2 syscall, or a jump to a written part of the memory, it will consider that the job is done. The bloc of non-zero written memory around the detected entry point will be dumped. The low address will be aligned to the alignment specified.
If needed, you can force the low and high dumping addresses, if they were not detected correctly.
-) It's poorly coded :-P -) Some of the packed elf I tested just went wrong.
A simple "make" should do the trick in order to compile everything.
Don't look at the 'dist' target in the Makefile, it's only for me to build the various packages.
Nicolas "Pixel" Noble pixel@nobis-crew.org - http://www.nobis-crew.org
The "official" webpage for this tool is at on my personal webspace:
http://www.nobis-crew.org/ps2-unpacker/
However, you can find the latests CVS changes into ps2dev's CVS:
http://cvs.ps2dev.org/ps2-unpacker/
For more informations about it, feel free to go on ps2dev's website located at http://ps2dev.org/ and be sure to drop by #ps2dev in EfNet.
They go to adresd, blackd_wd, drakonite, emoon, gorim, hiryu, herben, jenova, linuzapp, oobles, oopo, mrbrown, nagra, neov, nik, t0mb0la, tyranid
and maybe a few other people I forgot at #ps2dev :)