小编Osb*_*ock的帖子

如何使用PFX(Bouncy Castle或其他)以编程方式对可执行文件进行代码签名

我正在尝试确定使用Bouncy Castle,托管代码或来自C#的非托管代码对可执行文件进行代码签名的最佳方法.由于CAPICOM现已弃用,我想mssign32.dll中的一个SignerSign方法是最好的方法,如果它需要不受管理.

这个答案(/sf/answers/276656481/)似乎很接近,但它产生一个.p7m文件,虽然看起来是正确的大小,但是无法正常运行(显然在运行之前重命名为.exe) ).

问题提供者在这里提供的解决方案(用于替换signtool.exe的API /库)看起来很有前途和管理,但就像Tom Canham在下面的评论中提到的那样,"这似乎是用于签署封装消息.Authenticode - 代码 - 签署signtool所做的 - 是不同的,这就是为什么签署后EXE不会运行的原因." 当我使用提问者的解决方案或之前引用的Bouncy Castle解决方案签名时,我收到了Tom所做的相同错误.

我还没有尝试过唯一的选择(/sf/answers/450090231/),虽然看起来很有希望,但我并不认为它使用"authenticode"代码签名而不是"封闭的消息"代码签名.这个答案也有不使用现在已弃用的CAPICOM互操作方法的好处,所以我想我今天将使用这种方法报告我的结果.如果这是最好的选择,那么有人可以说出从mssign32.dll导出的SignerSign,SignerSignExSignerSignEx2函数之间的区别吗?我已经读过SignerSignEx2应该与Windows 8及更高版本一起使用...

长话短说,我想复制signtool.exe签署.exe文件,.pfx文件和密码的可执行文件的能力,如下所示:

signtool sign /f cert.pfx /p password application.exe
Run Code Online (Sandbox Code Playgroud)

我正在寻找使用authenticode签名以编程方式对可执行文件进行代码签名(PE,如果它很重要)的最佳选项,如果可能的话,我宁愿使用充气城堡或托管代码,尽管我会使用非托管的东西,如果它工作但不是目前已弃用.

谢谢!

.net c# bouncycastle capicom

12
推荐指数
1
解决办法
3377
查看次数

标签 统计

.net ×1

bouncycastle ×1

c# ×1

capicom ×1