コントリビュート

このドキュメントを編集

ドキュメントを翻訳するか、お使いのコンピューターでプロジェクト全体を開きます。

作業内容を送信するまで、何も公開されません。

難読化ビルド

Garble で Wails アプリケーションをビルドし、ソースコードをリバースエンジニアリングから保護します

Garble は、go build の代わりに使用し、シンボル名の変更、定数の難読化、生成されるバイナリからのデバッグ情報の削除を行う Go ビルドツールです。Wails v3 では、2 つの新しいコマンドによって Garble を標準でサポートしています。

前提条件

  • Go 1.26.2 以降 — Garble v0.16.0 に必要です
  • Garble v0.16.0
bash
go install mvdan.cc/garble@v0.16.0

必須:サービス型に JSON タグを追加する

バインドされたサービスメソッドが返す、または受け取るすべての構造体では、エクスポートされた各フィールドに明示的な JSON タグを付ける必要があります:

go
// Without tags — breaks under Garble
type OrderSummary struct {
    ID        int
    Total     float64
    LineItems []LineItem
}

// With tags — safe under Garble
type OrderSummary struct {
    ID        int       `json:"id"`
    Total     float64   `json:"total"`
    LineItems []LineItem `json:"lineItems"`
}

Wails 独自の型(Screen、Rect、Point、Size、EnvironmentInfo、OSInfo、Capabilities)には、すでにタグが付いています。タグを付ける必要があるのは、独自に定義した型だけです。

難読化してビルドする

1

安定 ID ファイルを生成する

バインドされたサービスメソッドを追加、名前変更、または削除するたびに、次のコマンドを実行してください:

bash
wails3 generate bindings -obfuscated

これにより、メインパッケージのディレクトリに wails_obfuscated.gen.go が作成されます。このファイルをコミットしてください。

2

Garble でビルドする

bash
wails3 build --obfuscated

難読化されたバインディングを使用してアプリケーションをビルドします。

Garble に追加フラグを渡す

オプションを garble に直接渡すには、--garbleargs を使用します:

bash
# Obfuscate string literals and reduce binary size
wails3 build --obfuscated --garbleargs "-literals -tiny"

# Reproducible output — same seed produces the same binary
wails3 build --obfuscated --garbleargs "-seed=deadbeef"

サポートされているフラグの全一覧については、Garble のドキュメントを参照してください。

高度な設定:ID ファイルを別のパッケージに書き込む

デフォルトでは、wails_obfuscated.gen.go は main パッケージと同じ場所に書き込まれます。プロジェクトで、main からインポートされるサブパッケージにサービスを配置している場合は、-obfuscated-output を使用して、そのサブパッケージにファイルを書き込むこともできます:

bash
wails3 generate bindings -obfuscated -obfuscated-output ./internal/services

トラブルシューティング

garble: command not found

Garble がインストールされていないか、$(go env GOPATH)/bin が PATH に含まれていません。

bash
go install mvdan.cc/garble@v0.16.0
export PATH="$PATH:$(go env GOPATH)/bin"

フロントエンドが誤ったフィールド値または空のフィールド値を受け取る

サービスの戻り値の型に json:"..." タグがありません。バインドされたメソッドが返す各構造体を確認し、エクスポートされたすべてのフィールドに明示的なタグを追加してください。

ブラウザーコンソールに binding not found エラーが表示される

安定 ID ファイルが存在しないか、コンパイルに含まれていません。以下を確認してください:

  • wails_obfuscated.gen.go がメインパッケージのディレクトリ(または -obfuscated-output に渡したディレクトリ)に存在する
  • wails_obfuscated ビルドタグを追加する wails3 build --obfuscated を実行した
  • -obfuscated-output を使用した場合、出力先パッケージが main からインポートされている

Windows Defender がビルドをウイルスとして検出する

Garble で難読化された Go バイナリは、デバッグシンボルがなく、パックされた実行可能ファイルに類似しているため、ビルド中に Windows Defender のヒューリスティック検出によって脅威と判定されます。ビルドは次のエラーで失敗します:

text
open C:\Users\...\AppData\Local\Temp\go-build...\a.out.exe: The file contains a virus or potentially unwanted software.

一時ディレクトリ(Go が中間ビルド成果物を書き込む場所)とプロジェクトディレクトリを Defender の除外リストに追加してください:

PowerShell
Add-MpPreference -ExclusionPath "$env:TEMP"
Add-MpPreference -ExclusionPath "C:\path\to\your\project"

これらの除外設定は指定したパスにのみ適用され、Defender をシステム全体で無効にするものではありません。

unsupported Go version によりビルドが失敗する

Garble v0.16.0 には Go 1.26.2 以降が必要です。Go をアップグレードするか、Garble のリリースページで、お使いのツールチェーンと互換性のあるバージョンを確認してください。

ページを編集

最終更新: