hiroi01氏がCEF 6.60 TNに同梱されているFLASH0.TNの展開/再パッキングを簡単にしてくれるRubyスクリプトを公開しました。
ツイッターで、hiroi01氏がCEF 6.60 TNに同梱されているFLASH0.TNの展開/再パッキングを簡単にしてくれるRubyスクリプトtn_packer.rb / tn_unpacker.rbをリリースしていました。
このRubyスクリプトは『Urbanix』など向けに作られたCEF 6.60 TNのFLASH0.TNを他のexploitでも動作するように改変する際の作業の一部を簡略化してくれるスクリプトです。
tn_packer.rb / tn_unpacker.rb http://t.co/IINrJufz
ruby tn_packer.rb f0/ FLASH0.TN
ruby tn_unpacker.rb FLASH0.TN f0/— hiroi01 / ろいひ (@hiroi01) October 14, 2012
FLASH0.TNとは、最初に日本版『アーバニクス』へCEFを移植したteck4氏によると、
@mamo_suke Zer01neさんがFLASH0.TN(TNPK)の構造を教えてくれました。 http://t.co/5kEAzNGo
— Rice is beautiful (@teck4) October 7, 2012
その”構造”というのがこれです。
/** TNPK TN-A eCFW Format RE By Zer01ne **/
typedef struct
{
u32 magic;
u32 filesize;
u32 pathlength;
u8 *filename;
void *data;
}TNPK;
teck4氏はこれを
@mamo_suke FLASH0.TNはモジュールのパックなのでバイナリエディタで切り出して復号化後、パスにゲームIDが含まれていたところを変更しました。
— Rice is beautiful (@teck4) October 7, 2012
ということで、実際に試したわけではありませんがFLASH0.TNをバイナリーデータとして展開して、必要な所を書き換えた後に元に戻すという部分をこのスクリプトを使ってできるようです。
[追記]
hiroi01氏からご指摘がありました。
ゲームID書き換えが必要なのはTN-AのみでTN-Bの場合はFLASH0.TNの改変は必要ありません。