91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

防止python反編譯的方法

發布時間:2020-08-14 09:56:48 來源:億速云 閱讀:2543 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關防止python反編譯的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

如何防止python反編譯?下面給大家具體介紹:

python學習網,大量的免費python視頻教程,歡迎在線學習!

此處用到的工具:

exe反編譯工具:pyinstxtractor.py:點擊此處去下載

pyc反編譯工具:Easy Python Decompiler或者在線反編譯pyc。

將pyinstxtractor.py放到exe文件相同目錄,執行以下cmd命令:

python pyinstxtractor.py main.exe

如果成功執行,將在同目錄下生成新的反編譯文件夾——main.exe_extracted,如下圖:

防止python反編譯的方法

同時,我們可以在下圖圈起來的路徑下,找到當時我們exe引入的mylib模塊,其為pyc格式。

防止python反編譯的方法

pyc格式的文件,反編譯起來就非常簡單了。用前文提供的工具或者網上找個在線的分分鐘反編譯出來,我們看下反編譯的結果:

#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
def test(num):
    print('num={n}, {n}^3={n2}'.format(n=num, n2=num ** 3))
 
if __name__ == '__main__':
    while None:
        try:
            num = input(
                '\xe6\x8f\x90\xe7\xa4\xba\xef\xbc\x9a\xe8\xbe\x93\xe5\x85\xa5"q"\xe9\x80\x80\xe5\x87
                \xba\xe7\xa8\x8b\xe5\xba\x8f\xe3\x80\x82\n\xe8\xaf\xb7\xe8\xbe\x93\xe5\x85\xa5\xe4
                \xb8\x80\xe4\xb8\xaa\xe6\x95\xb0\xe5\xad\x97\xef\xbc\x9a')
            if num.lower() == 'q':
                break
            num = float(num)
            print(num)
        except:
            None
            None
            None
            print(
                '\xe8\xbe\x93\xe5\x85\xa5\xe7\x9a\x84\xe6\x95\xb0\xe5\xad\x97\xe4\xb8\x8d\xe6\xad
                \xa3\xe7\xa1\xae\xef\xbc\x81')
            continue

可以看到,基本上完美的把源碼反編譯出來了。其中涉及到中文的地方,會因為編碼問題有所改變。但是非中文部分,幾乎一模一樣。

將腳本編譯為pyd以防止反編譯

如何解決呢,可以考慮將模塊py文件編譯為動態鏈接庫,這樣破解難度將大大增加。其中,在python里,pyd格式即動態鏈接庫。使用cython即可編譯,如果是anaconda是自帶,python有的可能不帶cython,安裝即可:

pip install Cython

我們在main.py所在的文件夾新建py文件,在此處我命名為build_pyd.py,其內容如下:

# -*- coding: utf-8 -*-
from distutils.core import setup
from Cython.Build import cythonize
 
setup(
  name = 'any words.....',
  ext_modules = cythonize(["mylib.py",]),
)

然后執行以下cmd命令:

python build_pyd.py build_ext --inplace

運行過程及生成結果如下圖,其中紅框的pyd文件即編譯好了。因為我是64位的系統和python,所以會生成amd64后綴,我們把這個刪掉重命名為mylib.pyd即可。

注:當同時存在mylib.pyd和mylib.py時,引入優先級是pyd>py,所以不用移除py文件,默認引入時就是pyd。

防止python反編譯的方法

此時,我們刪除build、disk文件夾,重復步驟二,再次編譯為exe即可。

注意:編譯需要相關的VC環境,因為python3.5是基于 VS14版本的,所以我這里安裝的也是。不安裝是無法編譯的。

可以驗證一下:

再次反編譯main.exe后,原來的路徑E:\t\dist\main.exe_extracted\out00-PYZ.pyz_extracted之下,已經找不到mylib.pyc了。

因為他已經不是可以直接反編譯出來的文件了。

那么他在哪呢,他是作為pyd存在于上層目錄中了。如下圖:

防止python反編譯的方法

pyd的反編譯難度是相當高的,至此,就大功告成了!

感謝各位的閱讀!關于防止python反編譯的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴南区| 胶州市| 宁乡县| 惠来县| 涿州市| 陆丰市| 嵊泗县| 开封市| 广饶县| 翼城县| 海丰县| 无为县| 永平县| 沙河市| 秦安县| 武隆县| 西和县| 河津市| 莱州市| 毕节市| 大竹县| 松溪县| 内丘县| 乌兰察布市| 永清县| 邢台市| 富平县| 陆丰市| 南陵县| 丹阳市| 丹凤县| 永丰县| 得荣县| 行唐县| 凤庆县| 扎鲁特旗| 洛南县| 永康市| 东辽县| 蒲江县| 白玉县|