能力值:
( LV2,RANK:10 )
2 楼
算了,暂时找不到解决办法,考虑的项目的进度,目前采用WinVerifyTrust。同时对WinVerifyTrust这个函数的完整性进行检测, 检测是否被Hook
能力值:
( LV2,RANK:10 )
3 楼
第三方签名,和微软的签名,这个api是不是都可以检测到?
能力值:
( LV2,RANK:10 )
4 楼
这个函数只能监测带有数字签名区的文件的签名,而实际上系统的dll很多都没有签名区,但也是在外部签名了的
能力值:
( LV2,RANK:10 )
5 楼
是的, 我手动更改了某公司的一个文件, WinVerifyTrust就验证数字签名被破坏了。
能力值:
( LV2,RANK:10 )
6 楼
对啊, 系统文件没有数字签名区,但是确实有签名的内容,用WinVerifyTrust可以验证,但是CryptQueryObject无法获取到证书的内容,不知道前辈是否有什么方法,可以获取到签名的内容(我要把他显示出来在界面上),比如发布人,时间戳等,我能读取到PE文件中签名的块,但是不知道里面具体结构怎么解析,PKCS#7的资料太少,看的不是很懂
能力值:
( LV2,RANK:10 )
7 楼
对啊, 系统文件没有数字签名区,但是确实有签名的内容,用WinVerifyTrust可以验证,但是CryptQueryObject无法获取到证书的内容,不知道前辈是否有什么方法,可以获取到签名的内容(我要把他显示出来在界面上),比如发布人,时间戳等,我能读取到PE文件中签名的块,但是不知道里面具体结构怎么解析,对应的数据结构是什么,PKCS#7的资料太少,看的不是很懂
能力值:
( LV3,RANK:20 )
8 楼
PE结构有个参数表示参数表示了该PE的签名在PE的偏移和签名的大小,如果为0说明不存在签名。
签名的流程其实很简单,其实就是计算HASH(有MD5和SHA1等算法),对于驱动还必须计算校验和。如果PE的体积不为16整除,后面还需要加0填充。
InitializeChecksum(FChecksum);
InitializeMD5(MD5);
InitializeSHA1(SHA1);
......
if (wMagic = $020B) then //这个是PE64文件,结构不一样
begin
//PE32+ . Optional Variable 16
//, SizeOfStackReserve, SizeOfStackCommit,
//SizeOfHeapReserve SizeOfHeapCommit DWORD,
//64 .
FDelta64bit := $10;
end;
FStream.Seek(StreamPos, soFromBeginning);
。。。。。。。。。
计算完毕后,用PKCS7格式封装,然后一般是放在PE尾部。最后修改PE结构,指明该签名的文件偏移和大小。
校验也是一样的。
而对于交叉签名(也就是WIN64的驱动必须),实际上也是一样的,只不过是一个PE存在多个证书而已。
时间戳其实也是一样,就是一个证书。递交HASH后,返回的其实就是PKCS格式的了。
大概应该如此,很多年前玩过一次,不大记得了。可惜代码是DELPHI的,对你没有用处。
能力值:
( LV3,RANK:20 )
9 楼
能力值:
( LV2,RANK:10 )
10 楼
能力值:
( LV3,RANK:20 )
11 楼
玩具而已。。。很久以前学习证书时搞来玩的,就不献丑了。
能力值:
( LV2,RANK:10 )
12 楼
鸟神,分享一下嘛
能力值:
( LV2,RANK:10 )
13 楼
能力值:
( LV3,RANK:30 )
14 楼
verisign class 6这个根证书表示没见过,自己加的吧 ~
能力值:
( LV2,RANK:10 )
15 楼
能力值:
( LV2,RANK:10 )
16 楼
我一开始也被那帖唬住了。仔细看才发现原来根证书是自己添加的。
能力值:
( LV3,RANK:20 )
17 楼
其实就是自定义签名了。
根证书其实也就存储在操作系统,直接修改那数据库就好了。当然,系统是允许两个根证书的名称是一样的,但是指纹必须不一样,否则新的会覆盖旧的。所以verisign class 6,1,2,3,其实没有区别的。看你想弄个什么名称而已。
只不过是,这些完全不依赖系统的什么PKI函数或OPENSSL,而是直接writefile,readfile而已。
能力值:
( LV2,RANK:10 )
18 楼
能过64位系统的签名验证吗?
能力值:
( LV2,RANK:10 )
19 楼
能力值:
( LV2,RANK:10 )
20 楼
鸟神大佬把工具代码发出来啊,别自己用啊
能力值:
( LV2,RANK:10 )
21 楼
bestbird
玩具而已。。。很久以前学习证书时搞来玩的,就不献丑了。
鸟神大佬把工具代码发出来啊,别自己用啊