実際、Dropbox は非常にうまくやっており、Python で作成されたデスクトップ アプリケーションを保護することができました。私はこれについて多くのことを調査しましたが、難読化よりも優れた解決策はありません。難読化はあまり安全な方法ではなく、コードがどこかにアップロードされているのを見ることになります。
Giovanni Bajo (PyInstaller の創設者)によるセッションを聞いたところ、 Dropbox は次のように機能すると彼は言いました。
- CPythonのインタープリターを再コンパイルすることによるバイトコードスクランブリング。これにより、標準のCPythonインタープリターはそれを実行できなくなり、再コンパイルされたcpythonインタープリターのみが実行されます。
- あなたがする必要があるのは、下の数字をシャッフルすることだけです
define loadup 8
。
私は Python のソース コードを読んだことがないので、上記の言葉を完全に理解しているとは言えません。
専門家の声を聞く必要があります。また、再コンパイル後に、PyInstaller などの利用可能なツールを使用してアプリケーションをパッケージ化できるようになるとしたら?
アップデート:
Dropbox がこの種の難読化/変異をどのように行っているかについて調査したところ、次のことがわかりました。
Hagen Fritschによると、彼らはそれを 2 段階で行います。
それらは、各 Python モジュールのコード オブジェクトのいくつかの値によってシードされた RNG と共に TEA 暗号を使用します。彼らはそれに応じて通訳を調整しました。
a) モジュールを復号化し、
b) 復号化されたコード オブジェクトへのアクセスを防止します。
これは、ドロップボックスにすべてを復号化させ、組み込みのマーシャラーを使用してモジュールをダンプさせる簡単な方法でした。
使用される別のトリックは、オペコードの手動スクランブルです。残念ながら、これは半自動的にしか修正できなかったため、彼らの単一アルファベット置換暗号は、しばらくの間勝つという点で非常に効果的であることが証明されました.
私はまだこれがどのように行われるかについてのより多くの洞察を望んでいます.