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

尝试重新打包APPX程序包时出现SignTool内部错误?

  •  10
  • Earlz  · 技术社区  · 12 年前

    我正在分析现有的Windows应用商店应用程序并对其进行修改,以确保我公司的模糊处理程序能够使用它们。

    不过,我在做那件事时遇到了一些问题。我可以很容易地从商店里获取APPX包(需要Fiddler来获取URL)。然后我可以使用任何解压缩程序将appx解压缩到一个文件夹中。然后我可以获取APPX中的程序集,并稍微修改IL。然后我重新制作并签署包裹:

    makeappx pack /d "mypackage" /p "mypackage.appx"
    signtool sign /fd sha256 /f temporarykey.pfx mypackage.appx
    

    然后我在signtool上得到了一个错误:

    SignTool Error: An unexpected internal error has occured
    Error information: "Error: SignerSign() failed." (-2147024885/0x800700b)
    

    当然,在尝试使用Visual Studio创建的标准powerscript文件安装它时会出现错误,该文件用于安装/侧加载任何APPX包。

    Found package: C:\....mypackage.appx 
    Error: The package is not digitally signed or its signature is corrupted
    

    我对从Visual Studio生成的包使用了这个确切的过程。临时钥匙是否系在特定的包裹上?我错过了什么?这是signtool中的一个错误吗?

    1 回复  |  直到 12 年前
        1
  •  13
  •   Jonathan Hall    6 年前

    显然,你不能只拿任何临时密钥并用它在APPX上签名。特别是证书主题行必须匹配(“发布者名称”)。我不知道有什么更好的方法来确定主题行的实际内容。首先,尝试使用signtool并用任何临时密钥对APPX文件进行签名。现在转到事件查看器。然后是应用程序和服务,然后是Microsoft,然后是Windows,然后是AppxPackageing,最后是Microsoft Windows AppxPackages/Operational。应该有一个错误事件刚刚从该生成中发生。检查一下,应该是这样的

    Error 0x800700B: The app manifest publisher name (CN=random-hex-number) must match the subject name of the signing certificate (CN=MyWrongName)
    

    所以,现在一定要抓住那个随机的十六进制数。这需要是证书的主题行,也是错误的原因。要生成工作证书,请执行以下操作:

    makecert.exe mycert.cer -r -n "CN=random-hex-number" -$ individual  -sv private.pkv -pe -cy end
    pvk2pfx -pvk private.pkv -spc mycert.cer -pfx mytemporarykey.pfx
    

    现在,最后,您应该有一个临时密钥,可以使用signtool!

    希望这个答案能很好地为其他人服务。