From d36d59ffa3f1cd9dae51203fff480cc0cdfb711d Mon Sep 17 00:00:00 2001 From: n1481 Date: Tue, 21 Feb 2012 01:55:32 +0000 Subject: [PATCH] =?UTF-8?q?VCK=20=E3=81=8A=E3=82=88=E3=81=B3=20VCW=20?= =?UTF-8?q?=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB=E3=81=AE=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=A2=E3=83=83=E3=83=97=E3=83=87=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E6=A4=9C=E8=A8=BC=E3=81=AB=E3=81=8A=E3=81=91=E3=82=8B=E5=88=9D?= =?UTF-8?q?=E5=9B=9E=E3=83=AA=E3=83=BC=E3=83=89=E6=99=82=E3=81=AE=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=81=A7FATAL=E3=81=AB=E3=81=AA=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4=20=EF=BC=88?= =?UTF-8?q?=E6=8E=A5=E8=A7=A6=E4=B8=8D=E8=89=AF=E6=99=82=E3=80=81=E5=88=9D?= =?UTF-8?q?=E5=9B=9E=E3=83=AA=E3=83=BC=E3=83=89=E6=99=82=E3=81=AEWIP?= =?UTF-8?q?=E3=83=9D=E3=83=BC=E3=83=AA=E3=83=B3=E3=82=B0=E3=81=A7=E3=82=BF?= =?UTF-8?q?=E3=82=A4=E3=83=A0=E3=82=A2=E3=82=A6=E3=83=88=E3=81=AB=E3=81=AA?= =?UTF-8?q?=E3=82=8B=EF=BC=89?= 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@3046 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../ARM9/src/SaveDataChecker/lgy_VCK.c | 24 ++++++++++++------ .../ARM9/src/SaveDataChecker/lgy_VCW.c | 25 ++++++++++++------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/SaveDataChecker/lgy_VCK.c b/build/libraries_sysmenu/sysmenu/ARM9/src/SaveDataChecker/lgy_VCK.c index b0c5e4ef..754441ef 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/SaveDataChecker/lgy_VCK.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/SaveDataChecker/lgy_VCK.c @@ -76,7 +76,13 @@ BOOL checkVCK( TitleProperty* tp) OS_TPrintf("verifyBuffer:0x%x\n", verify_data); InitializeBackup(); - readEEPROM( 0, (u32*)data, VCK_BACKUP_READ_SIZE);//sizeof(VCK_SlotHeader) + sizeof(VCK_ProfileSlotBody)が32Bytesの倍数でないため + if( !readEEPROM( 0, (u32*)data, VCK_BACKUP_READ_SIZE))//sizeof(VCK_SlotHeader) + sizeof(VCK_ProfileSlotBody)が32Bytesの倍数でないため + { + OS_TPrintf("launch NG.\n"); + FinalizeBackup(); + MI_FreeWramSlot( MI_WRAM_C, WRAM_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM9); + return FALSE; + } header = (VCK_SlotHeader*)data; body = (VCK_ProfileSlotBody*)((u8*)data + sizeof(VCK_SlotHeader)); body_u8 = (u8*)body; @@ -102,14 +108,16 @@ BOOL checkVCK( TitleProperty* tp) // checksumがBになるようにランダムな1箇所へ書き込み { - MATH_CalcSHA1( calculatedSha1, (const void*)data, sizeof(VCK_ProfileSlotBody)); - } - rseed = (u32)(OS_GetTick()) + *(u32*)(calculatedSha1); - MATH_InitRand16( &rc16, rseed); - for( i=0; ibody, sizeof(VCW_BodyForCheck)); - } - rseed = (u32)(OS_GetTick()) + *(u32*)(calculatedSha1); - MATH_InitRand16( &rc16, rseed); - for( i=0; ibody, sizeof(VCW_BodyForCheck)); + + rseed = (u32)(OS_GetTick()) + *(u32*)(calculatedSha1); + MATH_InitRand16( &rc16, rseed); + for( i=0; iB_checksum = VCW_GetChecksum( vcw); // 書き込んだ後の checksum が、S_checksum でも マジコンヘッダのchecksum にもならないようにする