From 63d1dbcaa7ef63fb779751241ee974a4dfc2be54 Mon Sep 17 00:00:00 2001 From: nakasima Date: Mon, 28 Jul 2008 00:47:04 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9C=AC=E4=BD=93ID=E6=AF=8E=E3=81=AB=E3=82=B2?= =?UTF-8?q?=E3=83=BC=E3=83=A0=E3=82=AB=E3=83=BC=E3=83=89=E3=81=AE=E3=82=B9?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=83=B3=E3=83=96=E3=83=AB=E3=81=8C=E5=A4=89?= =?UTF-8?q?=E5=8C=96=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=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@2004 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c index 115a7986..df6672b8 100644 --- a/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c +++ b/build/libraries_sysmenu/hotsw/ARM7/src/hotsw.c @@ -1214,12 +1214,20 @@ static void GenVA_VB_VD(void) SYSM_work* sw = SYSMi_GetWork(); u32 dummy = 0; MATHRandContext32 rnd; + u64 fuse64 = SCFG_ReadFuseData(); + u32 fuse32[2]; + + // 念のためeFuseIDを推測できなくする + fuse32[0] = ((u32*)&fuse64)[0]; + fuse32[1] = ((u32*)&fuse64)[1]; + EncryptByBlowfish(&s_cbData.keyTable, &fuse32[0], &fuse32[1]); // 乱数を初期化 - // チック&RTC初回ロード値&ゲームコードを種とする。 + // チック&RTC初回ロード値&ゲームコード&eFuseIDを種とする。 // (起動する度に変化するパラメータと組み合わせる。 // Vカウンタは2130サイクル変化しないので固定値になりやすい。) - MATH_InitRand32(&rnd, OS_GetTick() ^ sw->Rtc1stData.words[0] ^ sw->Rtc1stData.words[1] ^ *(u32*)(s_cbData.pBootSegBuf->rh.s.game_code)); + // 起動毎、ゲームカード毎、本体毎にスクランブルが変化することになる。 + MATH_InitRand32(&rnd, OS_GetTick() ^ sw->Rtc1stData.words[0] ^ sw->Rtc1stData.words[1] ^ *(u32*)(s_cbData.pBootSegBuf->rh.s.game_code) ^ fuse32[0] ^ fuse32[1]); s_cbData.vae = MATH_Rand32(&rnd, 0); s_cbData.vbi = MATH_Rand32(&rnd, 0);