mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
ROMヘッダ偽装:新旧の開発用暗号フラグ入れ替えオプションを追加。
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2391 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
fc422815ae
commit
f270ea75ac
@ -21,7 +21,7 @@ include $(TWLSDK_ROOT)/build/buildtools/commondefs
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
TARGETS = fakeRomHeader.exe
|
TARGETS = FakeRomHeader.exe
|
||||||
|
|
||||||
SOURCES_C = main.c keys.c
|
SOURCES_C = main.c keys.c
|
||||||
|
|
||||||
|
|||||||
@ -25,6 +25,7 @@ ROM
|
|||||||
・オプション
|
・オプション
|
||||||
-p: プラットフォームコードを0x01にします。
|
-p: プラットフォームコードを0x01にします。
|
||||||
-s: 署名有効フラグをOffにします。
|
-s: 署名有効フラグをOffにします。
|
||||||
|
-d: 新・開発用暗号フラグを0にして、旧・開発用暗号フラグを1にします。
|
||||||
|
|
||||||
・他にもROMヘッダをいじりたいとき
|
・他にもROMヘッダをいじりたいとき
|
||||||
-> バイナリエディタなどでROMヘッダをいじった後に、
|
-> バイナリエディタなどでROMヘッダをいじった後に、
|
||||||
|
|||||||
@ -60,6 +60,7 @@ typedef struct _SContext
|
|||||||
// オプション
|
// オプション
|
||||||
BOOL bPlatform;
|
BOOL bPlatform;
|
||||||
BOOL bSignFlag;
|
BOOL bSignFlag;
|
||||||
|
BOOL bDevFlag;
|
||||||
|
|
||||||
FILE *ifp;
|
FILE *ifp;
|
||||||
FILE *ofp;
|
FILE *ofp;
|
||||||
@ -99,6 +100,7 @@ void usage()
|
|||||||
printf( "-h : print help only.\n" );
|
printf( "-h : print help only.\n" );
|
||||||
printf( "-p : write invalid platform code in a ROM Header.\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( "-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" );
|
printf( "-----------------------------------------------------------------------------\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +122,7 @@ int main(int argc, char *argv[])
|
|||||||
memset( &context, 0, sizeof(SContext) );
|
memset( &context, 0, sizeof(SContext) );
|
||||||
|
|
||||||
// オプション
|
// オプション
|
||||||
while( (opt = getopt(argc, argv, "hps")) >= 0 )
|
while( (opt = getopt(argc, argv, "hpsd")) >= 0 )
|
||||||
{
|
{
|
||||||
switch( opt )
|
switch( opt )
|
||||||
{
|
{
|
||||||
@ -136,6 +138,10 @@ int main(int argc, char *argv[])
|
|||||||
case 's':
|
case 's':
|
||||||
context.bSignFlag = TRUE;
|
context.bSignFlag = TRUE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
context.bDevFlag = TRUE;
|
||||||
|
break;
|
||||||
|
|
||||||
default: // オプション引数が指定されていないときにも実行される
|
default: // オプション引数が指定されていないときにも実行される
|
||||||
usage();
|
usage();
|
||||||
@ -164,6 +170,13 @@ int main(int argc, char *argv[])
|
|||||||
printf( "output_file: %s\n", pDst );
|
printf( "output_file: %s\n", pDst );
|
||||||
printf( "\n" );
|
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 )
|
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 );
|
printf( "enable_signature: 0x%02x -> 0x00\n", rh.s.enable_signature );
|
||||||
rh.s.enable_signature = 0x0;
|
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計算
|
// ヘッダCRC計算
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user