亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何保護Python代碼?

如何保護Python代碼?

喵喵時光機 2019-06-03 13:21:49
如何保護Python代碼?我正在用Python開發一個軟件,它將分發給我雇主的客戶。我的雇主想用一個時間限制的許可文件來限制軟件的使用。如果我們分發.py文件,甚至.pyc文件,那么很容易(反編譯并)刪除檢查許可文件的代碼。另一個方面是,我的雇主不希望我們的客戶閱讀代碼,擔心代碼可能被偷,或者至少是“新穎的想法”。有什么好辦法來處理這個問題嗎?最好有現成的解決方案。該軟件將在Linux系統上運行(因此我不認為py2exe會起作用)。
查看完整描述

4 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

Python是一種字節碼編譯的解釋語言,很難鎖定.即使您使用了exe包程序,如py2exe,可執行文件的布局是眾所周知的,Python字節碼也很容易理解.

通常在這種情況下,你必須做出權衡。保護代碼到底有多重要?里面是否有真正的秘密(例如對稱加密銀行轉賬的密鑰),還是你只是疑神疑鬼?選擇一種語言,讓你開發最好的產品最快,并對你的新想法有多有價值現實。

如果您決定確實需要安全地強制執行許可證檢查,請將其編寫為一個小的C擴展,這樣許可證檢查代碼就可以額外困難(但不是不可能!)若要進行逆向工程,請將大部分代碼保留在Python中。


查看完整回答
反對 回復 2019-06-03
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

Python不是你需要的工具

您必須使用正確的工具來做正確的事情,而Python的設計并不是為了混淆。相反,在Python中,所有東西都是開放的或易于揭示或修改的,因為這是語言的哲學。

如果你想要一些你看不見的東西,找另一個工具。這并不是一件壞事,重要的是有幾種不同的工具存在于不同的使用中。

混淆真的很難

即使是編譯的程序也可以進行反向工程,所以不要認為您可以完全保護任何代碼。您可以分析混淆PHP,破壞閃存加密密鑰,等等。Windows的新版本每次都會被破解。

有法律要求是個好辦法。

您不能防止某人濫用您的代碼,但您可以很容易地發現,如果有人這樣做。因此,這只是一個偶然的法律問題。

代碼保護被高估了

如今,商業模式傾向于銷售服務而不是產品。你不能復制一項服務,也不能盜用它。也許是時候考慮隨波逐流了.。


查看完整回答
反對 回復 2019-06-03
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

編譯python并分發二進制文件!

明智的想法:

使用Cython努特卡脫落皮膚或者類似于將python編譯成C代碼,然后將應用程序作為python二進制庫(PYD)分發。

這樣,就不會留下Python(字節)代碼,我認為,您已經從普通代碼中得到了任何人(即雇主)所期望的任何合理程度的模糊化。(.NET或Java比這種情況更不安全,因為字節碼沒有混淆,可以相對容易地分解為合理的源)。

Cython與CPython的兼容性越來越強,所以我認為它應該能工作。(我實際上在考慮這個作為我們的產品.。我們已經在構建一些第三方庫,如PYD/dll,所以將我們自己的python代碼作為二進制文件發布對我們來說并不是太大的一步。)

看見這篇博文(不是我寫的)關于如何做這件事的教程。(THX@hithwen)

瘋狂的想法:

您可能會讓Cython為每個模塊分別存儲C文件,然后將它們全部連接起來,并使用大量內聯構建它們。這樣,您的Python模塊就相當單一,很難用普通的工具進行芯片處理。

超越瘋狂:

如果您可以靜態地鏈接到python運行時和所有庫(Dll)并進行優化,您可能能夠構建單個可執行文件。這樣,就很難攔截對python和您使用的任何框架庫的調用。但是,如果使用LGPL代碼,則無法做到這一點。


查看完整回答
反對 回復 2019-06-03
  • 4 回答
  • 0 關注
  • 1073 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號