diff --git a/build/tools/TamperDetectorForSrl/checker.cpp b/build/tools/TamperDetectorForSrl/checker.cpp index 03354b9..2daeab3 100644 --- a/build/tools/TamperDetectorForSrl/checker.cpp +++ b/build/tools/TamperDetectorForSrl/checker.cpp @@ -845,7 +845,7 @@ void Checker::ExportGenuineBmpFiles( Entry* gEntry, PrintLevel print_enable) } /* ディレクトリとファイルをチェックする */ -void Checker::CheckAllEntries( CARDRomHashContext *context, Entry* gEntry, Entry* mEntry) +void Checker::CheckAllEntries( RomHeader* mHeaderBuf, CARDRomHashContext *context, Entry* gEntry, Entry* mEntry) { { MyDirEntry *currentEntry = gEntry->dirEntry; @@ -897,6 +897,7 @@ void Checker::CheckAllEntries( CARDRomHashContext *context, Entry* gEntry, Entry { currentEntry->modified = true; // 改竄フラグ } + if( mHeaderBuf->platform_code & 0x03) // TWL対応アプリなら { u8 d1, d2; CARD_CheckFileDigest( context, hisEntry, &d1, &d2); @@ -949,7 +950,7 @@ u32 Checker::GetOctValue( char* hex_char) } char logBuf[0x46]; -void Checker::FindAccessLogFile( Entry* entry, FILE* lfp, CARDRomHashContext *context) +void Checker::FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp, CARDRomHashContext *context) { int i = 0; u8 d1, d2; @@ -980,10 +981,22 @@ void Checker::FindAccessLogFile( Entry* entry, FILE* lfp, CARDRomHashContext *co printf( "%d 0x%lx - 0x%lx", i, log_start_adr, log_end_adr); if( entry->FindFileLocation( log_start_adr, log_end_adr)) - { - GetDigestResult( context, log_start_adr, log_end_adr, &d1, &d2); - if( d1) { printf( "[d1:OK]");} else { printf( "[d1:NG]");}; - if( d2) { printf( "[d2:OK]");} else { printf( "[d2:NG]");}; + { // TODO:genuine側の対応アドレスはgenuineファイルエントリの先頭から計算し直す + if( Diff( log_start_adr, (log_end_adr - log_start_adr), + log_start_adr, (log_end_adr - log_start_adr), + true, PRINT_LEVEL_0)) + { + printf( "[data:OK]"); + }else{ + printf( "[data:NG]"); + } + + if( gHeaderBuf->platform_code & 0x03) + { + GetDigestResult( context, log_start_adr, log_end_adr, &d1, &d2); + if( d1) { printf( "[d1:OK]");} else { printf( "[d1:NG]");}; + if( d2) { printf( "[d2:OK]");} else { printf( "[d2:NG]");}; + } } entry->FindAreaLocation( log_start_adr, log_end_adr); printf( "\n"); diff --git a/build/tools/TamperDetectorForSrl/checker.h b/build/tools/TamperDetectorForSrl/checker.h index bed85eb..09ab804 100644 --- a/build/tools/TamperDetectorForSrl/checker.h +++ b/build/tools/TamperDetectorForSrl/checker.h @@ -63,7 +63,7 @@ class Checker bool FindEntry( u32 fnt_offset, u16 entry_id, RomHeader* headerBuf, FILE* fp, Entry* entry, u16 parent_id, PrintLevel print_enable); void FindAllocation( u16 entry_id, RomHeader* headerBuf, FILE* fp, Entry* entry, PrintLevel print_enable); - void CheckAllEntries( CARDRomHashContext *context, Entry* gEntry, Entry* mEntry); + void CheckAllEntries( RomHeader* mHeaderBuf, CARDRomHashContext *context, Entry* gEntry, Entry* mEntry); /* ROM内のBMPファイルを全て切り出して出力する */ void ExportGenuineBmpFiles( Entry* gEntry, PrintLevel print_enable); @@ -71,7 +71,7 @@ class Checker u32 GetOctValue( char* hex_char); - void FindAccessLogFile( Entry* entry, FILE* lfp, CARDRomHashContext *context); + void FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp, CARDRomHashContext *context); }; diff --git a/build/tools/TamperDetectorForSrl/main.cpp b/build/tools/TamperDetectorForSrl/main.cpp index d003aee..655e5ff 100644 --- a/build/tools/TamperDetectorForSrl/main.cpp +++ b/build/tools/TamperDetectorForSrl/main.cpp @@ -92,6 +92,7 @@ int main (int argc, char *argv[]) checker.LoadHeader( &gHeaderBuf, &mHeaderBuf); // ダイジェスト検証(digest1, digest2) + if( gHeaderBuf.platform_code & 0x03) { CARDi_Init( &context, &mHeaderBuf); CARD_DiffDigest( &context, &gHeaderBuf, gfp, &mHeaderBuf, mfp); @@ -117,7 +118,7 @@ int main (int argc, char *argv[]) { mEntry.FollowParent(); mEntry.AutoSetFullPath(); - checker.CheckAllEntries( &context, &gEntry, &mEntry); + checker.CheckAllEntries( &mHeaderBuf, &context, &gEntry, &mEntry); } checker.ExportGenuineBmpFiles( &gEntry, PRINT_LEVEL_0); /* @@ -138,7 +139,7 @@ int main (int argc, char *argv[]) lfp = fopen( log_fname, "r"); printf( "\n\n\nACCESS LOG\n"); - checker.FindAccessLogFile( &gEntry, lfp, &context); + checker.FindAccessLogFile( &gHeaderBuf, &gEntry, lfp, &context); printf( "------------------\n"); }