20

読んだ後、Pythonコードを保護するにはどうすればよいですか?、私はWindowsで本当にシンプルな拡張モジュールを試してみることにしました。以前にLinuxで独自の拡張モジュールをコンパイルしましたが、Windowsでコンパイルするのはこれが初めてです。.dllファイルを取得することを期待していましたが、代わりに.pydファイルを取得しました。ドキュメントによると、それらは同じようなものですが、init[insert-module-name]()機能が必要です。

仮定するのは安全ですか、dllファイルのようにそれらをリバースエンジニアリングするのは難しいです。そうでない場合、.pycファイルから.dllファイルへのスケールでリバースエンジニアリングするための彼らの硬さは何ですか?

4

2 に答える 2

15

すでにご存知のように、これらは特定の構造を持つDLLファイルと同等です。原則として、リバースエンジニアリングも同様に困難であり、マシンコードであり、メタデータをほとんど必要とせず、コードは認識できないほど最適化されている可能性があります。

ただし、必要な構造、および多くの関数がPyObject *sやその他の明確に定義されたCPythonタイプを処理することを知っていると、何らかの効果がある場合があります。アセンブリコードをCにマッピングするのにはあまり役立ちません(どちらかといえば、CPython固有のマクロのために難しくなります)。主にPython型と相互作用するコードは、C構造体を操作する(そして比較的肥大化した)コードとはかなり異なって見えます。これにより、理解がさらに難しくなる可能性があります。または、何も面白くなく、リバースエンジニアがそれをスキップして企業秘密に早く到達できるコードを提供する可能性があります。

これらの懸念は、純粋なCコードである(つまり、Pythonと相互作用しない)コードには当てはまりません。そして、あなたはおそらくそれらをたくさん持っています。したがって、最終的には大きな違いはありません。

于 2012-08-22T14:20:23.877 に答える
2

それらは基本的にネイティブコードです。しかし、すべての関数には面白い引数リストがあるため、各関数が何をするのかを理解するのは難しいかもしれません。難しいとは言わないまでも、dllと同じくらい難しいと思います。

于 2012-08-22T14:17:52.367 に答える