我正在分析现有的Windows Store应用程序并对其进行修改,以确保我公司的混淆器可以与它们一起使用。

我在这样做时遇到了一些问题。我可以很容易地从商店中获取一个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中的错误吗?

最佳答案

显然,您不能随便拿一个临时密钥并用它签署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一起使用的临时密钥!

希望这个答案对其他人有好处。

08-06 11:18