對Python源碼加密及反編譯前後對比
- 2020 年 1 月 9 日
- 筆記
關於python的加密
目前軟體開發商對 Python 加密時可能會有兩種形式,一種是對python轉成的exe進行
保護,另一種是直接對.py或者.pyc文件進行保護,下面將列舉兩種形式的保護流程。
1、 對 python轉exe加殼
下載最新版加殼工具,使用加殼工具直接對demo.exe進行加殼操作
2、對.py/.pyc加密
第一步,使用加殼工具對 python 安裝目錄下的 python.exe 進行加殼,將 python.exe 拖入到加殼工具 VirboxProtector 中,配置後直接點擊加殼。
第二步,對.py/.pyc 進行加密,使用 DSProtector 對.py/.pyc 進行保護。
安全技術:
l 虛擬機外殼:精銳5的外殼保護工具,創新性的引入了預分析和自動優化引擎,有效的解決了虛擬化保護程式碼時的安全性和性能平衡問題。
l 碎片程式碼執行:利用自身成熟的外殼中的程式碼提取技術,抽取大量、大段程式碼,加密混淆後在安全環境中執行,最大程度上減少加密鎖底層技術和功能的依賴,同時大量大段地移植又保證了更高的安全性。
l Virbox加密編譯引擎:集編譯、混淆等安全功能於一身,由於在編譯階段介入,可優化空間是普遍虛擬化技術無法比擬的,對程式碼、變數的混淆程度也有了根本的提升。
l 反黑引擎:內置R0級核心態反黑引擎,基於***行為特徵 的(反黑資料庫)反制手段。精準打擊調試、注入、記憶體修改等***行為,由被動挨打到主動防護。
加密效果:
未經深思保護#

生成的dis文件可以用 notepad++ 查看出源碼

解決方案#
由上圖可看出,沒有經過加密的.pyc文件可以很輕易的通過Easy Python Decompiler v1.3.2工具反編譯出源碼 ,深思對.pyc保護的方式是通過DS Protector工具進行保護 ,防止源碼被反編譯 。
DS Protector是北京深思數盾自主研發的程式數據保護工具 ,它彌補了加殼VirboxProtector的功能, Virbox Protector是對程式編譯後的二進位程式碼行保護,配合DS Protector數據保護工具就形成了程式碼,數據三位一體的防護。
而對於 python 開發的程式保護方式主要是對 開發的程式保護方式主要是對 pyc 文件進行加密,可以保護主要程式碼邏輯不被反編譯,從而最大程度保護軟體開發者的合法權益。
通過 Virbox Protector先對解析文件的python.exe進行加密,加密時打開 DS Protector 插件功能,然後通過DS Protector對pyc文件進行加密,並使用殼生成的配置將後文件進行加密後的python.exe pyc文件和授權三者關聯起來。
經深思保護#
加密後使用 Easy Python Decompiler v1.3.2工具反編譯 pyc文件失敗。

對可執行的exe進行保護#
未經深思保護#
通過打包工具py2exe和跨平台的PyInstaller工具都可以將 python 腳本打包成可執行文件,打包後的可執行文件不依賴 python,可以直接在沒裝python 的機器上運行。 註:不同的打包方式原理不同,源碼存放位置也不同,所以需要保護具體模組也不同。
使用 Py2exe打包後,只需使用unpy2exe-master,將exe文件放入待反編譯的程式目錄下,執行 python unpy2XXX.exe件,反編譯為 pyc pyc文件;
使用 PyInstaller打包後,將pyinstxtractor.py 放入待反編譯的程式目錄下,執行 pyinstxtractorXXX.exe,會對應的生成一個文件夾,在文件夾中找到名字和程式相同pyc文件。 然後使用 Easy Python Decompiler v1.3.2工具反編譯 pyc 文件,成功後同目錄下生成一個帶後綴dis的文件,生成的dis文件可以用notepad++查看出源碼。





解決方案#
python腳本打包的可執行文件,可以直接使用 Virbox Protector 對exe 程式進行加殼保護,加殼軟體中內置了虛擬機、碎片程式碼執行混淆等多種安全技術,能有效阻止 exe 程式被反編譯,無法dump記憶體。 註:不同的打包方式原理不同,源碼存放位置也不同所以需要保護的具體模快也不同
經深思保護:#
加密之後再嘗試解壓 XXX.exe 失敗 ,已經無法進行反編譯,使用常規工具也是無法分析的。

加密之後再嘗試解壓log322.exe失敗,已經無法進行反編譯,使用常規反編譯工具也是無法進行分析的。