Maple

Maple

Open source, open mind

使用 Win32-app-isolation 封印国产软件

すべてのオペレーティングシステムは、プログラムがシステムリソースを正常に使用し、他のプログラムの正常な動作を妨げることなく権限を乱用しないようにする必要があります。Windows は、権限管理が非常に混乱しているシステムであり、アプリケーションのインストールとパッケージング方法には非常に高い自由度があります。そのため、いくつかの悪意のあるアプリケーションは、ユーザーが気付かないうちにレジストリを変更したり、未知のサービスや起動項目をインストールしたり、さらにはディスク全体のデータをこっそり読み取ったりすることができます。

Windows 11 Build 2023 では、Microsoft は Win32 アプリの分離というアプリの分離ソリューションを導入しました。このソリューションは、コンテナの実行に似ており、変換後のアプリの効率的な実行を保証するだけでなく、権限管理を簡素化します。Microsoft のツールを使用して、WeChat と TIM の exe インストーラーパッケージをサンドボックス機能を備えた MSIX 形式のインストーラーパッケージに変換することに成功しました。

ステップ 0:依存関係#

  • Windows 11
  • MSIX Packaging Tool
  • 公式ウェブサイトからダウンロードしたソフトウェアインストーラーパッケージ WeChat
  • 事前にコンピューターから WeChat をアンインストールしてください

ステップ 1:変換#

MSIX Packaging Tool を開き、ホームページで最初のオプション「アプリケーションパッケージ」を選択します。"環境の選択" ステップでは、"このコンピューター上でプログラムパッケージを作成する" を選択します。"コンピューターの準備" ステップでは、指示に従って操作します。

"インストーラーの選択" ステップでは、WeChat のインストーラーパッケージファイルを選択します。インストールには署名が必要ですが、署名には次のステップで必要なプログラムパッケージの情報が必要ですので、ここではスキップします。

"プログラムパッケージの情報" ステップでは、プログラムパッケージの関連情報(プログラムパッケージ名、表示名、発行者名など)を指定します。exe ファイルの右クリックメニューから直接コピーすることができます。例:[WeChat、WeChat、CN=Tencent、Tencent、3.9.4.0]

次へをクリックすると、Packager が exe ファイルを実行し、通常のインストール操作を行い、プログラムのインストールパスを自動的に記録します。インストールが完了したら、確認のポップアップが表示されます。通常の手順に従ってインストールしてください。私は WeChat をインストールする際に問題はありませんでしたが、TIM をインストールした後、Packager がポップアップウィンドウを表示せずに終了しないことに気付きました。つまり、TIM のインストールプロセスがまだ終了していないということです。この場合、タスクマネージャーを開いて TIM プロセスを強制終了すると、Packager がエラーを報告します。最終的に、Packager の再起動オプションをクリックすることで、プロセスを安全に終了することができることがわかりました。

最後に、右下の「作成」をクリックすると、拡張子が.msix のソフトウェアデプロイメントパッケージが作成されます。これで、第 1 ステップの操作は完了です。

ステップ 2:アプリのアンインストール#

"設定 - アプリ" で、先ほどインストールした WeChat と TIM をアンインストールします。完了したら、TIM のアンインストールプロセスを手動で終了することを忘れないでください。

ステップ 3:証明書の生成#

ソフトウェアパッケージに署名しない場合、.msix アプリはインストールできません。ソフトウェアパッケージの署名メカニズムは、HTTPS 証明書に似ています。開発者は、プログラムのハッシュを秘密鍵で署名し、ユーザーは対応する公開鍵でハッシュを復号し、現在のプログラムのハッシュを計算します。両者が一致する場合、検証が成功します。自分でパッケージ化した MSIX プログラムパッケージには、Tencent の秘密鍵を使用して署名することはできないため、自分で秘密鍵を生成し、対応する証明書をシステムの信頼リストにインストールする必要があります。

  1. 管理者権限の PowerShell を開き、証明書のハッシュを生成します。
New-SelfSignedCertificate -Type Custom -Subject "CN=Tencent Technology(Shenzhen) Company Limited, O=Tencent Technology(Shenzhen) Company Limited, L=Shenzhen, S=Guangdong Province, C=CN" -KeyUsage DigitalSignature -FriendlyName"WeChat" -CertStoreLocation "Cert:\LocalMachine\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3","2.5.29.19={text}")
  • -Subject:任意の値に変更できます
  • -CertStoreLocation "Cert:\LocalMachine\My":証明書の保存場所をローカルコンピューターの個人証明書ストアに指定します。
  • -TextExtension:証明書の拡張機能を追加します。2.5.29.37={text}1.3.6.1.5.5.7.3.3は証明書の拡張キーの用途(EKU)を指定し、1.3.6.1.5.5.7.3.3はコードサイニングの OID です。2.5.29.19={text}は基本制約拡張機能ですが、ここでは具体的な値は指定されていません。
  1. 生成された THUMBPRINT1 をコピーして安全な場所に保存し、たとえば Bitwarden に保存します。そして、パスワードを生成するか、覚えやすいパスワードを使用します。以下の文書では、PASSWORD1 でパスワードを代用します。

  2. 証明書を生成します。

$password = ConvertTo-SecureString -String "PASSWORD1" -Force -AsPlainText
Export-PfxCertificate -cert "Cert:\LocalMachine\My\THUMBPRINT1" -FilePath Wechat.pfx -Password $password
Remove-Item -Path "Cert:\LocalMachine\My\THUMBPRINT1"

PASSWORD1 と THUMBPRINT1 を対応する値で置き換える必要があります。

完了したら、ファイルエクスプローラーで現在のディレクトリを開き、Wechat.pfx をダブルクリックし、証明書のインポートウィザードで保存場所を「ローカルコンピューター」に選択します。次に、設定したパスワード PASSWORD1 を入力し、次へをクリックします。

「証明書ストア」で、2 番目のオプション「次のストアにすべての証明書を配置する」を選択し、参照をクリックして「信頼されたルート証明機関」を見つけ、次へをクリックしてインポート操作を完了します。

ステップ 4:証明書の適用#

MSIX Packaging Tool を開き、プログラムパッケージの編集を選択し、保存した.msix ファイルを開きます。プログラムパッケージエディタのページで、「署名の設定」で「証明書(.pfx)を使用して署名する」を選択し、Wechat.pfx を選択し、パスワードを入力します。ただし、保存する前に次のステップがあります。

ステップ 5:権限の変更#

左側の 3 番目のパネル「機能」で、いくつかの権限を選択できます。私は WeChat にカメラ、マイク、通知、Internet の権限を付与しました。さらに、直接ここでチェックできないオプションもありますので、最初のパネル「プログラムパッケージの情報」に戻り、「マニフェストファイルの編集」をクリックし、テキストの最後に次の行を追加します。

<rescap:Capability Name="isolatedWin32-print" />
<rescap:Capability Name="isolatedWin32-sysTrayIcon" />
<rescap:Capability Name="isolatedWin32-promptForAccess" />
<rescap:Capability Name="isolatedWin32-accessToPublisherDirectory" />

これらの機能は、ファイルの印刷、システムトレイアイコンの表示、ユーザーの承認を求めるファイルへのアクセス、パブリッシャーディレクトリへのアクセスをそれぞれ表しています。

最後に、.msix プログラムパッケージとして保存し、ダブルクリックしてインストールします。作業は完了です!腾讯见鬼去吧

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。