看起来TrueCrypt(TC)引导加载程序很大,因此在MBR之后但在第一个分区之前分割MBR(446字节)和32KB空洞。并且TrueCrypt似乎是硬编码在扇区0之后发现32KB漏洞(即纯MBR方案)。因此,当我们有一个GPT(它占据前34个扇区/ 17407个字节)而不是MBR时,这个32KB的空洞应该更远的滑块 - 它不是。
我认为解决方案是“直截了当”的,而不是仅仅在MBR之后寻找32KB可用空间(对于剩余的TC引导加载程序),它也应该灵活地在GPT之后寻找32 KB。简而言之
// made up variable names
if (MBR)
{
startOffsetTCBootloader = sizeOfMBR;
}
else if (GPT)
{
startOffsetTCBootloader = sizeOfGPT;
}
// plug back startOffsetTCBootloader into other calcs/jumps
虽然我在程序集和引导加载程序中有背景,但它们都不在x86程序集中。所以我需要时间来解决这个问题。另外我还忙于其他一些项目,所以很遗憾没有选择宠物项目的奢侈品(现在)。所以这是对我可能处于更有利位置的开发人员的帮助请求:)
所以:有没有人知道如何修改它?最好还是回到核心存储库,但由于主分支似乎没有响应,因此分叉并不是一个想法。
仅供参考,我确实写过TC开发人员,但我认为我的电子邮件陷入了黑洞......所以必须自己解决。 GPT磁盘是未来的,所以这个修复程序应该有很长的使用时间和许多其他用例。
有用的链接: