☆ BOOTKEY/SYSKEY https://scz.617.cn/windows/200401131357.txt -------------------------------------------------------------------------- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa SecureBoot REG_DWORD 0x00000001(1) stores a key as part of the operating system, and no interaction is required during system start 0x00000002(2) requires a password to be entered during system start 0x00000003(3) requires a floppy disk to be inserted during system start -------------------------------------------------------------------------- SecureBoot缺省值为1,也就是说BOOTKEY变相保存在注册表中。我们只修理缺省情形。 关于BOOTKEY/SYSKEY,最完备的(中、英文)公开文档源自flashsky([11]),附有部分 自然语言描述以及C代码。 参考krok的描述有助于程序员立即理清思路([15]),不要为俄文所吓倒,我们只需看 看夹杂其中的英文以及C代码即可。 -------------------------------------------------------------------------- Class A : C5 1F 3D DE : ("c51f3dde") : (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\JD) Class B : 3F 88 75 0D : ("3f88750d") : (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Skew1) Class C : EE F2 5F C1 : ("eef25fc1") : (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\GBG) Class D : 31 AF 75 4B : ("31af754b") : (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Data) Class : C5 1F 3D DE 3F 88 75 0D EE F2 5F C1 31 AF 75 4B MIX : 08 0A 03 07 02 01 09 0F 00 05 0D 04 0B 06 0C 0E BOOTKEY/SYSKEY : EE 88 3F 3D C1 F2 AF DE C5 75 1F 31 75 5F 4B 0D -------------------------------------------------------------------------- 用RegQueryInfoKey()查询Class信息,这是一个ASCIZ串,形如"c51f3dde",将之按 big-endian序转换成字节流"C5 1F 3D DE"。最终形成16字节长的Class信息。 MIX是固定的索引序列,用法如下: -------------------------------------------------------------------------- for ( i = 0; i < 16; i++ ) { BOOTKEY[ MIX[ i ] ] = Class[i]; } /* end of for */ -------------------------------------------------------------------------- 我没有跟踪BOOTKEY的生成过程,仅仅验证了一下flashsky、krok的结论,荣誉归于 这二者。 ☆ 参考资源 [11] SAM的散列存储加密解密算法以及SYSKEY的计算 - flashsky[2003-06-04] http://www.xfocus.net/releases/200306/a550.html [15] Шифрование паролей в Windows 2000(俄文) - krok[2003-06-19] http://www.void.ru/content/1090 http://www.void.ru/?do=printable&id=1090