10

私は既存のWindowsStoreアプリケーションを分析し、会社の難読化ツールがそれらで動作することを確認するためにそれらを変更しています。

しかし、私はそれを行うのに少し問題に遭遇しました。ストアからAPPXパッケージを簡単に入手できます(URLを取得するにはFiddlerが必要です)。その後、任意の解凍プログラムを使用して、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)

そしてもちろん、APPXパッケージをインストール/サイドローディングするためにVisual Studioによって作成された標準の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)

ですから、そのランダムな16進数に固執するようにしてください。それが証明書の件名である必要があり、エラーの原因です。有効な証明書を生成するには:

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 に答える