![見出し画像](https://assets.st-note.com/production/uploads/images/145419179/rectangle_large_type_2_db27d48615be16fee91ed0d42f6fb5e2.png?width=800)
Pythonとソースコードと難読化
PythonとAuto Hot Keyを使ったWindowsアプリ開発のための検証作業の日記。ほぼ検証は終了したので、開発自体はできると判断した。
最近ストレスのせいか長文化が進んでいるので、ここでは意図的に「ChatGPTの回答」みたいな書式で、
見出し
要約
箇条書
まとめ
みたいな感じでまとめてみたいと思う。
というかChatGPTの回答って、書式が定型化しているからそのままコピペすると一発で「ChatGPTだな」ってわかるよねw
別にChatGPTを模倣するわけじゃなくて、コンパクトに要点を列記するとあのスタイルになると思うので、そのスタイルを模倣してみようと思う。
(約 2,800文字の記事です。)
Python、色々使えるね
この動作検証が昨日で終わったので、私にとってはプログラミングはPythonを中心に据えることにした。
PythonからZscriptを呼び出せた
Python上でAHKを読み込んで実行できた
Pythonソースコード上から直接AHKソースを記入&実行できた
PythonからZscriptを利用可能なことを昨日検証できた。Zbrushプラグイン開発では情報処理やファイル処理についてはできるだけPythonで処理することにし、Zbrushの制御についてだけZscriptを使うことにした。PythonとZscriptとでデータのやりとりにちょっとオーバーヘッドが発生するが、目をつむることにした。それよりもGUIの利便性とソースコードのメンテナンス性と拡張性を優先することにした。
同様にPythonからAHKも実行可能なことを検証した。Pythonのソースコード内でAHKソースを書くこともできるし、AHKファイルを読み込んで実行させることもどちらでもOK。だが実行速度を考えればAHKソースをPython内部に埋め込む方が早い。ファイルの読み込み分の動作時間を節約できるため。また他の理由でそうせざるを得ないのだが、早いほうがいいことは何事においてもその通りなので。
ソースコードと可読性と著作権
ソースコードは立派な知的財産、資産・資源なのだ。そうそう簡単に公開したくはないってのが開発者の本音だ。
PyInstallerのexeは簡単にデコンパイルできる
AHKのexeも同様
GPL v3.0ではソフト利用者がソースコードを請求できる
ソース非公開ならば非GPLであることが必要
PyArmorでソースコードを難読化できる
PythonだとかBlenderだとか、オープンソースなソフトを触っていると一度は聞いたことがあるだろう「GPL」という単語。今はほとんどがGPL v3.0。古いものがGPL v2.0。GPL、これは実は結構怖いことが書かれているのだが、知らない人は知らない。ソフトを使う側であればそれでいい。だが開発する側に回るとGPLは結構怖い。よく読んで使うべし。AHKの使い方にも気を配る必要がある。
詳細はGPL v2.0, v3.0のドキュメントを読んでください。よく理解して使う必要があります。私も安易に「これはできる、これはできない」と言うつもりはありませんし、言ったとしても弁護士でもないので法的効力はありません。GPLについてはそれだけシビアな世界の話になります。
ただ一言だけ言うとすれば、GPLは商用利用OKです。これは間違いない。
ソースコードは立派な知的財産、資産・資源なのだ。そうそう簡単に公開したくはないってのが開発者の本音だ。
だがPythonの場合、有名どころのPyInstallerでexe化しても簡単にデコンパイルできる。ほぼ元のソースコードを復元できる。そのためのツールも存在する。AHKについても然り。なので普通にexe化しただけではソースコードの秘匿ができない。ザル状態。自分のテストexeを眺めてみて、色々困る情報がしれっとexeファイルに含まれていて驚いた。公開などとんでもない😱ファイルパスを変更しないと。
もちろんデコンパイルやリバースエンジニアリングについては永遠のいたちごっこであり、ライセンス上でそれを禁じたとしても技術的には実行が可能だ。あとは時間とエネルギーと、その先に得られるものとの天秤の結果、多くの人にとっては利益が低いものにできるかどうか、が問題。
ソースコードの難読化
なので今後の成果物を守るためにもソースコードの難読化が必要になった。難読化されたソースコードからexeファイルを生成できれば、ちょっとやそっとでは元のソースコードを復元できない。できるにしてもかなり手間がかかるのでそのメリットが小さいので、やる気をそぐことができる。
難読化は手間暇かければソースコードの解読が可能
解読不可能ではなくて「解読に手間がかかるようにする」ことが難読化
PyArmorくらいしか見つからず
効果はあった
ただしPython界隈ではオープンソースが主流なのか、ソースコードの秘匿に関心が薄いのか、探してみても商用レベルでまともに使えそうなツールがPyArmorくらいしか見つからず。色々半日かけて試したが結局これ一択という現状。ただし有名ツールだけあって簡単に難読化ができる。カジュアルにソースコードを復元、ということはかなり難しいだろう。これが割と重要。
これによってPythonコードもAHKコードも、PyArmor経由でexe化すれば割と中程度の強度のソースの難読化が可能。
(ガチのハッカーにかかれば身も蓋もないけどね😅)
昨日の試行錯誤でPyArmorが実用レベルだと判断したのでこれが決定打。これで安心してPythonを開発の中心言語にできる。Python経由であればセキュリティ・ゼロのザルのahk2exeではなくてPyArmorで難読化したAHK実行ツールを実現できる。なのでAHK単体のexeファイルを利用することはなしという方針が決まった。
というわけでとりとめもなくここ2, 3日の活動報告でした。
今回の創作活動は約1時間30分(累積 約3,851時間)
(1,102回目のnote更新)
筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonでお買物をするとその購入額の1~3%ほどのお小遣いが私に寄付されます。誰が何を買ったという情報は私には通知されませんのでご安心下さい😊 以下のリンクを経由して頂ければ紹介商品以外のご購入でもOKですよ~。
読んでくれてありがとう。気長にマイペースに書いてます。この出会いに感謝😊