Usageの修正、アクセスログの改竄状況を表示する際、位置が改変されたファイルに対しては不正ツール側のログを表示し、不正ツール側のログに対応するアドレスで比較するように修正

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlToolsRED@574 7061adef-622a-194b-ae81-725974e89856
This commit is contained in:
n1481 2011-10-18 03:01:27 +00:00
parent df0322bf3d
commit ef5456c8d6
6 changed files with 47 additions and 28 deletions

View File

@ -953,11 +953,14 @@ u32 Checker::GetOctValue( char* hex_char)
} }
char logBuf[0x46]; char logBuf[0x46];
void Checker::FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp, CARDRomHashContext *context) void Checker::FindAccessLogFile( RomHeader* gHeaderBuf, Entry* mEntry, Entry* entry, FILE* lfp, CARDRomHashContext *context)
{ {
int i = 0; int i = 0;
u8 d1, d2, dm1, dm2; u8 d1, d2, dm1, dm2;
u32 log_start_adr, log_end_adr; u32 log_start_adr, log_end_adr;
u32 m_log_start_adr, m_log_end_adr;
MyFileEntry* gFileEntry;
MyFileEntry* mFileEntry;
while( fread( logBuf, 6, 1, lfp)) while( fread( logBuf, 6, 1, lfp))
{ {
@ -983,10 +986,27 @@ void Checker::FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp,
(GetOctValue(&logBuf[0x0D]) * 0x10000000)); (GetOctValue(&logBuf[0x0D]) * 0x10000000));
printf( "%d 0x%lx - 0x%lx", i, log_start_adr, log_end_adr); printf( "%d 0x%lx - 0x%lx", i, log_start_adr, log_end_adr);
if( entry->FindFileLocation( log_start_adr, log_end_adr)) gFileEntry = entry->FindFileLocation( log_start_adr, log_end_adr);
{ // TODO:genuine側の対応アドレスはgenuineファイルエントリの先頭から計算し直す if( gFileEntry)
{ // 当該ファイルのアクセスログをマジコン側に変換(ファイルの位置が改竄されている場合のため)
mFileEntry = mEntry->FindFileEntry( gFileEntry->full_path_name);
m_log_start_adr = (log_start_adr - gFileEntry->top) + mFileEntry->top;
m_log_end_adr = (log_end_adr - gFileEntry->top) + mFileEntry->top;
// アクセスログが異なる場合はそれを明示
if( (log_start_adr != m_log_start_adr)||(log_end_adr != m_log_end_adr))
{
printf( " -> (0x%lx - 0x%lx)", m_log_start_adr, m_log_end_adr);
}
// ファイル名とファイルとしての改竄有無を表示
if( gFileEntry->modified)
{
printf( " %s(*)", gFileEntry->full_path_name);
}else{
printf( " %s", gFileEntry->full_path_name);
}
// 当該アクセスログにおける改竄の有無を表示
if( Diff( log_start_adr, (log_end_adr - log_start_adr), if( Diff( log_start_adr, (log_end_adr - log_start_adr),
log_start_adr, (log_end_adr - log_start_adr), m_log_start_adr, (m_log_end_adr - m_log_start_adr),
true, PRINT_LEVEL_0)) true, PRINT_LEVEL_0))
{ {
printf( "[data]"); printf( "[data]");

View File

@ -71,7 +71,7 @@ class Checker
u32 GetOctValue( char* hex_char); u32 GetOctValue( char* hex_char);
void FindAccessLogFile( RomHeader* gHeaderBuf, Entry* entry, FILE* lfp, CARDRomHashContext *context); void FindAccessLogFile( RomHeader* gHeaderBuf, Entry* mEntry, Entry* entry, FILE* lfp, CARDRomHashContext *context);
}; };

View File

@ -207,9 +207,9 @@ MyFileEntry* Entry::FindFileLocation( u32 start_adr, u32 end_adr)
retEntry = currentEntry; retEntry = currentEntry;
if( currentEntry->modified) if( currentEntry->modified)
{ // 改竄されているファイルの識別表示 { // 改竄されているファイルの識別表示
printf( " %s(*),", currentEntry->full_path_name); // printf( " %s(*),", currentEntry->full_path_name);
}else{ }else{
printf( " %s,", currentEntry->full_path_name); // printf( " %s,", currentEntry->full_path_name);
} }
} }
currentEntry = (MyFileEntry*)(currentEntry->next); currentEntry = (MyFileEntry*)(currentEntry->next);

View File

@ -139,7 +139,7 @@ int main (int argc, char *argv[])
lfp = fopen( log_fname, "r"); lfp = fopen( log_fname, "r");
printf( "\n\n\nACCESS LOG\n"); printf( "\n\n\nACCESS LOG\n");
checker.FindAccessLogFile( &gHeaderBuf, &gEntry, lfp, &context); checker.FindAccessLogFile( &gHeaderBuf, &mEntry, &gEntry, lfp, &context);
printf( "------------------\n"); printf( "------------------\n");
} }

View File

@ -27,8 +27,7 @@ char* log_fname = NULL;
void SA_Usage( void) void SA_Usage( void)
{ {
fprintf( stderr, "Analyzing Tool\n"); fprintf( stderr, "Analyzing Tool\n");
fprintf( stderr, "Usage: makelst [-o output-file] [--g genuine-srl-file] [--m magicon-srl-file]\n\n"); fprintf( stderr, "Usage: tamperdetector [-o output-file] [--g genuine-srl-file] [--m magicon-srl-file] [--l access-log-file]\n\n");
fprintf( stderr, "Usage: makelst [-o output-file] [--g genuine-srl-file] [--l access-log-file]\n\n");
exit( 1); exit( 1);
} }