10

我正在分析现有的 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 创建的用于安装/旁加载任何 APPX 包的标准 powerscript 文件安装它时当然会出错。

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

我已经对从 Visual Studio 生成的包使用了这个确切的过程。临时密钥是否绑定到特定包或其他东西?我错过了什么?这是signtool中的错误吗?

4

1 回答 1

13

显然,您不能只拿任何临时密钥并用它签署 APPX。特别是证书主题行必须匹配(“发布者名称”)。我不知道确定主题行实际上是什么的更好方法。首先,尝试使用 signtool 并使用任何临时密钥对 APPX 文件进行签名。现在转到事件查看器。然后是应用程序和服务,然后是 Microsoft,然后是 Windows,然后是 AppxPackaging,最后是 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 一起使用的临时密钥!

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

于 2012-09-24T20:12:18.910 回答