asmodean's reverse engineering page

news and updates / index of tools / message board

2010/02/06 / exkifint updated

2010/02/01 / miscmja updated / exdebopak updated

2010/01/31 / exrlarc

Maybe somebody felt things were too obvious last time, since they switched to using an ISAAC PRNG. Try harder guys. :)

exrlarc_nosrc.zip

Contents:
// exscharc.cpp, v1.1 2010/01/31
// This tool extracts data from ARC archives used by Trample on Schatten!!
// and other games.  Compile with -DRUNELORD for Rune Lord variation.

// cpb2bmp_rl.cpp, v1.0 2010/01/31
// This tool converts TYP1 (*.cpb) images used by Rune Lord.
Known to work with:

2010/01/29   CLOCKUP team DYO   「ルーンロオド」

*.arc (sig=none)


2010/01/30 / exmpf2

exmpf2.zip

Contents:
// exmpf2.cpp, v1.0 2010/01/30
// This tool extracts MPF2 (*.dat+*.a01 etc) archives.
Known to work with:

2010/01/29   APRICOT   「ゆにばる! PARANORMAL GIRLS STRIKE!!」

*.dat+*.a01 (sig=MPF2)


2010/01/29 / decrbrads updated

2010/01/24 / miscmja updated

2009/12/30 / exdieslib updated

2009/12/26 / exihkcap updated

2009/12/26 / exns2

Use decrkansa to decrypt 00.ns2 before extracting with this tool.

exns2.zip

Contents:
// exns2.cpp, v1.0 2009/12/26
// This tool extracts *.ns2 archives.  Use decrkansa first for encrypted
// archives.
Known to work with:

2009/12/25   Liquid-Touchable   「秘蹟神姫アルカナセイバー」

*.ns2 (sig=none)


2009/12/26 / decrkansa updated

2009/12/24 / exszs

exszs.zip

Contents:
// exszs.cpp, v1.0 2009/12/24
// This tool extracts SZS100 (*.szs) archives.
Known to work with:

2009/12/18   げーせん18   「出撃!!乙女たちの戦場 〜闇を切り裂く、にび色の徹甲弾〜」

*.szs (sig=SZS100)


2009/12/21 / exmnvdat updated

2009/12/20 / exlfa

This might work with some older Leaf games, but I haven't tried it. Let me know?

exlfa.zip

Contents:
// exlfa.cpp, v1.0 2009/12/20
// This tool extracts Leaf's *.a archives.
Known to work with:

2009/12/18   Leaf   「Princess Collection」

*.a (sig=0x1EAF)


2009/12/20 / exlac updated

2009/12/19 / exlfar21

I'm already tired of having to reassemble chopped up textures like this ... but at least the game has very nice character art so it was worth the trouble.

exlfar21.zip

Contents:
// exlfar21.cpp, v1.0 2009/12/19
// This tool extracts ar21 (*.ar2) archives.

// fixlfpng.cpp, v1.0 2009/12/19
// This tool reassembles two types of fragmented image textures used by Leaf.

// exlfpim.cpp, v1.0 2009/12/19
// This tool extracts *.pim archives.
Known to work with:

2009/12/18   Leaf   「Final Dragon Chronicle -Guilty Requiem-」

*.ar2 (sig=ar21)


2009/12/18 / gyu2bmp updated / miscmja updated

2009/12/12 / exbelarc

Maybe next time they'll use 32-bit PNGs instead of junky masks.

Note that v2 is for しろくまベルスターズ♪. I expect v1 to work on a lot of older games but I haven't tried it.

exbelarc.zip

Contents:
// exbelarc.cpp, v1.0 2009/12/12
// This tool extracts data from *.arc archives used by しろくまベルスターズ♪.
// Compile with -DARC_VERSION=1 for older games.
Known to work with:

2009/12/11   PULLTOP   「しろくまベルスターズ♪」

*.arc; none (sig=none; WIPF)


2009/12/05 / exdpmx

exdpmx.zip

Contents:
// exdpmx.cpp, v1.1 2009/12/05
// This tool extracts data from DPMX (*.dpm) archives.
Known to work with:

2006/12/22   inspire   「femme fatale」
2009/12/04   PHAM!   「えろドラ!」

*.bin (sig=DPMX)
*.dpm (sig=DPMX)


2009/12/04 / expdfpk

expdfpk.zip

Contents:
// expdfpk.cpp, v1.0 2009/12/04
// This tool extracts data from FPK 0100 (*.fpk) archives used in Pretty Devil.
Known to work with:

2009/08/28   祭企画   「女子○2」
2009/11/27   ビタミン   「PrettyDevilパラダイス〜ミリオム魔界奪還指令!〜」
2009/11/27   ビタミン   「PrettyDevilミリオムおまけ劇場」

*.fpk; *.fbx (sig=FPK 0100; FBX)


2009/11/30 / miscmja updated

2009/11/29 / exkiss6dat

exkiss6dat.zip

Contents:
// exkiss6dat.cpp, v1.0 2009/11/29
// This tool extracts CAPYBARA DAT 001 (*.DAT) archives.
Known to work with:

2009/11/27   WINTERS   「KISS×600 管理人さんのポニーテール」

*.DAT (sig=CAPYBARA DAT 001)


2009/11/28 / exgr2

This is a really old archive format ... now with some basic RLE compression.

exgr2.zip

Contents:
// exgr2.cpp, v1.0 2009/11/28
// This tool extracts PACK (*.GR2) archvies.
Known to work with:

2000/08/04   U・Me SOFT   「微笑みをもういちど」
2003/07/04   GLOBE   「さよならまゆみちゃん〜藤ノ森病院物語〜」
2004/03/05   青梅製作所   「狂乱〜狂った性活〜」
2009/11/27   CROSSOVER   「美乳淫妹 遥」

*.GR2; *.GR2 (sig=PACK; GR2_)


2009/11/28 / exbelldat updated

2009/11/27 / extcd3 updated / exkifint updated / exchpac updated

2009/11/20 / exkoigdat

This may be the the most retarded data obfuscation I've seen. It copies data from the end of the movies to the front, actually modifying them on disk temporarily to play them back...

exkoigdat.zip

Contents:
// exkoigdat.cpp, v1.0 2009/11/20
// This tool extracts data from 恋衣 〜まずはコレ着て!〜
Known to work with:

2009/11/20   Catear   「恋衣 〜まずはコレ着て!〜」

*.DAT (sig=none)


2009/11/18 / exkkesui

Low resolution 640x480 PS2 graphics are pretty lame these days but since somebody asked me to look at this...

exkkesui.zip

Contents:
// exkkesui.cpp, v1.0 2009/11/18
// This tool extracts data from かのこん えすいー.
Known to work with:

2008/07/31   5pb.   「かのこん えすいー (PS2)」

*.DAT (sig=none)


2009/11/17 / exlnk4

This was irritating dealing with the block/delta image format, especially having to do so three different ways. Still, it's something I haven't seen before and was a bit interesting. The floating-point version I suspect is reassembled on the GPU, maybe in a pixel shader?

Usage of the merge tools is unusually complicated. The first parameter is the bitmap and the next is the delta data file (no extension). Passing auto where supported will guess paired filenames; it's usually right.

- merge_5bpfrag works with STEINS;GATE.

- merge_11ecfrag works with deltas in 11eyes CrossOver's chara.dat. Extracting everything will consume a *lot* of space.

- merge_11ecfrag2 works with deltas in 11eyes CrossOver's bg.dat. Note there are two bitmaps each for this one.

exlnk4.zip

Contents:
// exlnk4.cpp, v1.0 2009/04/09
// This tool extracts LNK4 (*.dat) archives.

// merge_5pbfrag.cpp, v1.0 2009/11/14
// This tool merges tiled fragments used by 5pb on the Xbox 360.

// merge_11ecfrag.cpp, v1.0 2009/11/15
// This tool merges tiled fragments used by 11eyes CrossOver (chara)

// merge_11ecfrag2.cpp, v1.0 2009/11/16
// This tool merges tiled fragments used by 11eyes CrossOver (bg).
// Input is two bitmaps and a descriptor file.
Known to work with:

2009/04/02   5pb./Lass   「11eyes CrossOver (XBOX360)」
2009/10/15   5pb./Nitro+   「STEINS;GATE (XBOX360)」

*.dat; * (sig=LNK4; none)


2009/10/31 / exanepak

The TOC changed to using 64-bit offsets; apparently 2GB is not enough for these guys. :)

The 32-bit offset version (v1) probably works with a lot of old games but I haven't tried it.

exanepak.zip

Contents:
// exanepak.cpp, v1.0 2009/10/31
// This tool extracts obfuscated CGPACK.idx/pak archives from OLE-M.
Known to work with:

2009/10/30   OLE-M   「このままじゃ姉とSEXしてしまう!? あれ、弟よ、いま中でださなかった?」

CGPACK.idx+CGPACK.pak; *.gr (sig=none; none)


2009/10/31 / exmaspaz

The *.dat archives in ましろ色シンフォニー are standard paz archives despite the clever(?) disguise.

Note that this tool can also rebuild archives for anybody who might care.

exmaspaz.zip

Contents:
// exmaspaz.cpp, v1.24 2009/10/31
// This tool extracts and rebuilds data from *.paz archives
Known to work with:

2009/10/30   ぱれっと   「ましろ色シンフォニー」

*.dat (sig=none)


2009/10/30 / exnllpk updated / exyox updated / exnpa updated

2009/10/23 / exnllpk updated / miscmja updated / excdt updated

2009/10/09 / extricgf updated

2009/09/30 / exdieslib updated

2009/09/25 / extropak

The version I posted earlier didn't deal with obfuscated data since I only looked at the character art. :)

Updated 1.02: now unobfuscates *.hse data.

extropak.zip

Contents:
// extropak.cpp, v1.02 2009/09/25
// This tool extracts PACK (*.pak) archives used by トロピカルKISS.
Known to work with:

2006/10/27   BLACKRAINBOW   「相姦遊戯」
2009/09/25   Twinkle   「トロピカルKISS」

*.pak; *.hse (sig=PACK; none)


2009/09/25 / exfp3 updated

2009/09/20 / exef2paz updated

2009/09/18 / miscmja updated

2009/08/14 / exmespac updated

2009/08/12 / exddp

I was surprised to find the home-grown looking compression algorithm is identical to one found in exhxp a while back. The archives share other similarities so maybe some coder has been moving around...

exddp.zip

Contents:
// exddp.cpp, v1.0 2009/08/12
// This tool extracts DDP2/DDP3 (*.dat) archives.
Known to work with:

2009/07/10   PIL   「仏蘭西少女」

*.dat (sig=DDP2, DDP3)


2009/08/08 / exdebopak

Long ago, I wrote a tool that automatically merges image-delta-fragments like those found here. I've been using it for years ... maybe I should do a little cleanup and release it some day.

exdebopak.zip

Contents:
// exdebopak.cpp, v1.0 2009/08/08
// This tool extracts PAK (*.pak) archives used by でぼの巣製作所 in 神楽道中記.
Known to work with:

2009/07/24   でぼの巣製作所   「神楽道中記」

*.pak (sig=PAK)


2009/08/08 / exbelldat updated

2009/08/07 / exl5enj updated

2009/08/04 / exhud

Simple is nice sometimes.

exhud.zip

Contents:
// exhud.cpp, v1.0 2009/08/04
// This tool extracts data from *.hud archives.
Known to work with:

2009/07/31   HUG   「明日はきっと、晴れますように」

*.hud (sig=none)


2009/08/04 / exifdypf updated

2009/08/04 / expcf

Apparently somebody is a fan of exotic algorithms. This format uses multiple block ciphers (AES, RC6, etc) and a tweaked implementation of SHA-256 for encryption. For data compression, it's using fancy Move-To-Front and Burrows-Wheeler transformations followed by custom RLE/LZ77 or Range Encoding. Finally, some images are compressed with a custom block algorithm that seems similar to JPEG without the DCTs.

Updated 1.01: Now supports Tiara予約特典 りゃぼディスク.
Updated 1.02: Now handles multi-block compression (fixes voice.pcf).

expcf.zip

Contents:
// expcf.cpp, v1.02 2009/08/05
// This tool extracts data from encrypted PackCode (*.pcf) archives.
Known to work with:

2009/07/31   Symphony   「Tiara」
2009/07/31   Symphony   「Tiara予約特典 りゃぼディスク」

*.pcf; *.gbc (sig=PackCode; GBCF)


2009/06/07 / d3dslide

I've been looking for a simple program to idle displaying images on my HTPC but nothing really did what I wanted. At least it was kindof fun learning Direct3D to write one myself.

This application displays an animated slideshow using a handful of effects smoothly animated using 3D hardware. The methods are optimized to always fill the screen (no black bars) and it tries to select methods appropriate to the aspect ratio of each image. In particular this does well against very tall images like magazine and stickposter scans.

A modern GPU with vertex shader 1.1 and pixel shader 2.0 is needed. More video RAM may allow you to use higher resolution textures. If you notice slight animation stutters sometimes during image transitions, try tweaking the MAX_TEXTURE_PIXELS values in d3dslide.ini. That can also be used to improve quality if you're feeling adventurous. :)

I haven't tested this on very much different hardware, so let me know how it goes. I am particularly interested in performance with very high resolution images (7000x3400 etc).

Updated 1.02
- Fixed a bug configuring the presentation method weights.
- Added a few new configuration options.
- Improved performance with large textures a little bit.
- Changed animation timing to be based on frames instead of real time; this makes it smoother particularly when dropping occasional frames.

d3dslide.zip

Contents:
// d3dslide v1.02 by asmodean

2009/06/30 / exsteldat

I'm surprised the obfuscation here got so much simpler.

exsteldat.zip

Contents:
// exsteldat.cpp, v1.0 2009/06/30
// This tool extracts data from Rosebleu's NEKOPACK (*.dat) archives.
Known to work with:

2009/06/26   Rosebleu   「Stellar☆Theater」

*.dat (sig=NEKOPACK)


2009/06/29 / gyu2bmp updated

2009/06/27 / exkizpak

Only supports the new versions; I don't care about ancient games.

exkizpak.zip

Contents:
// exkizpak.cpp, v1.0 2009/06/27
// Extracts KCAP (*.PACK) archives used by 痕−きずあと−.
Known to work with:

2009/06/26   Leaf   「痕−きずあと−」

*.pak; *.bjr (sig=KCAP; BM)


2009/06/23 / exnllpk updated / exdieslib updated

2009/06/02 / exvcpak

I kept looking at the scramble algorithm trying to figure out why it does several operations that result in constant values ... finally I concluded that whoever wrote the code is just an idiot.

exvcpak.zip

Contents:
// exvcpak.cpp, v1.0 2009/06/02
// This tool extracts data from Valkyrie Complex's *.PAK archives.
Known to work with:

2009/05/29   CIRCUS   「ヴァルキリーコンプレックス」

*.pak (sig=none)


2009/05/31 / exs4alf updated

2009/05/31 / exscharc

Thanks for the readme.txt informing that your obfuscation was based on the Mersenne Twister PRNG. ;)

exscharc_nosrc.zip

Contents:
// exscharc.cpp, v1.0 2009/05/31
// This tool extracts data from ARC archives used by Trample on Schatten!!.

// cpb2bmp.cpp, v1.02 2007/09/01
// This tool converts CPB (*.cpb) images to bitmaps. 
// Compile with -DSENTINEL, -DZWEIWORTER or -TVKIETAHI.
Known to work with:

2009/05/29   TAIL WIND   「Trample on Schatten!!〜かげふみのうた〜」

*.arc (sig=none)


2009/04/03 / exchpac updated

2009/03/31 / extricgf updated / exchpac updated / miscmja updated

2009/03/17 / exnpa updated

2009/03/08 / excfarc updated

2009/03/03 / exdieslib updated

2009/03/02 / miscmja updated

2009/02/08 / extcd3 updated

2009/02/02 / miscmja updated

2009/02/01 / miscmja updated / exkifint updated / exnllpk updated

2009/01/31 / decrbrads

I should have recognized more quickly that the encryption being used here is identical to decrkansa, but that seemed so unlikely that I ended up reversing it all over again. I guess some game makers have been cut&pasting crypto code.

This tool only decrypts the archives; use exbrdat to extract them.

decrbrads.zip

Contents:
// decrbrads.cpp, v1.0 2009/01/31
// This tool decrypt's BLACKRAINBOW's encrypted *.ads archives.
// Use exbrdat to extract afterwards.
Known to work with:

2009/01/30   BLACKRAINBOW   「相姦遊戯2」

*.ads (sig=none)


2009/01/31 / ex4ag updated

2009/01/29 / ar2bugfix

This tool fixes a crash, which many people have been wailing about, encountered when fighting Raki in the USA version of Ar Tonelico 2. NIS really made a mess out of the localization of this game ... there are other less deadly bugs, like the IPD contact text, that I might also clean up later.

Note that this tool is implemented as a scanner-patcher so that it will work with any target; run it against the game executable or any uncompressed disc image of the game.

Updated 1.01: This is a command line tool but I added a small delay so that novice users can drag&drop an ISO to it and have enough time to read the confirmation message.

ar2bugfix.zip

Contents:
// ar2bugfix.cpp, v1.01 2009/01/30
// This tool fixes a crashing bug encountered when fighting Raki in the
// USA release of Ar Tonelico 2 (SLUS_217.88).
Known to work with:

2009/01/20   Banpresto/GUST   「Ar Tonelico 2: Melody of Metafalica (PS2)」

SLUS_217.88, *.ISO (sig=none)


2009/01/25 / exar2

This can extract/rebuild RPK.BIN from Ar Tonelico 2 and also extract/rebuild the scripts (*.evd).

Script editting isn't terribly useful because text data is stored in several other places (including the *.ERX which seem to be executable overlays or something). But since I wasted some time looking at this I may as well release the tools and let people pretend they're going to redo the pathetic translation. Note that the scripts are SJIS text using wide-ascii(?) characters.

I suggest uema's iftm2 Susie plugin for the TIM2 (*.tm2) graphics since XnView screws up the color. Use bmp8to32 -fixalpha for correct transparency.

Updated: Added unlzr to decompress the LZR compressed data.

Updated: Added exar2fp to extract the *.fp archives (no rebuilding since I feel lazy). Also fixed a bug in unlzr.

exar2.zip

Contents:
// exar2rpk.cpp, v1.0 2009/01/22
// Extracts/rebuilds RPK archives used by Ar Tonelico 2.

// exar2fp.cpp, v1.0 2009/01/28
// Extracts multiple *.fp archives used by Ar Tonelico 2.

// unlzr.cpp, v1.01 2009/01/28
// Uncompresses LZR data (mostly TIM2 graphics) used by GUST.

// exar2evd.cpp, v1.0 2009/01/22
// Extracts/rebuilds EVD scripts used by Ar Tonelico 2.
Known to work with:

2009/01/20   Banpresto/GUST   「Ar Tonelico 2: Melody of Metafalica (PS2)」

RPK.BIN, *.fp; *.lzr (sig=none; LZR)


2009/01/02 / exnllpk updated

2009/01/02 / exald

I've been wondering what the AJP are so I wrote a tool to convert them... if I had realized they are mostly animation junk I would not have bothered. This only converts the AJP/masks, so use Kouji's susie plugin or something else for the QNT images.

exald.zip

Contents:
// exald.cpp, v1.0 2009/01/02
// Extracts ALD archives used by AliceSoft.  AJP are converted to jpeg/bitmaps.
Known to work with:

2008/09/26   ALICESOFT   「AliveZ」

*.ald; *.ajp (sig=none; AJP)


2008/12/29 / message board online

I missed having an easy way for people to comment and report problems etc, so I put up an experimental message board; feel free to post so it seems worth while...

2008/12/28 / exnpa updated

2008/12/28 / exmespac

For some reason they changed the graphic formats drastically, using different compression and muliple filtering algorithms. The delta filter mode is reasonable but the type2 one is ... extremely obtuse. If anybody knows the name of the technique, please let me know.

Updated: Apparently the strange algorithm is converting a YUV colorspace to RGB. The weights aren't quite the same though.

exmespac.zip

Contents:
// ge2bmp2.cpp, v1.0 2008/12/28
// This tool converts GE and PGD3 (*.pgd) images from M.E.s.  Use ge2bmp for
// other varieties of this format.

// exmarupac.cpp, v1.01 2008/06/27
// This tool extracts files from *.PAC archives used by STRIKE's マル秘人事部凌辱課.
// Use pgd2tga for the graphics.
Known to work with:

2008/12/19   セレス   「M.E.s. −同級生メイド調教−」

*.pac; *.pgd (sig=none; GE)


2008/12/27 / exihkcap

exihkcap.zip

Contents:
// exihkcap.cpp, v1.0 2008/12/27
// Extracts KCAP (*.PACK) archives used by Interheart.
Known to work with:

2008/12/26   INTERHEART   「悪戯麻雀」

data.pack (sig=KCAP)


2008/12/27 / exlac

It seems like I've seen extractors for these archives before but it was easier to rewrite than find an old tool.

DDS Converter has problems with most of the graphics, so I suggest using XnView to convert instead. I hope ugly 3D junk like this doesn't become common...

exlac.zip

Contents:
// exlac.cpp, v1.0 2008/12/27
// Extracts LAC (*.PAK) archives used by Leaf.

// extexpack.cpp, v1.0 2008/12/27
// Extracts TEX PACK0.02 (*.TEX) archives used by Leaf.
Known to work with:

2008/12/26   Leaf   「君が呼ぶ、メギドの丘で」

*.pak, *.tex; *.lgf (sig=LAC, TEX PACK0.02; lgf)


2008/12/27 / exdaf2 updated

2008/12/26 / extafarc updated

2008/12/23 / exbkarc updated

2008/12/22 / extskfdat

extskfdat.zip

Contents:
// extskfdat, v1.0 2008/12/22
// This tool extracts tskforce (*.dat) archives.
Known to work with:

2008/12/19   Digital+Cute   「むすめーかー」

*.dat (sig=tskforce)


2008/09/29 / miscmja updated

2008/09/12 / extvkarc updated

2008/09/12 / don't send flowers yet

Since people have been emailing me, yes, I am still alive.  It seems a lot of time has leaked away while I've been addicted to Soul Calibur 4; it's way too easy to spend all night playing online. :)  Now if only the Xbox360's d-pad worked correctly...

2008/07/27 / exbsa

An old tool for this format wasn't working very well, so I finally got around to writing something myself. For some reason I thought it was a lot more complicated than this ...

I'm not sure if this will work for older games.

exbsa.zip

Contents:
// exbsa, v1.0 2008/07/27
// This tool extracts data from newer BSS-Arc (*.bsa) archives.
Known to work with:

2008/07/25   BISHOP   「毎日けだものっ!! らぶえろ☆ももいろ☆すくーるらいふ♪」

*.bsa (sig=BSS-Arc; BSS-Graphic, BSS-Composition)


2008/07/27 / exarc4 updated / miscmja updated

2008/07/26 / exdieslib updated

2008/07/26 / exwlcs

I was just thinking about how they never change this format ... and then they changed it. :)

exwlcs.zip

Contents:
// exwlcs, v1.0 2008/07/26
// This tool extracts data lcsebody+lcsebody.lst used by W触区〜新・学園妖触譚〜.
Known to work with:

2008/07/25   Lusterise   「W触区〜新・学園妖触譚〜」

lcsebody.lst+lcsebody (sig=none)


2008/07/25 / exbelldat updated

2008/07/19 / exkifint updated

2008/07/16 / temporary page online

Seems like asmodean's reverse engineering page at Rakuten has become unavailable. Their site had become annoyingly cluttered with ads and other junk, so it's nice to have some motivation to move ... but since I am lazy now and want to play Persona 4 instead, this ghetto temporary page will have to suffice for now. :)

No comments or BBS yet. Send email to asmodean [at] hush.com or find me on efnet IRC.

All source © 2006-2009, asmodean. Don't copy, learn.