PaoZip Studio

コンパイル済みバイナリを暗号化して、あなたの知的財産を守る

ユーザーズマニュアル


バージョン 1.0.0

2026年2月


有限会社 パオ・アット・オフィス

https://www.pao.ac/


目次

  1. はじめに
  2. 1.1 PaoZip Studio とは
  3. 1.2 何ができるの?
  4. 1.3 対応言語一覧
  5. 1.4 仕組み — こうやって守ります
  6. 1.5 paozip 言語別ツールとの違い

  7. 動作環境

  8. 2.1 対応 OS
  9. 2.2 必要な環境

  10. インストール

  11. 3.1 Windows
  12. 3.2 macOS

  13. クイックスタート

  14. 4.1 GUI で保護してみよう
  15. 4.2 CLI で保護してみよう
  16. 4.3 保護したバイナリを実行してみよう

  17. 対応言語ガイド

  18. 5.1 .NET アセンブリ
  19. 5.2 Java JAR
  20. 5.3 Go
  21. 5.4 C / C++
  22. 5.5 Dart CLI
  23. 5.6 Flutter Desktop
  24. 5.7 Rust
  25. 5.8 Swift

  26. GUI の使い方

  27. 6.1 メイン画面
  28. 6.2 ダーク/ライトテーマ
  29. 6.3 日本語/英語切り替え
  30. 6.4 プロジェクトファイル

  31. CLI の使い方

  32. 7.1 protect コマンド
  33. 7.2 使用例
  34. 7.3 CI/CD での活用

  35. ライブラリ暗号化 — DLL / JAR / .so を暗号化する

  36. 8.1 ライブラリ暗号化とは
  37. 8.2 .NET ライブラリ暗号化
  38. 8.3 Java ライブラリ暗号化
  39. 8.4 C/C++ ライブラリ暗号化
  40. 8.5 Go / Rust / Dart / Swift
  41. 8.6 注意事項

  42. 技術仕様 — もっと詳しく知りたい人へ

  43. 9.1 暗号化方式
  44. 9.2 保護の仕組み
  45. 9.3 二重保護防止
  46. 9.4 パフォーマンス
  47. 9.5 制限事項

  48. トラブルシューティング

  49. ライセンス・お問い合わせ

  50. ライセンス・お問い合わせ


1. はじめに

1.1 PaoZip Studio とは

PaoZip Studio は、コンパイル済みのバイナリファイル(.exe, .dll, .jar など)を丸ごと暗号化して保護するツールです。

普通のソフトウェアは、リバースエンジニアリングツールを使えば、中のロジックをかなり読み取れてしまいます。特に .NET や Java はバイトコードなので、元のソースコードに近い形まで復元できてしまうことも。

PaoZip Studio を使えば——

あなたのアプリ.exe  →  暗号化  →  保護されたアプリ.exe

これだけです。 保護されたアプリは、エンドユーザーからは今まで通り普通に使えます。でも中身を覗こうとしても、暗号化されたデータしか見えません。

1.2 何ができるの?

┌───────────────────────────────────────────────────────────┐
│                   PaoZip Studio でできること                 │
├───────────────────────────────────────────────────────────┤
│                                                           │
│  .NET の .exe / .dll  ──→  暗号化して保護                  │
│  Java の .jar         ──→  暗号化して保護                  │
│  Go のバイナリ         ──→  暗号化して保護                  │
│  C / C++ のバイナリ    ──→  暗号化して保護                  │
│  Dart CLI のバイナリ   ──→  暗号化して保護                  │
│  Flutter デスクトップ  ──→  暗号化して保護                  │
│  Rust のバイナリ       ──→  暗号化して保護                  │
│  Swift のバイナリ      ──→  暗号化して保護                  │
│                                                           │
│  GUI でもCLI でも。Windows でも macOS でも。                │
│                                                           │
└───────────────────────────────────────────────────────────┘

しかも——

1.3 対応言語一覧

言語 入力 保護方式 特記事項
.NET .exe / .dll ネイティブランチャー Framework / .NET 5+ 両対応
Java .jar ネイティブランチャー / ライブラリ保護 実行可能 JAR・ライブラリ JAR 両対応
Go .exe / バイナリ ネイティブランチャー
C .exe / バイナリ ネイティブランチャー
C++ .exe / バイナリ ネイティブランチャー
Dart CLI .exe / バイナリ ネイティブランチャー dart compile exe の出力
Flutter デスクトップアプリ Flutter専用ランチャー data/app.so を暗号化
Rust .exe / バイナリ ネイティブランチャー
Swift .exe / バイナリ ネイティブランチャー

全言語統一アーキテクチャ: すべてのコンパイル型言語で、同一のネイティブ C ランチャー方式を採用しています。 暗号化されたペイロードをランチャー内に埋め込み、実行時にテンプディレクトリに展開→実行→削除します。 詳しくは 8.2 保護の仕組み をご覧ください。

1.4 仕組み — こうやって守ります

PaoZip Studio の保護は、こんな感じで動きます。

保護するとき(あなたの PC で):

   あなたのアプリ.exe
        │
        ▼
   ┌──────────────┐
   │  暗号化エンジン  │  ← ランダムな暗号鍵を生成
   │  (zencode)     │  ← zlib圧縮 → XOR暗号化 → ビット反転
   └──────────────┘
        │
        ▼
   ┌──────────────┐     ┌──────────────┐
   │  ランチャー     │  +  │  暗号化データ  │
   │  (自動生成)     │     │  (ペイロード)  │
   └──────────────┘     └──────────────┘
        │                      │
        └──────┬───────────────┘
               ▼
   保護されたアプリ.exe   ← これを配布!

エンドユーザーが実行するとき:

   保護されたアプリ.exe をダブルクリック
        │
        ▼
   ランチャーが起動
        │
        ▼
   暗号化データを復号
        │
        ▼
   元のアプリを実行   ← ユーザーには普通のアプリに見える
        │
        ▼
   アプリ終了
        │
        ▼
   復号データを削除   ← 痕跡を残さない!

ポイント: - 暗号鍵はランチャーの中に難読化して埋め込まれます - 復号されたデータは実行後に自動削除されます - エンドユーザーは保護されていることに気づきません

1.5 paozip 言語別ツールとの違い

PaoZip Studio の他に、言語ごとの「paozip for ○○」というツールもあります。何が違うのでしょう?

【paozip for Python / PHP / Dart / ...】
  ソースコードを暗号化
  → 開発・配布フェーズで使う
  → import / include で透過的に復号

【PaoZip Studio】
  コンパイル済みバイナリを暗号化
  → ビルド後・納品フェーズで使う
  → 実行時に自動的に復号&実行
比較 言語別ツール PaoZip Studio
保護対象 ソースコード コンパイル済みバイナリ
使うタイミング 開発中〜配布前 ビルド後〜納品
特に有効な場面 コードの秘匿 リバースエンジニアリング対策
併用 可能(二重保護!) 可能(二重保護!)

両方使えば、ソースもバイナリも保護できます。最強の組み合わせです。


2. 動作環境

2.1 対応 OS

OS GUI CLI 状態
Windows 10/11 (x64) PaoZip Studio (WPF / MAUI) paozip protect 対応済み
macOS 14+ (Apple Silicon / Intel) PaoZip Studio (MAUI) paozip protect 対応済み

2.2 必要な環境

Windows(GUI + CLI): - .NET ランタイム不要(自己完結型バイナリとして配布) - 追加のコンパイラやツールは一切不要

macOS: - macOS 14 (Sonoma) 以降 - Xcode Command Line Tools(clang コンパイラが必要)

Windows 版 は、事前コンパイル済みランチャーテンプレートを使用するため、GCC 等の外部コンパイラは不要です。 macOS 版 では、Xcode Command Line Tools をインストールしてください(xcode-select --install)。 .NET や Java のアプリを保護する際にも、保護ツール側に追加の SDK は不要です。 (もちろん、保護する前のビルドには各言語の開発ツールが必要です)


3. インストール

3.1 Windows

Step 1: ダウンロードした ZIP を解凍します。

PaoZip Studio/
├── Paozip.Studio.exe      ← GUI アプリ(ダブルクリックで起動)
├── Paozip.Cli.exe          ← CLI ツール(コマンド名: paozip)
└── Templates/
    ├── launcher_generic_gui.exe    ← ランチャーテンプレート(汎用 / .NET 5+)
    ├── launcher_java.exe           ← Java 用
    ├── launcher_flutter.exe        ← Flutter Desktop 用
    ├── launcher_dotnetcore_linux   ← .NET 5+ Linux 用
    └── launcher_dotnetcore_mac     ← .NET 5+ macOS 用

Step 2: 好きな場所に配置します。

インストーラーはありません。ZIP を解凍するだけです。 C:\PaoZip Studio\C:\Tools\PaoZip Studio\ など、お好みの場所に置いてください。

Step 3: (任意)CLI を PATH に追加します。

コマンドラインから paozip をどこでも使いたい場合は、解凍先を PATH 環境変数に追加してください。

体験版には回数制限がありますが、機能制限はありません。すべての機能を試せます。

3.2 macOS

Mac でも PaoZip Studio が使えます!

PKG インストーラーでかんたんインストール

Step 1: PaoZipStudio-1.0.0.pkg をダブルクリック

Step 2: 画面の指示に従ってインストール

Step 3: Applications フォルダに「PaoZip Studio」が登場!

/Applications/
└── Paozip.Studio.Maui.app    ← これが PaoZip Studio

初回起動時の Gatekeeper 許可

初回起動時、macOS が「開発元が未確認のため開けません」と表示することがあります。

方法 1: 右クリック →「開く」→「開く」をクリック

方法 2: システム設定 → プライバシーとセキュリティ →「このまま開く」をクリック

これは macOS のセキュリティ機能(Gatekeeper)です。一度許可すれば、次回からはダブルクリックで起動できます。

Xcode Command Line Tools のインストール

バイナリ保護にはコンパイラ(clang)が必要です。まだインストールしていない場合:

xcode-select --install

ダイアログが表示されたら「インストール」をクリック。数分で完了します。

PaoZip Studio は .NET MAUI で開発されたネイティブ macOS アプリです。 Windows 版と同じ機能が Mac でも使えます。


4. クイックスタート

ここでは、実際にアプリを保護してみましょう。驚くほど簡単です。

4.1 GUI で保護してみよう

Step 1: PaoZip Studio を起動します。

Step 2: 保護したいファイルを選びます。

「Browse」ボタンをクリックして、保護したいファイルを選択します。 (ドラッグ&ドロップでもOK!)

対応ファイル:
  Windows:
    .exe   → .NET / Go / C / C++ / Dart / Rust / Swift
    .dll   → .NET 5+ アセンブリ
    .jar   → Java
  macOS:
    バイナリ → Go / C / C++ / Dart / Rust / Swift(拡張子なし)
    .jar    → Java

Step 3: ファイル情報を確認します。

ファイルを選ぶと、自動的にフレームワーク検出が行われます。

  Framework:  .NET v10.0       ← 自動検出!
  Type:       Console
  Size:       162,304 bytes
  Types:      42

ネイティブバイナリの場合は:

  Framework:  Native           ← .NET でも Java でもないバイナリ
  Type:       Windows x64      ← macOS では "macOS ARM64" や "macOS x86_64"
  Size:       2,363,392 bytes

Step 4: 「Protect」ボタンをクリック!

あとは待つだけ。保護ログがリアルタイムで表示されます。

  Inspecting assembly...
  Framework: .NET v10.0  Type: Console
  Size: 162,304 bytes  Types: 42
  Reading: MyApp.dll
  Generating encryption key...
  Encrypting... 162,304 bytes
  Obfuscating key...
  Generating launcher...
  Launcher: .NET 5+ (template)
  OK
  ---
  Protection Complete!
  Original: 162,304 bytes (1 types)
  Protected: 174,843 bytes

4.2 CLI で保護してみよう

GUI を使わずに、コマンドラインからも保護できます。

Windows:

paozip protect MyApp.exe -o out/MyApp.exe

macOS:

paozip protect myapp -o out/myapp

たったこれだけ。出力ファイル名を指定することもできます:

paozip protect MyApp.exe -o dist/MyApp.exe           # Windows
paozip protect myapp -o dist/myapp                    # macOS

⚠ .NET 5+ アプリの制限: .NET 5+ アプリを保護する際は、入力ファイルと異なるディレクトリを -o で指定してください。同一ディレクトリに出力しようとすると Cannot protect .NET 5+ app in the same directory エラーになります。

4.3 保護したバイナリを実行してみよう

保護されたバイナリは、元のバイナリと同じように実行できます。

Windows:

# 保護前
MyApp.exe --input data.csv --output result.json

# 保護後(まったく同じ!)
MyApp.protected.exe --input data.csv --output result.json

macOS:

# 保護前
./myapp --input data.csv --output result.json

# 保護後(まったく同じ!)
./myapp.protected --input data.csv --output result.json

引数も、終了コードも、標準出力も——全部そのまま。 エンドユーザーには、保護されていることがわかりません。

保護済みバイナリを再度保護しようとすると、ちゃんとエラーになります。二重保護はできません(安全設計!)。


5. 対応言語ガイド

PaoZip Studio は、入力ファイルを自動判別します。 .NET なのか Java なのかネイティブバイナリなのか——あなたが選ぶ必要はありません。

5.1 .NET アセンブリ

対応フレームワーク: - .NET Framework 4.x(.exe 直接保護) - .NET 5 / 6 / 7 / 8 / 9 / 10+(.exe を入れれば自動で .dll を検出)

保護方式: ネイティブランチャー(C / C++ と同一方式)

┌─────────────────────────────────────────────────────┐
│  .NET の保護イメージ                                   │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ネイティブ C ランチャー(.exe)                       │
│  ┌──────────────────────────────────────────┐      │
│  │  暗号化された元のアセンブリ(リソース埋込)  │      │
│  │  ┌─────────────────────────────────────┐ │      │
│  │  │  ████████████████████████████████   │ │      │
│  │  │  ████████████████████████████████   │ │      │
│  │  └─────────────────────────────────────┘ │      │
│  │                                          │      │
│  │  起動時:                                  │      │
│  │  1. テンプディレクトリ作成                  │      │
│  │  2. 暗号化データを復号・書き出し            │      │
│  │  3. 依存 DLL・設定ファイルをコピー          │      │
│  │  4. CreateProcess で元のアプリを実行       │      │
│  │  5. 終了後テンプディレクトリを削除          │      │
│  └──────────────────────────────────────────┘      │
│                                                     │
└─────────────────────────────────────────────────────┘

使い方:

# .NET Framework
paozip protect MyApp.exe

# .NET 5+(.exe を入れれば自動で同名 .dll を検出・保護。-o で別ディレクトリを指定)
paozip protect MyApp.exe -o protected/MyApp.exe

# macOS .app バンドル(MAUI / ネイティブ)
paozip protect MyApp.app

⚠ .NET 5+ は同一ディレクトリへの出力不可: .NET 5+ アプリを保護する際は -o で異なるディレクトリを指定してください。同一ディレクトリに出力しようとするとエラーになります。

ポイント: - 出力はネイティブ C ランチャー(.exe)です - .NET 5+ は .exe(apphost)をドラッグ&ドロップするだけで、同名の .dll を自動検出して保護します(.dll を直接指定する必要はありません) - .NET Framework: 依存 DLL と .config をランチャーの隣に配置してください - .NET 5+: 依存 DLL と .json(runtimeconfig, deps)をランチャーの隣に配置してください - ランチャーは実行時にこれらをテンプディレクトリにコピーして実行します

逆コンパイル対策として最も効果的:

.NET アセンブリは IL(中間言語)で構成されているため、ILSpy や dnSpy などで簡単に逆コンパイルできてしまいます。PaoZip Studio で保護すれば、ネイティブ C ランチャーの中に暗号化された IL が埋め込まれるため、逆コンパイルツールでは中身を一切読めません。ランチャー自体はネイティブコードなので、.NET の逆コンパイルツールはそもそも認識しません。

macOS MAUI .app バンドルの暗号化

macOS の MAUI アプリ(Mac Catalyst)は、ランチャー方式ではなく ライブラリ暗号化方式 で保護します。Mac Catalyst は実行バイナリの名前やプロセス情報でバンドルを解決するため、ランチャーで実行バイナリを差し替えると起動できなくなります。

手順:

  1. paozip protect.app バンドルを暗号化します:
paozip protect MyApp.app
# → MonoBundle 内の DLL が暗号化されます(.dll → .dll.enc)
# → 実行バイナリ(Contents/MacOS/)はそのまま残ります
  1. アプリの Program.csPaozipLoader.Initialize() を追加します:
using Paozip.Runtime;

PaozipLoader.Initialize();  // ← 暗号化 DLL を実行時に復号
return DoWork();             // ← 暗号化 DLL の型を使うコードは別メソッドに分離

static int DoWork()
{
    // ここでアプリの通常処理
}
  1. プロジェクトに Paozip.Runtime を参照追加します:
<ItemGroup>
  <Reference Include="paozip">
    <HintPath>path/to/paozip.dll</HintPath>
  </Reference>
</ItemGroup>
  1. アドホック署名:
codesign --force --deep --sign - MyApp.app

重要: PaozipLoader.Initialize() と暗号化 DLL の型を使うコードは 別のメソッドに分離 してください。同じメソッド内に書くと、JIT が Initialize() の前に型解決を試みて失敗します。

Windows MAUI との違い: Windows 版はランチャー方式で動作するため、PaozipLoader.Initialize() は不要です。Mac 版のみこの手順が必要です。#if MACCATALYST で条件分岐すれば、同じソースコードで Windows / Mac 両対応できます。

5.2 Java JAR

対応: 実行可能 JAR(Main-Class あり)およびライブラリ JAR(Main-Class なし)

保護方式: ネイティブランチャー(C / C++ と同一方式)

paozip protect MyApp.jar
# → MyApp.exe を生成(ネイティブランチャー!)

仕組み: - 暗号化された JAR がネイティブ C ランチャーの中にリソースとして埋め込まれます - 起動時にテンプディレクトリに復号 → java -jar で実行 → 終了後に削除 - JAR の中身は一切見えません

# 保護前
java -jar MyApp.jar --port 8080

# 保護後(.exe をダブルクリックで実行!)
MyApp.exe --port 8080

出力が .jar → .exe に変わります。 java -jar で実行する代わりに、ダブルクリックで直接実行できるようになります。Java がインストールされている必要はありますが、ユーザーにとってより自然な起動方法になります。

Java の JAR ファイルは .class ファイルの集合体で、jd-gui などで簡単にデコンパイルできます。保護すれば、ネイティブ C ランチャーの中に暗号化データとして埋め込まれるため、Java のデコンパイルツールでは全く認識できません。

5.3 Go

対応: go build で生成された実行可能バイナリ

保護方式: ネイティブランチャー

# Go でビルド → 保護
go build -o myapp.exe main.go              # Windows
paozip protect myapp.exe                    # → myapp.protected.exe

go build -o myapp main.go                   # macOS
paozip protect myapp                        # → myapp.protected

テスト結果(実績):

項目
元のサイズ 2.3 MB
保護後 1.4 MB(38% 圧縮!)
引数パススルー OK
終了コード OK

Go バイナリはランタイムを含むため大きくなりがちですが、PaoZip Studio の圧縮効果で保護後の方が小さくなることが多いです。

5.4 C / C++

対応: GCC / Clang / MSVC でコンパイルされた実行可能バイナリ

保護方式: ネイティブランチャー

# Windows
gcc -O2 -o myapp.exe myapp.c           # C
g++ -O2 -o myapp.exe myapp.cpp         # C++
paozip protect myapp.exe

# macOS
clang -O2 -o myapp myapp.c             # C
clang++ -O2 -o myapp myapp.cpp         # C++
paozip protect myapp

テスト結果:

言語 保護後 備考
C ~60 KB ~150 KB ランチャーテンプレート(~120KB)のオーバーヘッドにより増加
C++ ~65 KB ~155 KB 同上。ペイロード自体は圧縮されている

注: 小さなバイナリ(100KB 以下)では、ランチャーテンプレートのオーバーヘッド(約 120KB)により、保護後のファイルサイズは元より大きくなります。Go や Flutter のような大きなバイナリ(数MB)では圧縮効果が上回り、保護後の方が小さくなります。

5.5 Dart CLI

対応: dart compile exe で生成された実行可能バイナリ

保護方式: ネイティブランチャー

# Windows
dart compile exe main.dart -o myapp.exe
paozip protect myapp.exe

# macOS
dart compile exe main.dart -o myapp
paozip protect myapp

Dart CLI バイナリは AOT(事前コンパイル)で生成されるネイティブバイナリです。Go や Rust と同様の方式で保護できます。

5.6 Flutter Desktop

対応: flutter build windows / flutter build macos で生成されたデスクトップアプリ

保護方式: ネイティブランチャー(Flutter 専用)

Flutter デスクトップアプリは、他のバイナリとはちょっと構造が違います。

build/windows/x64/runner/Release/
├── myapp.exe              ← C++ ランナー(90KB 程度)
├── flutter_windows.dll     ← Flutter エンジン
└── data/
    ├── app.so             ← Dart コード(ここが本体!)
    └── flutter_assets/     ← アセット

大事なポイント: Dart のコードは .exe ではなく data/app.so に入っています。 PaoZip Studio はこれを自動検出して、app.so だけを暗号化します。

# Release フォルダの .exe を指定するだけ
paozip protect myapp.exe

保護の流れ:

保護前:                          保護後:
├── myapp.exe                    ├── myapp.exe          ← 新しいランチャー
├── flutter_windows.dll          ├── myapp_original.exe ← 元のランナー
└── data/                        ├── flutter_windows.dll
    ├── app.so  ← 5.5 MB        └── data/
    └── flutter_assets/              ├── app.so.enc ← 2.4 MB(暗号化)
                                     └── flutter_assets/

仕組み: 1. ランチャー(新しい myapp.exe)が起動 2. data/app.so.enc を復号 → data/app.so を生成 3. 元の Flutter ランナー(myapp_original.exe)を実行 4. Flutter アプリが普通に動作 5. アプリ終了後、data/app.so を削除

Flutter アプリの見た目や動作は一切変わりません。ユーザーは保護されていることに気づきません。

テスト結果:

項目
app.so 元サイズ 5.5 MB
app.so.enc 保護後 2.4 MB(56% 圧縮!)
動作 完全に正常
app.so 自動削除 OK

5.7 Rust

対応: rustc / cargo build で生成された実行可能バイナリ

保護方式: ネイティブランチャー

# Windows
cargo build --release
paozip protect target/release/myapp.exe

# macOS
cargo build --release
paozip protect target/release/myapp

テスト結果:

項目
元のサイズ 158 KB
保護後 108 KB(32% 圧縮)
引数パススルー OK
終了コード OK

5.8 Swift

対応: swiftc でコンパイルされた実行可能バイナリ

保護方式: ネイティブランチャー

# Swift でコンパイル
swiftc -O -o myapp main.swift

# 保護
paozip protect myapp.exe    # Windows
paozip protect myapp        # macOS

Swift on Windows と macOS の両方に対応しています。


6. GUI の使い方

6.1 メイン画面

PaoZip Studio の GUI はシンプルで直感的です。

┌──────────────────────────────────────────────────────┐
│  PaoZip Studio                              [─][□][×]│
├──────────────────────────────────────────────────────┤
│  File    Settings    Help                             │
├──────────────────────────────────────────────────────┤
│                                                      │
│  ▼ Input Assembly                                    │
│  ┌──────────────────────────────────┐ [Browse]       │
│  │ C:\path\to\MyApp.exe             │                │
│  └──────────────────────────────────┘                │
│                                                      │
│  Framework: .NET v10.0  Type: Console                 │
│  Size: 12,345 bytes     Types: 42                    │
│                                                      │
│  ▼ Output Settings                                   │
│  ┌──────────────────────────────────┐ [Browse]       │
│  │ C:\path\to\MyApp.protected.exe   │                │
│  └──────────────────────────────────┘                │
│  ☑ Copy .config file                                 │
│  ☑ Copy dependency DLLs                              │
│                                                      │
│  ▼ Protection Log                                    │
│  ┌──────────────────────────────────────────────┐   │
│  │ Inspecting assembly...                        │   │
│  │ Framework: .NET v10.0  Type: Console          │   │
│  │ Encrypting... 12,345 bytes                    │   │
│  │ Protection Complete!                          │   │
│  └──────────────────────────────────────────────┘   │
│                                                      │
│              [ ★ Protect ★ ]                         │
│                                                      │
├──────────────────────────────────────────────────────┤
│  Ready                                               │
└──────────────────────────────────────────────────────┘

各セクションの説明:

セクション 説明
Input Assembly 保護したいファイルを選択。ドラッグ&ドロップにも対応。macOS では .app バンドルもドロップ可能
Output Settings 出力先パス。自動的に .protected.exe が設定される
Protection Log 保護処理のリアルタイムログ
Protect ボタン クリックで保護開始!

6.2 ダーク/ライトテーマ

Settings → Theme で切り替えられます。

設定はアプリ内で即座に反映されます。

6.3 日本語/英語切り替え

Settings → Language で切り替えられます。

ログメッセージも含めて、完全にバイリンガル対応です。

6.4 プロジェクトファイル

よく使う設定を .paoproj ファイルとして保存・読み込みできます。

CI/CD や定型的な保護作業に便利です。


7. CLI の使い方

GUI を起動せずに、コマンドラインから直接保護できます。CI/CD パイプラインに組み込む場合に特に便利です。

7.1 protect コマンド

Usage: paozip protect <input> [options]

Arguments:
  <input>     保護するファイルのパス

Options:
  -o <path>           出力先パスを指定(省略時: *.protected.* を自動生成)
  --skip-deps-patch   deps.json のパッチ処理をスキップする
                      ランチャー方式で companion DLL を暗号化する際に使用

7.2 使用例

Windows:

paozip protect MyApp.exe                    # → MyApp.protected.exe
paozip protect MyApp.exe -o dist/MyApp.exe  # 出力先を指定
paozip protect MyApp.dll                    # .NET 5+ → MyApp.protected.dll
paozip protect MyApp.jar                    # Java → MyApp.protected.exe

# exe + companion DLL を両方暗号化する場合:
paozip protect MyApp.exe -o protected/MyApp.exe
paozip protect protected/MyLib.dll -o protected/MyLib_enc.dll --skip-deps-patch
mv protected/MyLib_enc.dll protected/MyLib.dll

macOS:

paozip protect myapp                        # → myapp.protected
paozip protect myapp -o dist/myapp          # 出力先を指定
paozip protect MyApp.jar                    # Java → MyApp.protected

7.3 CI/CD での活用

GitHub Actions の例:

steps:
  - name: Build
    run: dotnet publish -c Release -o dist/

  - name: Protect
    run: paozip protect dist/MyApp.dll -o dist/MyApp.dll

  - name: Upload
    uses: actions/upload-artifact@v4
    with:
      name: protected-app
      path: dist/

Jenkins の例:

stage('Protect') {
    steps {
        bat 'paozip protect build\\MyApp.exe -o release\\MyApp.exe'
    }
}

CLI の終了コード: 0 = 成功、1 = 失敗。CI/CD のステップ制御に使えます。


8. ライブラリ暗号化 — DLL / JAR / .so を暗号化する

実行体(.exe)だけじゃない。ライブラリも丸ごと暗号化できます。

あなたが作った DLL や JAR を暗号化して配布すれば、 リバースエンジニアリングからライブラリの中身を守れます。 しかもユーザーのアプリからはいつも通り呼び出すだけ。 難しい設定は要りません。


💡 実行体(.exe)の暗号化との違い

ライブラリは「実行するもの」ではなく「呼び出されるもの」なので、 ランチャーで包む方式は使えません。代わりに、ランタイムが 暗号化ライブラリを透過的に復号してメモリにロードします。


8.1 ライブラリ暗号化とは

┌─────────────────────────────────────────────────────┐
│              ライブラリ暗号化の流れ                    │
├─────────────────────────────────────────────────────┤
│                                                     │
│  【開発時】                                          │
│  あなたの DLL/JAR/SO                                 │
│       ↓ paozip protect                              │
│  暗号化された DLL/JAR/SO  +  ランタイム               │
│                                                     │
│  【ユーザーのアプリ実行時】                            │
│  アプリ起動 → ランタイムが自動復号 → 普通に使える      │
│                                                     │
│  ※ 復号はメモリ上で行われます。                       │
│    復号されたファイルがディスクに残ることはありません。   │
│                                                     │
└─────────────────────────────────────────────────────┘

配布するもの

暗号化したライブラリ 一緒に配布するランタイム 説明
MyLib.dll (.NET) paozip.dll .NET 用復号ランタイム
MyLib.jar (Java) paozip.jar Java 用復号ランタイム
mylib.dll / .so / .dylib (C/C++等) paozip_loader.dll / .so / .dylib ネイティブ用復号ランタイム

ランタイムはライセンスフリーです。暗号化ライブラリと一緒に自由に再配布できます。


8.2 .NET ライブラリ暗号化

暗号化する

paozip protect MyLib.dll

これだけ! 3つのことが自動で行われます:

  1. MyLib.dll が暗号化されます
  2. paozip.dll(ランタイム)が同じフォルダにコピーされます
  3. *.deps.json から MyLib の参照が自動的に除去されます

💡 deps.json の自動パッチ

.NET 5+ では、ランタイムが .deps.json に登録されたアセンブリを 直接ロードしようとします。暗号化された DLL は有効な PE ファイルではないため、 これが失敗します。PaoZip は暗号化時に deps.json を自動的にパッチして この問題を回避します。あなたが何かする必要はありません。

ユーザーのアプリに組み込む

ユーザーのアプリの起動コードに 1行だけ 追加してもらいます:

using Paozip.Runtime;

// アプリの最初に1回だけ呼ぶ
PaozipLoader.Initialize();

これで暗号化ライブラリは自動的に復号されてロードされます。 ユーザーのコードは一切変更不要。いつも通り using MyLib; で使えます。

⚠️ 重要:メソッド分離のルール

暗号化ライブラリの型を使うコードは、Initialize()別のメソッドに書いてください。

// ✅ 正しい書き方
PaozipLoader.Initialize();
RunMyApp();              // ← 暗号化DLLの型はこの中で使う

static void RunMyApp()
{
    var result = MyLib.DoSomething();  // ← ここで初めてMyLibの型に触れる
}
// ❌ ダメな書き方(同じメソッド内)
PaozipLoader.Initialize();
var result = MyLib.DoSomething();  // ← Initialize() より前に型解決されてしまう

なぜ? .NET の JIT コンパイラは、メソッド内のすべての型参照を メソッド実行前に解決します。同じメソッドに書くと、Initialize() が 実行される前に暗号化DLLの型を解決しようとして失敗します。

完全な使用例

// Program.cs
using Paozip.Runtime;

PaozipLoader.Initialize();
return App.Run(args);

// App.cs(別ファイルでも別メソッドでもOK)
static class App
{
    public static int Run(string[] args)
    {
        // 暗号化されたライブラリをいつも通り使える
        string json = Newtonsoft.Json.JsonConvert.SerializeObject(new { message = "Hello!" });
        Console.WriteLine(json);
        return 0;
    }
}

配布物

MyApp/
├── MyApp.exe              ← ユーザーのアプリ
├── MyApp.dll
├── MyApp.deps.json        ← 自動パッチ済み
├── MyLib.dll              ← 暗号化済みライブラリ(中身は暗号文)
├── paozip.dll             ← ランタイム(自動コピー済み)
└── その他の依存DLL...

8.3 Java ライブラリ暗号化

暗号化する

paozip protect MyLib.jar

暗号化された MyLib.jarpaozip.jar(ランタイム)が生成されます。

ユーザーのアプリに組み込む

import com.paozip.PaozipRuntime;

public class MyApp {
    public static void main(String[] args) throws Exception {
        // 暗号化 JAR をロード
        ClassLoader cl = PaozipRuntime.loadEncryptedJar("MyLib.jar");

        // リフレクションでクラスを取得して使う
        Class<?> myClass = cl.loadClass("com.example.MyClass");
        Object instance = myClass.getConstructor().newInstance();
        myClass.getMethod("doWork").invoke(instance);
    }
}

💡 Java の場合はリフレクション経由

Java のクラスローダーは .NET とは仕組みが異なるため、 暗号化 JAR 内のクラスは PaozipRuntime.loadEncryptedJar() で 取得した ClassLoader 経由でロードします。

配布物

myapp/
├── MyApp.jar (or .class)  ← ユーザーのアプリ
├── MyLib.jar              ← 暗号化済み JAR
└── paozip.jar             ← ランタイム

8.4 C/C++ ライブラリ暗号化

暗号化する

paozip protect mylib.dll      # Windows
paozip protect libmylib.so    # Linux
paozip protect libmylib.dylib # macOS

暗号化されたファイルと paozip_loader(ランタイム)が生成されます。

ユーザーのアプリに組み込む

#include "paozip_loader.h"

int main(void)
{
    // 暗号化ライブラリをロード
    void* lib = paozip_load("mylib.dll");

    // 関数を取得
    typedef int (*MyFunc)(int, int);
    MyFunc add = (MyFunc)paozip_sym(lib, "add");

    // 普通に呼ぶ
    int result = add(3, 4);  // → 7

    // 使い終わったら閉じる
    paozip_close(lib);

    return 0;
}

API リファレンス

関数 説明
paozip_load(path) 暗号化ライブラリを復号してロード。戻り値はハンドル。
paozip_sym(handle, name) シンボル(関数/変数)のアドレスを取得。
paozip_close(handle) ライブラリをアンロードして後片付け。
paozip_error() 最後のエラーメッセージを取得。

配布物

myapp/
├── myapp.exe
├── mylib.dll              ← 暗号化済み(元の .dll と同名)
├── paozip_loader.dll      ← ランタイム
└── paozip_loader.h        ← ヘッダファイル(開発時に必要)

8.5 Go / Rust / Dart / Swift

これらの言語は、C/C++ と同じ paozip_loader ランタイムを使います。 各言語に合わせたラッパーが用意されています。

Go

package main

import "yourapp/paozip"  // Go ラッパー

func main() {
    lib, err := paozip.Load("mylib.dll")
    if err != nil { panic(err) }
    defer lib.Close()

    sym, _ := lib.Symbol("add")
    // C.call_add(sym, 3, 4) などで呼ぶ
}

⚠️ Go c-shared ライブラリの制限事項

Go で作成した共有ライブラリ(-buildmode=c-shared)を paozip_loader で暗号化→ロードする場合、 Go ランタイムの初期化が不安定になるケースがあります。

これは Go ランタイムが DLL のロード時に特殊な初期化処理を必要とし、 paozip_loader がテンポラリファイル経由でロードする方式と互換性がないためです。

推奨: Go で作成した共有ライブラリを暗号化する場合は、 軽量な関数のみをエクスポートするか、実行体(.exe)の暗号化を検討してください。


### Rust

```rust
use libloading::{Library, Symbol};

fn main() {
    // paozip_loader.dll をランタイムロード
    let loader = unsafe { Library::new("paozip_loader.dll") }.unwrap();
    let pz_load = unsafe { loader.get::<fn(*const i8) -> *mut ()>(b"paozip_load") }.unwrap();

    // 暗号化ライブラリをロードして使う
    let handle = pz_load(c"mylib.dll".as_ptr());
    // ...
}

Dart / Flutter

import 'package:your_app/paozip_loader.dart';

void main() {
  PaozipLoader.initialize();
  final handle = PaozipLoader.load('mylib.dll');
  final sym = PaozipLoader.symbol(handle, 'add');
  // NativeFunction として呼ぶ
  PaozipLoader.close(handle);
}

Swift

import PaoZipLoader

let lib = try EncryptedLibrary(path: "mylib.dylib")
let add: @convention(c) (Int32, Int32) -> Int32 = try lib.symbol(name: "add")
let result = add(3, 4)  // → 7

Flutter Desktop (Windows / macOS)

Flutter アプリから暗号化ライブラリを使う場合、dart:ffipaozip_loader を呼びます。

import 'dart:ffi';
import 'package:ffi/ffi.dart';

// paozip_loader をロード
final loader = DynamicLibrary.open('paozip_loader.dll'); // Windows
// final loader = DynamicLibrary.open('paozip_loader.dylib'); // macOS

// 暗号化ライブラリをロード
final pzLoad = loader.lookupFunction<...>('paozip_load');
final handle = pzLoad('mylib.dll'.toNativeUtf8());

// シンボル取得して関数呼出し
final pzSym = loader.lookupFunction<...>('paozip_sym');
final sym = pzSym(handle, 'add'.toNativeUtf8());
final add = sym.cast<NativeFunction<Int32 Function(Int32, Int32)>>()
    .asFunction<int Function(int, int)>();
print(add(3, 4)); // → 7

💡 Flutter macOS での注意点


8.6 注意事項

ランタイムの配布を忘れずに

暗号化ライブラリだけを配布しても動きません。 必ずランタイム(paozip.dll / paozip.jar / paozip_loader.dll)を一緒に配布してください。 paozip protect コマンドで暗号化すると、ランタイムは自動的にコピーされます。

暗号化に向かないライブラリ

以下のライブラリは暗号化に向きません:

Windows ネイティブ DLL (.dll) のランタイム選択

Windows では .dll 拡張子が .NET DLL とネイティブ C/C++ DLL の両方に使われるため、 paozip protect コマンドは 拡張子だけではどちらのランタイムが必要か判別できません

暗号化DLL配布フォルダ/
├── mylib.dll              ← 暗号化済み
├── paozip_loader.dll      ← ネイティブ C/C++ 用ランタイム(手動配置)
└── paozip_loader.h        ← 開発時ヘッダ(手動配置)

.so(Linux)や .dylib(macOS)は明確にネイティブなので、この問題は発生しません。

paozip_loader は暗号化 DLL 専用

paozip_loaderpaozip_load() 関数は PAOZIPDK 形式で暗号化されたファイルのみロードできます。 暗号化されていない通常の DLL を渡すと "Not a PAOZIPDK file" エラーで NULL が返ります。

通常の DLL と暗号化 DLL を混在させる場合は、通常の DLL は LoadLibrary / dlopen で、 暗号化 DLL は paozip_load でロードしてください。

メモリリーク検証済み

100回連続のロード/アンロードサイクルで検証済みです。 初回ロード時に約 5MB の初期化コストが発生しますが、以降のロード/アンロードでメモリは一切増加しません。

パフォーマンスへの影響

実行時のパフォーマンス影響はゼロです。

復号はライブラリの初回ロード時に1回だけ行われます。 一度メモリにロードされれば、通常のライブラリとまったく同じ速度で動作します。 100万回の関数呼出しでもオーバーヘッドは測定不能でした。

同時に複数のライブラリを暗号化できる

1つのアプリで複数の暗号化ライブラリを同時に使えます。 テストでは 8つの .NET DLL を同時に暗号化して問題なく動作しました。

ただし、paozip protect コマンドは1つずつ順番に実行してください。 (同じフォルダで並列実行すると deps.json の書き換えが競合します)

# ✅ 正しい(順番に実行)
paozip protect LibA.dll
paozip protect LibB.dll
paozip protect LibC.dll

# ❌ ダメ(並列実行)
paozip protect LibA.dll &
paozip protect LibB.dll &  # deps.json 競合の可能性!

9. 技術仕様 — もっと詳しく知りたい人へ

ここからは技術的な詳細です。PaoZip Studio がどう動いているのか、もっと知りたい人向け。

9.1 暗号化方式

PaoZip Studio は zencode という独自の暗号化エンジンを使用しています。

暗号化の流れ:

元データ
  │
  ▼
zlib 圧縮(DEFLATE)     ← サイズを小さく
  │
  ▼
XOR 暗号化(鍵ベース)   ← 鍵がないと復号できない
  │
  ▼
ビット反転               ← さらに難読化
  │
  ▼
マジックヘッダ付与        ← "\tPAOZIPW\t" で識別
  │
  ▼
暗号化データ

鍵の保護: - 暗号化鍵は 64 文字のランダム hex 文字列(256 ビット相当) - ランチャーに埋め込む際は XOR マスク方式で難読化 - mask[]maskedKey[] の2つの配列に分割 - key[i] = mask[i] ^ maskedKey[i] で復元 - 鍵が平文でバイナリに含まれることはありません

9.2 保護の仕組み

全コンパイル型言語で統一されたネイティブランチャー方式を採用しています。

.NET、Java、Go、C/C++、Dart、Rust、Swift — すべて同じアーキテクチャです。

ネイティブランチャー方式

対象: 全コンパイル型言語(.NET, Java, Go, C, C++, Dart CLI, Rust, Swift)

ネイティブ C ランチャー起動(事前コンパイル済みテンプレート .exe)
  │
  ▼
埋め込みペイロードを復号
  │
  ▼
テンプディレクトリ作成      ← Windows: %TEMP%\paozip_{PID}\ / macOS: /tmp/paozip_{PID}/
  │
  ▼
復号したバイナリを書き出し
  │
  ▼
依存ファイルをコピー        ← .dll, .config, .json 等
  │
  ▼
プロセスを起動              ← CreateProcess / fork+exec
  │
  ▼
実行完了を待機
  │
  ▼
テンプディレクトリを削除    ← 痕跡を完全消去!

特長: - ランチャー自体がネイティブ C コードなので、.NET / Java の逆コンパイルツールで解析不可 - 実行後に自動削除(リトライ付き) - 引数と終了コードは完全にパススルー - 全言語で同じ仕組みなので、信頼性が高い

言語別の動作の違い:

言語 テンプに書き出すもの 実行方法 (Windows) 実行方法 (macOS)
.NET Framework .exe CreateProcess
.NET 5+ apphost + .dll CreateProcess (apphost) dotnet exec
Java .jar java -jar java -jar
Go / C / C++ / Rust / Swift / Dart CLI バイナリ CreateProcess fork + exec

Flutter Desktop: 専用方式

Flutter デスクトップは構造が特殊なため、専用の方式を使います。

ランチャー起動
  │
  ▼
data/app.so.enc を読み込み
  │
  ▼
復号して data/app.so に書き出し
  │
  ▼
元の Flutter ランナー(_original.exe)を起動
  │
  ▼
Flutter アプリが app.so を読み込んで動作
  │
  ▼
アプリ終了を待機
  │
  ▼
data/app.so を削除

9.3 二重保護防止

保護済みバイナリには PAOZIPLAUNCHER というマーカー文字列が埋め込まれます。 再度保護しようとすると、このマーカーを検出してエラーになります。

$ paozip protect MyApp.protected.exe
Error: File is already encrypted: MyApp.protected.exe

これは意図的な安全設計です。二重保護は意味がなく、問題を起こす可能性があるため。

9.4 パフォーマンス

保護処理にかかる時間:

入力サイズ 処理時間(目安)
~100 KB 1〜2 秒
~1 MB 2〜3 秒
~5 MB 3〜5 秒
~50 MB 10〜15 秒

事前コンパイル済みテンプレートを使用するため、保護処理は高速です。

サイズ変化:

ペイロードは zlib 圧縮されますが、ランチャーテンプレート自体に約 120KB のオーバーヘッドがあります。 そのため、大きなバイナリ(数MB以上)は保護後に小さくなりますが、小さなバイナリ(100KB 以下)はランチャーのオーバーヘッドにより大きくなります。

言語 元サイズ 保護後 備考
Go 2.3 MB 1.4 MB 38% 減(大きいバイナリは圧縮効果大)
Flutter (app.so) 5.5 MB 2.4 MB 56% 減
Rust 158 KB 108 KB 32% 減
C (小規模) ~60 KB ~150 KB ランチャーオーバーヘッド(~120KB)により増加

起動時のオーバーヘッド: - 復号 + テンプファイル書き出しの時間(通常 0.1〜0.5 秒) - ユーザーが体感できるレベルではありません

パフォーマンスへの影響

起動時オーバーヘッド(実測値):

言語 起動時オーバーヘッド 備考
Java +18% JVM 起動時間が大きいため相対的に小さい
.NET +65% PowerShell 計測含む
C +207% 元の起動が非常に速い(数ms)ため相対値が大きい

起動時オーバーヘッドは「復号 + プロセス起動」の合計です。元の起動時間が短いバイナリほど相対的なオーバーヘッドが大きく見えますが、絶対値としては数十〜数百ミリ秒程度です。

大規模アプリ(.NET MAUI等)の高速起動: - 保護済みバイナリは元のディレクトリに直接展開されるため、companion ファイル(DLL等)のコピーが不要 - .NET 10 MAUI アプリ(600+ ファイル / 280MB)でも、保護なし版とほぼ同じ速度で起動

サーバーアプリでの影響: - リクエスト処理のオーバーヘッドは 3.6% 以下(体感上の影響なし) - サーバーアプリは起動後に常駐するため、起動時のオーバーヘッドは初回のみ

メモリ使用量: - 保護前後で実行中のメモリ使用量はほぼ同等(増加なし)

長時間実行の安定性: - 30分連続実行 / 1000リクエスト処理でメモリリーク・ハンドルリークなし(検証済み)

9.5 制限事項

以下の制限事項にご注意ください:

インストーラーで配布する場合の注意

保護済みアプリをインストーラー(Inno Setup、WiX 等)で Program Files に配布する場合、インストール先フォルダに書き込み権限が必要です。

PaoZip のランチャーは起動時に、復号したバイナリをアプリと同じフォルダに一時的に書き出します。Program Files は通常ユーザーに書き込み権限がないため、権限がないと起動が大幅に遅くなります(数百ファイルの一時コピーが発生するため)。

Inno Setup の場合の対処例:

[Dirs]
Name: "{app}"; Permissions: everyone-full

[Files]
Source: "publish\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs; Permissions: everyone-full

補足: everyone-full はセキュリティ上は推奨されませんが、PaoZip の起動メカニズム上必要です。保護済みバイナリは起動時にアプリフォルダへ一時ファイルを書き出し、終了時に自動削除します。書き込み権限がない場合、ランチャーは %TEMP% に全ファイルをコピーするフォールバック動作になり、ファイル数が多いアプリ(.NET MAUI 等)では起動に数十秒〜数分かかることがあります。

この問題は .NET に限らず、companion ファイル(DLL 等)を多数持つアプリ全般で発生します。Go や C/C++ の単体バイナリでは companion ファイルがないため影響しません。

また、保護時に生成される .org.exe(元のバイナリのバックアップ)は、インストーラーに含めないでください。同名のファイルがインストール先に存在すると、ランチャーの高速起動モードが使えなくなり、同様に起動が遅くなります。


10. トラブルシューティング

「Launcher template not found」と表示される

保護に必要なランチャーテンプレートが見つからない場合に表示されます。

対処法: - Templates/ フォルダが PaoZip Studio と同じ場所にあるか確認してください - テンプレートファイル(launcher_*.exe)が含まれていることを確認してください

「File is already encrypted: <ファイル名>」

保護済みのバイナリをもう一度保護しようとしています。 元の(保護前の)バイナリを使ってください。

「Not a recognized format: <ファイル名>. Supported: .NET assembly, PE (.exe), Mach-O, ELF, JAR, DLL, .so, .dylib」

PaoZip Studio が認識できないファイル形式です。 対応形式: .NET アセンブリ、PE (.exe)、Mach-O、ELF、JAR、DLL、.so、.dylib。

Java ライブラリ JAR の保護

Main-Class が MANIFEST.MF に記述されていない JAR(ライブラリ JAR)は、自動的にライブラリ保護モードで処理されます。 実行可能 JAR はランチャー方式、ライブラリ JAR はライブラリ暗号化方式で保護されます。

.NET 5+ で companion DLL が見つからない場合

.NET 5+ の .exe(apphost)をドラッグ&ドロップすると、同名の .dll を自動検出して .NET 5+ として保護します。 .dll が見つからない場合は、ネイティブバイナリとして保護を試みます(ネイティブ保護にフォールスルー)。 意図した動作でない場合は、.exe と同じフォルダに同名の .dll があることを確認してください。

保護後のアプリが起動しない

アンチウイルスソフトとの互換性

PaoZip で保護したバイナリは、実行時に暗号化されたペイロードを復号して起動する仕組みです。この動作パターンを一部のアンチウイルスソフトが疑わしいと判断する場合があります。

VirusTotal(72製品一斉スキャン)での検証結果:

結果 製品数
安全と判定(Undetected) 66 / 72
誤検知(False Positive) 6 / 72

安全と判定した主要製品(一部):

Windows Defender、Norton、ESET-NOD32、Kaspersky、Avast、AVG、BitDefender、McAfee (Fortinet)、Avira、DrWeb、Emsisoft、GData、ClamAV、Google、Baidu、Huorong 他

誤検知した製品(6社):

Arctic Wolf、Bkav Pro、CrowdStrike Falcon、DeepInstinct、Elastic、SecureAge — いずれも AI/機械学習ベースのヒューリスティック検出です。

誤検知された場合の対処法:

  1. アンチウイルスソフトの設定で、保護済みバイナリのフォルダを除外(ホワイトリスト)に追加してください
  2. 企業環境でエンドポイント製品(CrowdStrike 等)を使用している場合は、IT 管理者に除外申請を行ってください
  3. 保護済みバイナリをお客様に配布する際は、コード署名証明書で署名することで誤検知率を大幅に低減できます

macOS:「開発元が未確認のため開けません」

Gatekeeper による警告です。右クリック →「開く」→「開く」で起動できます。 または、システム設定 → プライバシーとセキュリティ →「このまま開く」をクリック。

macOS:「clang: command not found」

Xcode Command Line Tools がインストールされていません。

xcode-select --install

macOS: 保護したバイナリに実行権限がない

保護後のバイナリに実行権限を付与してください。

chmod +x myapp.protected

CLI の終了コードが 1 になる

保護処理が失敗しています。エラーメッセージを確認してください。 よくある原因: - 入力ファイルが存在しない - 出力先に書き込み権限がない - ランチャーテンプレートが見つからない(Windows)、またはコンパイラが見つからない(macOS: clang)


11. ライセンス・お問い合わせ

ライセンスモデル

PaoZip Studio は 言語ごとのライセンス です。

ライセンス 保護できる言語
.NET ライセンス .NET Framework / .NET 5+
Java ライセンス Java JAR
Go ライセンス Go バイナリ
C/C++ ライセンス C / C++ バイナリ
Dart ライセンス Dart CLI / Flutter Desktop
Rust ライセンス Rust バイナリ
Swift ライセンス Swift バイナリ

体験版について: - すべての言語・機能を試せます(機能制限なし) - 回数制限があります - 体験版で保護したバイナリは製品版と同じ品質です

購入・ダウンロード

https://www.pao.ac/paozip/buy.html


12. 使用許諾

PaoZip Studio の使用について、PaoZip Studio の使用者(以下「利用者様」と称します)と有限会社パオ・アット・オフィス(以下「弊社」と称します)は、以下の各項目についての内容に同意するものとします。

1. 使用許諾書

この使用許諾書は、利用者様が PaoZip Studio を使用する場合に同意しなければならない契約書です。

2. 使用許諾書の同意

利用者様が PaoZip Studio を使用する時点で、本使用許諾書に同意されたものとします。同意されない場合は、PaoZip Studio を使用する事はできません。

3. ライセンス(使用権)の購入

利用者様が PaoZip Studio の製品版を使用して開発を行う場合には、1台の開発用コンピュータで PaoZip Studio を使用するにあたり、言語ごとに1ライセンスを購入する必要があります。

保護されたバイナリを配布・実行する環境にはライセンスは必要ありません。ランタイムライセンスフリーでございます。

4. 著作権

PaoZip Studio の著作権は、いかなる場合においても弊社に帰属いたします。

5. 免責

PaoZip Studio の使用によって、直接的、あるいは、間接的に生じた、いかなる損害に対しても、弊社は補償賠償の責任を負わないものとします。

6. 禁止事項

PaoZip Studio 及びその複製物を第三者に譲渡・貸与する事は出来ません。PaoZip Studio を開発ツールとして再販/再配布することを禁止します。なお、保護されたバイナリを配布することは問題ございません。

7. 保証の範囲

弊社は PaoZip Studio の仕様を予告無しに変更することがあります。その場合の利用者様に対する情報提供は、弊社 WEB サイトにて行う事とします。

7-2. 保護の性質について

PaoZip Studio は、ソースコードやバイナリの難読化(obfuscation)およびカジュアルコピー防止を目的としています。ILSpy 等の逆コンパイルツールによる直接的な解析を防ぎ、取引先やエンドユーザーにソースコードを直接見せないための保護手段として有効です。

ただし、リバースエンジニアリングの専門知識を持つ者に対する完全な保護を保証するものではありません。これは PHP Screw 等の同種の暗号化ツールと同様の特性であり、実行時に復号が必要なソフトウェア保護の一般的な制約です。

機密性の高い情報(API キー、パスワード等)は、暗号化されたバイナリ内に直接埋め込むのではなく、環境変数や外部の構成ファイル等で管理することを推奨します。

8. 適用期間

本使用許諾条件は利用者様が PaoZip Studio を使用した日より有効です。


13. 代金支払い方法

PaoZip Studio の製品版をご利用頂ける場合は、言語ごとにライセンスを購入して頂く必要があります。

体験版について: すべての言語・機能を試せます(機能制限なし、回数制限あり)。体験版で保護したバイナリは製品版と同じ品質です。

必要なライセンス数の数え方

PaoZip Studio で開発を行うパソコンの台数 × 使用する言語数

1ライセンス当たりの価格(言語ごと)

11,000円(税込)

バグフィックス等のバージョンアップは原則として無償とさせて頂きます。

お支払方法

11,000円 × ライセンス数 を下記口座へ銀行振込、または、郵便振替による送金をして下さい。

銀行名 支店名(コード) 口座番号 名義
三菱UFJ銀行 新宿支店 (341) 普通 3831891 ユ)パオアットオフィス
PayPay銀行 すずめ支店 (002) 普通 6461359 ユ)パオアットオフィス
郵便口座番号 名義
00150-0-576845 有限会社 パオ・アット・オフィス

※ 振込手数料は利用者様負担でお願い致します。

お支払いの通知と製品の送付

  1. 振り込みが完了した時点で、必ず弊社 WEB サイトの入金連絡フォームから入金のご連絡をお願いいたします。
  2. 弊社では上記連絡を受けて入金確認を行い、PaoZip Studio の製品版ライセンスキーを利用者様へ電子メールにてお送りさせて頂きます。

見積書/納品書/請求書/領収証の発行

見積書/納品書/請求書/領収証の発行は可能でございます。製品サイトでの手続きにより発行いたします。


お問い合わせ

ご質問・ご要望・バグ報告など、お気軽にどうぞ。

有限会社 パオ・アット・オフィス


PaoZip Studio — あなたのコードを、あなたの知的財産を、守ります。


© 2001-2026 有限会社 パオ・アット・オフィス / https://www.pao.ac/