- UID
- 1
- 精华
- 积分
- 76361
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
第一次折腾:尝试把GPT磁盘变成同时支持UEFI引导和MBR引导的方式。。也许是想太多
经过观察我发现GPT的硬盘,第一个扇区本来应该是MBR指令的地方,全是0x00,只有在分区表的第一个表项有个数值,然后最后是0xAA55。于是我干脆把之前从自己旧系统里提取的MBR指令(446字节)全部覆盖到这个GPT硬盘上对应的位置。开机的时候,设置BIOS先进行Legacy引导。结果屏幕上显示“找不到操作系统”(Missing operating system)。。。于是我又作死,追加分区表中新的表项:C盘多大、D盘多大等如实填写,然后设置C盘为活动分区。之后能引导了!但是进不了Windows桌面,会发生蓝屏。大概意思是磁盘分区表错误。也就是说MBR引导代码能识别并且引导,而Windows在加载的时候无法识别这种“杂交”的硬盘分区。之后我还尝试过Linux,显示“你的硬盘可能是杂交硬盘。”并且能成功引导。
最后我还是把硬盘拆下来在别的电脑上将主引导扇区的MBR指令清空,然后恢复分区表。。。GPT硬盘的主引导扇区分区表其实只有一个表项,这个表项是把整个硬盘当作一个分区。
第二次折腾是突发奇想的。。自己弄了个测试签名,给自己的程序进行数字签名。然后我用PrintPE、WinHex等软件观察这些被签名的程序,发现它们也就是在文件的末尾追加了数字签名信息。同时PE可选头中指出这个数字签名信息的位置。这样的话,如果我直接把微软签名的某程序的尾部的数字签名部分直接复制下来,然后弄到我的程序后面会怎样?
于是我先用makecert制造了自己的数字签名。再用signtool给我的一个程序签上自己的名。之后再用WinHex打开这个被自己签名了的软件,在文件末尾找到自己的签名,将其删除,然后把某个随便拽来的微软文件末尾的签名复制过来。程序能正常运行。但是你在图标上点右键看属性是看不到数字签名的!也就是这个微软的签名并没有生效。它应该用了MD5或SHA1值确定整个文件没有被篡改。 |
|