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

Ear*_*rlz 10 package signtool windows-8 windows-runtime windows-store

我正在分析现有的Windows应用商店应用程序并对其进行修改,以确保我公司的混淆器可以与它们配合使用.

尽管如此,我遇到了一些问题.我可以轻松地从商店中获取APPX包(要求Fiddler获取URL).然后我可以使用任何解压缩程序将appx解压缩到一个文件夹.然后,我可以在APPX中获取程序集并稍微修改IL.然后我重新制作并签署包裹:

makeappx pack /d "mypackage" /p "mypackage.appx"
signtool sign /fd sha256 /f temporarykey.pfx mypackage.appx
Run Code Online (Sandbox Code Playgroud)

然后,我在signtool中遇到错误:

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

当然,当尝试使用Visual Studio创建的标准powerscript文件安装它来安装/侧载任何APPX包时,会遇到错误.

Found package: C:\....mypackage.appx 
Error: The package is not digitally signed or its signature is corrupted
Run Code Online (Sandbox Code Playgroud)

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

Ear*_*rlz 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)
Run Code Online (Sandbox Code Playgroud)

所以,现在确保挂起那个随机十六进制数.这需要是证书的主题行,并且是错误的原因.要生成工作证书:

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
Run Code Online (Sandbox Code Playgroud)

最后,你应该有一个可以与signtool一起使用的临时密钥!

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