|

- 积分
- 513
- 金币
- 889 个
- 阅读权限
- 15
- 在线时间
- 50 小时
- 注册时间
- 2008-5-11
- 最后登录
- 2008-10-7
|
1#
发表于 2008-7-25 13:02
| 只看该作者
64位vista数字签名深谈!!!!!!!!!!!
先介绍一下什么是驱动数字签名!
Windows Vista X64 内核驱动数字签名问题解释在 Windows Vista x64 版本里面,微软要求所有的内核驱动都必须有合法的数字签名,否则拒绝加载。这个限制非常有效的抑制了利用驱动技术进行一些破坏的计算机恶意软件或者病毒,但是也给一些个人软件开发者带来的限制,因为这些个人软件开发者没法拥有合法的数字签名(需要购买,而且购买的时候需要填写合法的公司信息和公司地址等信息)。
当你拥有了一个有合法的数字签名认证机构(如:Verisign)颁发的私钥以后,怎么给驱动程序文件签名呢?
Windows Vista x64 对于内核驱动数字签名过程要求采用一种被称为cross-certificate 的方式进行。关于为什么要求使用 cross-certificate 的方式进行,请参考《Digital Signatures for Kernel Modules on x64-based Systems Running Windows Vista》,这里不再多说。
在64位VISTA里头,没有经过数字签名的驱动是装不上的。
·下名的一段破解代码!·
把Vista64 BootMgr的修改过程写出来,
按照tiamo的说明,把BootMgr的PE部分分离出来,保存成一个新文件:BootMgr64.dll,用ida打开,先看了一下,是32位的代码。
l 首先跳过自身检测,原本的代码看起来像这样:
call BlImgQueryCodeIntegrityBootOptions(x,x,x)
cmp byte ptr [esp+70h+var_64], bl
jnz short loc_4011E7
call BmFwVerifySelfIntegrity(x)
16进制搜索38 5C 24 0C 75 11 E8 E9 2F 00 00 3B C3 89 44 24,其中75 11 对应jnz short loc_4011E7,75改成EB,就变成了非条件跳转:jmp short loc_4011E7。
l 去掉签名判断
Tiamo修改第六个参数的方法,相关代码如下:
or eax, 41h
push edi
mov [ebp+var_4], eax
...
or [ebp+var_4], 2
push [ebp+var_4] ;这里是第六个参数。
...
call BlImgLoadPEImageEx(x,x,x,x,x,x,x,x,x,x)
16进制搜索5B C3 8B FF 55 8B EC 83 EC 28 53 83 C8 41 57 89,其中83 C8 41对应or eax, 41h,83 C8改成 33 C0(xor eax, eax),还多一个字节,用90(nop)填充。
另外如果第五个参数非0,BlImgLoadPEImageEx也会判断签名,干脆修改BlImgLoadPEImageEx内部。
其实BlImgLoadPEImageEx根据对第五、六个参数的判断,设置标志,对加载的文件要不要进行签名判断,都根据这个标志,相关代码如下:
mov eax, [ebp+arg_14] ;这里是第六个参数。
and eax, 10h
jnz short loc_41E45F
cmp [ebp+arg_10], ebx ;这里是第五个参数。此时ebx=0。
jz short loc_41E463
loc_41E45F:
mov [ebp+var_1], 1 ;根据这个标志决定是否判断签名。
16进制搜索75 05 39 5D 18 74 04 C6 45 FF 01 8B 75 0C 6A 01,其中C6 45 FF 01对应mov [ebp+var_1], 1,01改成00,这样var_1标志始终为0,签名就不判断了。
l 因为每次修改Winload.exe,都要重新CheckSum一下,所以把BootMgr64.dll中CheckSum部分也去掉:
BlUtlCheckSum实现文件的CheckSum,看个几个对它的调用,发现BlUtlCheckSum返回byte值,0表示成功。尝试在BlUtlCheckSum返回前,将eax置0,很遗憾,不好使,Vista显示status:0xc0000221。于是查找所有的0xc0000221,分别改成不同的值,重启Vista,这时status变成修改后的其中一个值,算是找到地方了,相关代码如下:
cmp eax, [ebx+58h]
jz short loc_41E8D1
mov [ebp+arg_0], 0C0000221h
16进制搜索3B 43 58 74 0C C7 45 08 21 02 00 C0 E9 31 01 00,其中74 0C对应jz short loc_41E8D1,74改成EB。
全部修改完成,找个PE工具重新CheckSum一下BootMgr64.dll,加上原来的com头,重新组合成BootMgr。
VeriSign 代码签名证书
Linchpin实验室推出的Atsiv工具能够在Vista上加载未获得签名的遗留驱动程序,微软此举防止了类似事件的发生,它表示这个Atsiv工具与其内核模式代码签名(KMCS)策略相冲突。
64位数字驱动破解软件
| 这个工具的名字是VistaBootPro,这是一个免费软件。
|
|
另有一个ATSIV工具
但是这个工具会查出ATSIV病毒。所以没上传。可以自行查找一下在下载。
这个病毒好像是自身软件病毒。应不会有问题的。在大型官网上有很多下载。
提供的这个是64位的。第一版的。而不是sp1的。
[ 本帖最后由 liuyong20040607 于 2008-7-25 13:06 编辑 ] |
附件: 您所在的用户组无法下载或查看附件
-
1
评分次数
-
|