【问题标题】:How can I find the public key of any PE file?如何找到任何 PE 文件的公钥?
【发布时间】:2013-12-17 02:53:34
【问题描述】:

我想在 Java 中验证任何 PE 文件(exe、dll)的数字签名。所以,我需要找到这些文件的公钥和签名。你能帮忙吗?!

【问题讨论】:

  • 非常感谢@psxls!

标签: java android portable-executable


【解决方案1】:

有一个很好的讨论here,如果你有PE文件格式的背景会更容易理解(有一个很好的介绍here),但总结一下:

  • 在文件头的偏移 24 处有一个指向 PE 头的指针
  • PE 标头长 116 字节,紧随其后的是数据目录
  • 在数据目录的偏移量 32 处有一个指向安全数据开头的指针
  • 安全数据是一个资源对象数组,每个资源对象都包含一个 ASN.1 编码的证书
  • 资源对象由长度字段(4字节)、版本号(2字节)、证书类型字段(2字节)和证书的原始数据组成

【讨论】:

  • 谢谢@Jules。你能帮我回答这个问题吗:“我可以使用java来验证PE文件的数字签名证书吗?” ?
  • 应该是可以的,是的。这将涉及比我迄今为止所做的更深入地挖掘规范,以便确定签名中包含什么以及不包含什么,但弄清楚如何做到这一点应该不会太难。完成后,您只需通过适当的哈希实现推送相关部分,并使用标准 javax.security 接口检查签名(如下所述:docs.oracle.com/javase/tutorial/security/apisign/versig.html
  • 您可能会发现此问题中的其他信息很有帮助:stackoverflow.com/questions/6513752/…
猜你喜欢
  • 2017-12-25
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 2020-11-27
  • 2016-11-18
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
相关资源
最近更新 更多