4

ユニバーサル Windows アプリは .appx ファイルに含まれています。これは、一連のファイルとメタデータの単純な zip です。ほとんどのメタデータ ファイルは、Microsoft の Web サイトで詳細に文書化されており、簡単に解析および/または再生成できます。ただし、AppxSignature.p7x は謎のままです。

この図から ( source ): ここに画像の説明を入力

AppxSignature.p7x には、AppxBlockMap.xml のハッシュ、コンテンツとディレクトリのハッシュ、および署名が必要です。ただし、AppxSignature.p7x ファイル自体のドキュメントは見つかりません。理想的には、openssl/gnutls などの代替ツールを使用して、この署名を生成および検証したいと考えています。これの実用的な用途は、Linux でアプリを更新して再パッケージ化し、Windows ストア用に .appxupload ファイルを準備することです。

4

2 に答える 2

3

リンク先のブログ投稿で説明されているように、AppxBlockMap.xml ファイルには、パッケージ内のすべてのファイルの暗号化ブロック ハッシュが格納されます。パッケージが Authenticode を使用して署名されている場合、このファイルはデジタル署名で検証および保護されます。

したがって、Windows では次の 2 つのツールがあります。

  • パッケージ (.zip 形式) とブロックマップ ファイルを同時に作成するMakeAppx.exe。これは重要です。ブロック マップの内容は .zip ファイルのビットに密接に対応しているため、このステップでは任意の圧縮ツールを使用することはできません。ZIP API を使用して zip/app パッケージの作成をプログラムする必要があります。
  • 「標準」認証コードを使用して署名をパッケージに追加するSignTool.exe 。

Windows API では、 Packaging APIを使用して MakeAppx と同じことを行うことができ、 SignerSign 関数を使用して SignTool と同じことを行うことができます。

MakeAppx プロセス全体は文書化されていませんが、ブロックマップ スキーマは実際にはここで説明されています:比較的理解しやすいパッケージ ブロック マップ スキーマ リファレンス。

PE ドキュメントの Authenticode 署名は、Windows Authenticode Portable Executable Signature Formatに記載されています。

ただし、これは PE (.dll、.exe など) ファイル専用であり (.CAB ファイルに署名することも可能であることに注意してください)、SignerSign が AppxSignature.p7x をビルドする方法が文書化されているとは思いません。ただし、https ://github.com/facebook/fb-util-for-appx というオープン ソース ツールがあります。このファイルhttps://github.com/facebook/fb-util-for-appx/blob/master/PrivateHeaders/APPX/Sign.hは、署名の入力として何を使用する必要があるかを宣言しています。彼らがその情報をどこで手に入れたのか、私にはわかりません。

于 2016-08-01T06:40:58.547 に答える
0

P7X 形式は、0x504B4358 (「PKCX」) の後に DER 形式の PKCS #7 データが続くだけです。DER は ASN.1 によって記述されます。

于 2021-12-22T15:00:13.260 に答える