之前介紹過使用cython的方式將python source code 做代碼加密, 但那篇文章使用的方式過於麻煩. 這次要介紹個工具叫做Nuitka, 可將python source code 轉成執行檔或者是靜態函式庫, 使用方式非常容易.
以下是來自官網的介紹:
pip3 install nuitka
PS:
(0) 若不確定是不是有存在這個套件, 可以先使用pip3 search [模組名稱]搜尋
(1) 有興趣的朋友也可以直接到Nuitka Gihub 直接clone 最新的程式碼來使用
(2) 可以使用apt 的方式安裝, 但版本可能較舊
2. 簡單寫一個python source file
nuitka3 --module demo.py
PS: 編譯好後在當前路徑就可以看到demo.so檔案
nuitka2 --standalone demo.py
PS: 編譯好後可以在demo.dist子目錄中看到demo可執行檔
4. 驗證檔案型態及檔案大小
* 查詢檔案型態
file demo
* 查詢檔案大小
ls -lh demo
PS: 檢查檔案後發現, 使用這種編譯方式編譯出來的執行檔非常的大, 這個容量其實跟pyinstaller 所彙編出來的大小不相上下.
5. 使用ipython 驗證編譯後的模組功能
6. 完成
後話:
每種代碼加密的方式或許在實行逆向工程的時候可以增加部分難度, 但目前幾乎沒有解不開的程式碼. 只有複雜度多寡的差別而已. 筆者還是愛用先將python代碼轉成靜態的C, 再使用gcc 彙編成執行檔的作法, 雖然麻煩, 但是檔案相對小很多.
其次, 筆者討厭使用代碼混淆的方式做加密, 因為在實行逆向工程後還是很容易看到裡頭的代碼, 因故就不介紹了.