Pythonコードを難読化するのに役立つツールを知っていますか?
7 に答える
あなたの問題空間は指定されていません。これはコマンドライン アプリ用ですか? このコードはライブラリとして使用されることになっていますか?
他の 2 つの回答に加えて、コードをバイナリに埋め込むことができます。開始したら、コードをデコードし、文字列を評価します。これは、共有ライブラリ拡張機能でも機能します。バイト コードでも同じことができると思いますが、Py_EvalCode を呼び出すほど簡単ではありません。
py2exe または freeze は、コードを実行可能ファイルに変換する他のソリューションです。バイナリにコードが含まれているだけで、深刻な難読化は行われていませんが、それでも .py ファイルを開くよりは困難です。
Python に似た Cython でコードを記述し、.so として使用するために C で Python 拡張ファイルを記述できます。これはおそらく、これらの中でリバース エンジニアリングを行うのが最も難しく、それでも開発用の高水準言語を提供するものです。
すべてのソリューションと同様に、それらはすべてハッキング可能です。どれくらい難しくしたいですか?
実際、基本的に Python を C++ に変換し、静的にリンクされたバイナリ ファイルを作成する非常に優れたプロジェクトを見つけました。
これをチェックしてください:http ://www.nuitka.net/
多くの場合、.py ソース ファイルの代わりに、バイト コンパイルされた .pyc ファイルを出荷できます。これにより、ある程度の難読化が実現します。pyobfuscate README が示唆するように、これには制限があります。ただし、2 つのアプローチを組み合わせることができる場合があります。
Pythonの標準ライブラリにはcompileall.pyが含まれています。これをディレクトリで実行すると、すべてのソースファイルに対して.pycファイルが生成されます。.pycファイルには、バイトコードとdocstringのみが含まれ、すべてのコメントが削除されます。次に、このディレクトリをコピーrm -rf $(find . -name .py)
してから、元のソースファイルを削除するような操作を実行できます。
最善の策は、実験的な Python-to-C++ コンパイラであるShed Skinを使用してコンパイルすることです。
難読化は行いませんが、このPython レシピは、コメントの削除など、Python コードのサイズを最小限に抑えるのに非常に効果的です。