代码之家  ›  专栏  ›  技术社区  ›  tree1234

对可执行文件进行代码设计,并允许修改某些字节

  •  0
  • tree1234  · 技术社区  · 3 年前

    我用 signtool.exe 共同设计窗户 executable .

    该工具的哪些选项可用于定义 散列计算中应该省略几个字节 ,从而允许数字签名的可执行文件可以在以后修改8或16个字节?

    Mozilla已经使用了这种技术(他们的.exe安装程序对于每次下载都是不同的,但具有相同的数字签名),请参阅 How can a .exe be modified and still keep a valid digital signature? .

    WinAPI函数 ImageGetDigestStream 有选择权 DigestLevel 从散列计算中排除资源信息,但实际使用时如何使用此选项 signtool。exe 还是类似的工具?

    0 回复  |  直到 3 年前
        1
  •  0
  •   Simon Mourier    3 年前

    迪迪埃·史蒂文斯在这里的一篇文章中对此进行了解释: It's in the signature 他还提供了一种工具“ disitool “操纵签名。

    以下是使用 Authenticode ,并在不破坏签名的情况下向其添加一些数据:

    A) 创建代码签名证书(需要输入密码):

    MakeCert /n "CN=MyOrg" /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /sv MyOrg.pvk MyOrg.cer
    

    注:1.3.6.1.5.5.7.3.3是szOID_PKIX_KP_代码_签名,1.3.6.1.4.1.311.10.3.13是szOID_KP_终身签名。这将创建一个私钥文件和一个证书文件。

    B) 将证书添加到存储(需要管理员权限,可以是其他存储):

    Certutil -addStore TrustedPeople MyOrg.cer
    

    C) 创建要签名的Pfx文件:

    Pvk2Pfx /pvk MyOrg.pvk /pi [Password goes here] /spc MyOrg.cer /pfx MyOrg.pfx
    

    D) 签署你的文件:

    SignTool.exe sign /fd SHA256 /v /a /f MyOrg.pfx /p [Password goes here] MyFile.exe
    

    在这一点上,我的文件。exe是使用Authenticode签名的:

    enter image description here

    E) 创建一些数据。txt文件。我创建了一个包含“[Kilroy在这里!]”的文本

    F) 快跑 二烯雌酚 :

    python.exe disitool.py inject --paddata MyFile.exe data.txt MyFile2.exe
    

    这是结果,MyFile2。exe在不重新指定文件的情况下仍然有效:

    enter image description here

    当你能看见的时候 data.txt 结尾处添加的内容:

    enter image description here

    从原始文件的结尾:

    enter image description here

    推荐文章