簡體   English   中英

保護在 Python 上運行的 .exe 程序源代碼的最佳方法?

[英]Best way to protect source code of .exe program running on Python?

我正在開發將以 .exe 文件形式分發的專有軟件。 為了使用它,用戶必須使用他們的白名單憑據(用戶名 + 密碼)進行身份驗證。

我遇到的問題是,在我銷售的行業中,有很多“黑客”會嘗試反編譯您的可執行文件,獲取源代碼並將其免費分發給其他人。

為了對抗這些逆向工程嘗試,我嘗試混淆我的代碼並使用各種編譯器,但到目前為止都沒有成功。

我嘗試過的:

  • 使用py2exe編譯器:“黑客”設法在一小時內反編譯了可執行文件。
  • 使用pyinstaller編譯器:與py2exe相同。
  • 使用pyminifier混淆代碼:“黑客”設法對代碼進行反混淆。
  • 使用Oxyry Python Obfuscator :與pyminifier相同。

那些設法對我的程序進行反編譯和反混淆的人解釋說,上述 4 個工具的開源性質意味着它們的算法是眾所周知的,並且有一些解決方案可以對使用這些開源編譯器的程序進行逆向工程和混淆器。

我還沒有嘗試的:

  • 使用Pyarmor來混淆我的代碼。 我聽說它很好,但要 50 美元,所以我想在購買許可證之前確定它是最好的混淆工具。
  • 使用Cython庫為我的程序創建一個 C 包裝器,使其在 C 而不是 Python 中編譯。 由於 C 二進制文件更難閱讀,這將使程序更難反編譯。 但是,我從來沒有用 C 編程,我想知道是否有更好的方法來編譯我的源 Python 代碼,而無需學習 C。

我不會嘗試的:

  • 用 Python 以外的語言完全重寫我的整個程序。 我不擅長其他語言,加上程序本身由 1,000 多行代碼組成,所以我不能僅僅為了使它更難反編譯而完全重寫它。
  • 使程序開源:這是一個營利性軟件,所以我不打算發布專有代碼,感謝您的理解。
  • 使程序成為網絡應用程序:由於我的程序直接與用戶 PC 上的文件交互,因此我無法使其基於網絡,它必須在用戶的 PC 上。

還請注意,如果“黑客”能夠在不訪問源代碼的情況下禁用白名單系統,他將能夠不受限制地將其分發給其他用戶。 因此,我正在尋找一種方法,它不僅會使反編譯程序變得極其困難,而且幾乎不可能干預二進制文件並關閉程序代碼的某些部分。

由於該線程中的人沒有提供任何令人滿意的答案,我將解釋我為保護程序所做的工作。 正如我之前提到的,我的目標不是創建一個“不可破解”的程序,而是一個足夠安全以阻止業余愛好者的程序。

我在其中一個逆向工程論壇上得到了幫助,所以向這些人致敬!

首先,我使用Nuitka將 .py 文件轉換為基於 C 的獨立可執行文件。 然后,我通過VMProtect傳遞生成的 .exe 文件來混淆二進制文件。

我已經在一些 CS 畢業生身上測試過,他們無法破解或反混淆程序,所以這對我來說已經足夠了。

PS 那些說“不可能”或“你的商業模式錯誤”的人,請不要發表你的意見,除非你有逆向工程經驗,謝謝:)

我想我會勇敢地發布答案:沒有任何技術手段可以防止在最終用戶機器上運行的軟件被破解。

你也許可以讓它變得更困難,但既然你已經說過,在這個市場上,人們總是更喜歡破解軟件而不是合法軟件,這種情況你基本上沒有獲勝的希望:如果你已經確定了盜版,他們每次都會贏。

所以:你不能; 放棄

對不起 :-(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM