From f270ea75accdcdef295863e5b29e182550f706a4 Mon Sep 17 00:00:00 2001 From: nishikawa_takeshi Date: Thu, 4 Sep 2008 01:41:40 +0000 Subject: [PATCH] =?UTF-8?q?ROM=E3=83=98=E3=83=83=E3=83=80=E5=81=BD?= =?UTF-8?q?=E8=A3=85:=E6=96=B0=E6=97=A7=E3=81=AE=E9=96=8B=E7=99=BA?= =?UTF-8?q?=E7=94=A8=E6=9A=97=E5=8F=B7=E3=83=95=E3=83=A9=E3=82=B0=E5=85=A5?= =?UTF-8?q?=E3=82=8C=E6=9B=BF=E3=81=88=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2391 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/tests/FakeRomHeader/Makefile | 2 +- build/tests/FakeRomHeader/README.txt | 1 + build/tests/FakeRomHeader/main.c | 23 ++++++++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/build/tests/FakeRomHeader/Makefile b/build/tests/FakeRomHeader/Makefile index 01a1921c..24b9ea7c 100644 --- a/build/tests/FakeRomHeader/Makefile +++ b/build/tests/FakeRomHeader/Makefile @@ -21,7 +21,7 @@ include $(TWLSDK_ROOT)/build/buildtools/commondefs -TARGETS = fakeRomHeader.exe +TARGETS = FakeRomHeader.exe SOURCES_C = main.c keys.c diff --git a/build/tests/FakeRomHeader/README.txt b/build/tests/FakeRomHeader/README.txt index eda63c5b..6a287402 100644 --- a/build/tests/FakeRomHeader/README.txt +++ b/build/tests/FakeRomHeader/README.txt @@ -25,6 +25,7 @@ ROM ・オプション -p: プラットフォームコードを0x01にします。 -s: 署名有効フラグをOffにします。 + -d: 新・開発用暗号フラグを0にして、旧・開発用暗号フラグを1にします。 ・他にもROMヘッダをいじりたいとき -> バイナリエディタなどでROMヘッダをいじった後に、 diff --git a/build/tests/FakeRomHeader/main.c b/build/tests/FakeRomHeader/main.c index ab70da9f..2fa286b3 100644 --- a/build/tests/FakeRomHeader/main.c +++ b/build/tests/FakeRomHeader/main.c @@ -60,6 +60,7 @@ typedef struct _SContext // オプション BOOL bPlatform; BOOL bSignFlag; + BOOL bDevFlag; FILE *ifp; FILE *ofp; @@ -99,6 +100,7 @@ void usage() printf( "-h : print help only.\n" ); printf( "-p : write invalid platform code in a ROM Header.\n" ); printf( "-s : negate flag for the signature in a ROM Header.\n" ); + printf( "-d : negate a new developer encrypt flag, and assert an old one.\n" ); printf( "-----------------------------------------------------------------------------\n" ); } @@ -120,7 +122,7 @@ int main(int argc, char *argv[]) memset( &context, 0, sizeof(SContext) ); // オプション - while( (opt = getopt(argc, argv, "hps")) >= 0 ) + while( (opt = getopt(argc, argv, "hpsd")) >= 0 ) { switch( opt ) { @@ -136,6 +138,10 @@ int main(int argc, char *argv[]) case 's': context.bSignFlag = TRUE; break; + + case 'd': + context.bDevFlag = TRUE; + break; default: // オプション引数が指定されていないときにも実行される usage(); @@ -164,6 +170,13 @@ int main(int argc, char *argv[]) printf( "output_file: %s\n", pDst ); printf( "\n" ); + // 入力ファイルと出力ファイル名が同じならダメ + if( (strlen(pSrc) == strlen(pDst)) && (memcmp(pSrc, pDst, strlen(pSrc)) == 0) ) + { + printf( "The name of output_file must be different from the one of input_file\n" ); + exit(1); + } + // 出力ファイルが存在するとき上書きするかどうかを確認する if( stat( pDst, &st )==0 ) { @@ -248,6 +261,14 @@ static BOOL iMain( SContext *pContext ) printf( "enable_signature: 0x%02x -> 0x00\n", rh.s.enable_signature ); rh.s.enable_signature = 0x0; } + + if( pContext->bDevFlag ) + { + printf( "old dev. encrypt: 0x%02x -> 0x01x\n", rh.s.developer_encrypt_old ); + printf( "new dev. encrypt: 0x%02x -> 0x00x\n", rh.s.exFlags.developer_encrypt ); + rh.s.developer_encrypt_old = 0x1; + rh.s.exFlags.developer_encrypt = 0x0; + } } // ヘッダCRC計算