Java 如何找到任何PE文件的公钥?

Java 如何找到任何PE文件的公钥?,java,android,portable-executable,Java,Android,Portable Executable,我想验证Java中任何PE文件(exe、dll)的数字签名。所以,我需要找到这些文件的公钥和签名。你能帮忙吗 这里有一个很好的讨论,如果你有PE文件格式的背景(有一个很好的介绍),这将更容易理解,但要总结: 在文件头的偏移量24处有一个指向PE头的指针 PE头的长度为116字节,紧接着是数据目录 在数据目录的偏移量32处有一个指向安全数据开始的指针 安全数据是一个资源对象数组,每个资源对象都包含一个ASN.1编码的证书 资源对象由长度字段(4字节)、版本号(2字节)、证书类型字段(2字节)以及

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

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

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

谢谢@Jules。你能帮我回答这个问题吗:“我能用java验证PE文件的数字签名证书吗?”?这应该是可能的,是的。这将涉及到比我到目前为止所做的更深入地挖掘规范,以确定签名中包含哪些内容,哪些内容不包含,但要想知道如何做到这一点应该不会太困难。完成后,您只需通过适当的哈希实现推动相关部分,并使用标准javax.security接口检查签名(如下所述:),您可能会发现此问题中的其他信息很有用:非常感谢@psxls!