【玩】Pyinstaller 加密打包成可執行文件

MedusaSorcerer的博客


瞭解 Python 的都知道 Pyinstaller 能夠將 .py 文件打包成 windows 下可執行的 .exe 文件, 可是在咱們不想讓他人反編譯獲取源碼的時候就顯得無能爲力, 此時咱們能夠了解 .pdy 文件。python

PYD

pyc 是二進制文件, 是由 Python 編譯器進行編譯後生成的文件, 加載速度快。pyo 是優化編譯後的二進制文件, 能夠經過 python -O file.py 生成。pyd 則是 Python 的動態連接庫, 由其餘語言編寫。windows

.pyd 可不能夠反編譯呢?函數

這是文檔上的一段描述, .pyd 由 C 或者 C++ 編譯組成, 至於它是否徹底不可反編譯, 我相信是不可能的, 僅是加大了反編譯的難度。優化

打包

你須要安裝 Cython 以及 pyinstaller 兩個擴展包做爲依賴。 Docsui

  • 將主要代理編寫至 main_code.py 文件中, 建議提供入口函數 main()
  • 編寫 build.py 代理並鍵入如下內容:
    from distutils.core import setup
    
    from Cython.Build import cythonize
    
    setup(
        name='隨你寫什麼',
        ext_modules=cythonize([
            "main_code.py",  # 你的主要代碼封裝文件名
        ])
    )
    複製代碼
  • 執行 python3 build.py build_ext --inplace 生成 .pyd 文件
  • 重命名生成的 .pydmain_code.pyd
  • 新建執行腳本文件 run.py 並鍵入如下內容:
    from main_code import *
    
    if __name__ == '__main__':
    
        main()
    複製代碼
    此時你能夠嘗試修改 main_code.py 成別的名字, 並運行 run.py 文件, 你會發現運行正常。
  • 執行 pyinstaller -D -i xxx.ico -w run.py

最後你會發現你的代碼中沒有 .pyc 的主要邏輯代碼。spa

說明

爲了使用打包的時候使用 -D 而不使用 -F代理

在生成惟一 .exe 文件後執行速度過慢, 固然我僅僅是推薦, 你能夠使用任何自定義的方式編譯你想要的效果。code



點個讚唄~cdn

相關文章
相關標籤/搜索