我正在分析现有的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中的错误吗?
答案 0 :(得分: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的临时密钥!
希望这些答案能很好地为其他人服务。