====================================
ダウンロード・サービスご利用者各位
====================================
　毎度，小誌ご愛読を賜り，誠にありがとうございます．
　このたびはダウンロード・サービスをご利用いただき，誠にありがとうございます．
　筆者のご厚意により，本記事の関連データをこのアーカイブに収録しました．

================
概要
================
　このアーカイブには，表題の記事の中で作成したプログラム・ファイルが収録されています．
　詳しくは該当記事を参照してください．
　アーカイブは，ZIP形式によって圧縮されています．

================
動作確認
================
　プログラムは筆者の元で動作を確認済みです．

=================
アーカイブの内容
=================
　ZIPファイルの内容は下記の通りです。
　・developディレクトリ
　　開発環境で使用する難読化ツール
　　- PyProtectedCode.py　　　　難読化ツール本体
　　- MakeProtectedCode.exe　　 難読化ツール本体から起動される暗号化プログラム
　・sampleディレクトリ
　　- hello_world.py　　　　　　本誌で紹介したサンプルスクリプト
　・sourceディレクトリ
　　- Makefile　　　　　　　　　メイクファイル
　　- MakeProtectedCode.c　　　 暗号化プログラム
　　- ProtectedCode.h　　　　 　暗号化・復号プログラム共通のヘッダファイル
　　- PyProtectedCode.c　　　 　復号プログラム
　　- PyProtectedCodeWrap.c　 　復号プログラムをPythonから呼び出すためのインタフェース
　・stageディレクトリ
　　実行環境に必要な復号プログラム
　　- PyProtectedCode.so　　　　復号プログラム（ライブラリ）

=================
プログラムのビルド方法
=================
　ビルドには、Python開発者用パッケージのインストールが必要です。
　python3-dev   (Debian系の場合)
　python3-devel (Redhat系の場合)

　環境に合わせてメイクファイルの下記を修正ください。
　/usr/include/python3.8/
　指定するディレクトリの場所は、下記コマンドで確認できます。
　$ python3-config --cflags
　Python3.7の環境では、上記により3.7に対応できます。

　（Windowsへの対応方法）
　MicrosoftのVisual Studioなどを使用してビルドすれば、Windows上で動作する難読化ツール、暗号プログラム
　を作成できます。下記の注意事項があります。
　・暗号プログラム（ライブラリ）の拡張子は、 pyd とします。
　・リンクするライブラリに下記を指定する必要があります。
　　<Pythonインストールフォルダー>\libs\python[xx].lib
  　[xx]:バージョン番号
　・ビルドした暗号プログラムは、リンクしたライブラリのPythonバージョンでのみ動作します。

=================
カスタマイズ
=================
　・鍵の変更
　　ProtectedCode.h の下記を変更してください。
　　#define KEY_CODE "Interface"
        　            ~~~~~~~~~
　・バージョン3.7の対応
　　プログラムのビルド方法を参照ください。
　・3.6への対応
　　3.6は、バイトコードのヘッダーのサイズが12バイトです。
　　下記を修正します。
　　●MakeProtectedCode.c
    16行目
　　  （修正前）#define HEADER_SIZE_37 16
　　　（修正後）#define HEADER_SIZE_37 12
　　26行目
　　　（修正前）if (v_major != 3 || v_minor < 7)
　　　（修正後）if (v_major != 3 || v_minor < 6)
　　●PyProtectedCode.py
　　85行目
　　　（修正前）return sys.version_info[0] == 3 and sys.version_info[1] >= 7
　　　（修正後）return sys.version_info[0] == 3 and sys.version_info[1] >= 6

==========
免責事項
==========
　プログラムの動作保証は致しません．
　また，プログラムを使用することによって生じたいかなる損害に対して，CQ出版および筆者は責任を負いません．

===========
著作権
===========
　収録したプログラム，データおよびドキュメントなどの著作権は，各著作権者（すなわち筆者）にあります．
　Copyright (C) 2022 Kenji Miyazawa, Shinji Hashimoto, Takashi Matsuki, Masato Nakagawa, Seiyu Sakamoto
