2009-05-26 87 views
6

我在這裏看到很多關於複製保護的討論。我更感興趣的是防逆轉和知識產權保護。C++知識產權保護/反轉

有些解決方案如Safenet和HASP聲稱加密二進制文件,但是這些文件在使用有效密鑰時是否防止反轉?

什麼樣的策略可以用來混淆代碼和甩開反向器?那裏有沒有像樣的商業實現?

我知道大多數保護方案都可以被破解,但是這裏的目標是延遲逆轉有問題的軟件的能力,並且如果另一家公司試圖實施這些方法會使其更加明目張膽。

+0

我認爲「反轉」意味着「反向工程」(又名反編譯)? – StaxMan 2009-05-26 21:31:45

回答

7

有如SafeNet公司和HASP聲稱加密二進制的解決方案,但這些保護與有效的密鑰使用時,倒車?

不是。一個專門的反向工程師可以解密它,因爲操作系統必須能夠解密它才能運行它。

個人而言,我不會擔心。無可否認,我對您的業務一無所知,但在我看來,與Java或.NET等語言相比,逆向工程C++相對困難。這將是足夠的保護,看到除了最堅決的攻擊者之外的所有人。

然而,一個堅定的攻擊者總是能夠得到過去不管你實現,因爲在某些時候它必須變成一堆CPU指令並執行。你無法阻止他們閱讀。

但是這是一個lot努力爲一個非平凡的程序。看到你的程序在行動中(或者甚至僅僅來自你的營銷材料),看起來更有可能有人會創建一個競爭對手。這可能比試圖逆向工程更容易,並且避免任何潛在的法律問題。這不是你可以(或應該)阻止的事情。

6

多年來僱用了我一起工作的人,他們會完全混淆源代碼!

+3

對源代碼進行模糊處理對於逆向工程設計的難度並不大。這是因爲編譯器可能會優化大多數功能相當的混淆。 – 2009-05-26 21:39:18

+0

@Eduard - Gabriel Munteanu,與我合作的人可能會混淆最好的編譯器! – 2009-05-26 21:43:39

1

它幾乎不可能以這樣的方式,這將是完全以無法進行反向工程忠實地混淆代碼。

如果有可能,那麼計算機病毒絕對是不可阻擋的,沒有人能夠知道他們是如何工作的以及他們做了什麼。在我們能夠運行加密的代碼之前,加密在某些時候可以被解密並且「可讀」(比如,可以讀取機器代碼的人),然後才能由cpu執行加密。

現在考慮到這一點,您可以放心地認爲廉價的保護措施將抵禦廉價的黑客。以「不好」的價格閱讀便宜,與您支付的價格無關。偉大的保護將抵禦偉大的黑客,但最終的保護不存在。

通常,您的解決方案越商業化,攻擊媒介越「衆所周知」。

另外,請認識到諸如加密應用程序等事情意味着額外的開銷和煩人的用戶。 USB加密狗也會讓用戶惱火,因爲他們必須隨身攜帶並花費大量時間進行更換。所以這也成爲你快樂的一個折衷,即你已經受到保護,抵禦少數黑客和你的所有客戶,這些客戶必須承擔你的保護方法所帶來的障礙。

1

上有兩個主要的方面:

  1. 混淆 - 通常是指重命名和剝離符號。有些還可能通過等效的代碼轉換重新排列代碼。可執行程序包也通常使用反調試邏輯。
  2. 低級保護 - 這意味着內核或硬件級別的編程。可以在像索尼,nProtect,CD/DVD複製保護等rootkits中看到。
1

當然,你可以去各種聰明的長度以試圖擊敗/延遲調試器和逆向工程。正如其他人所說的那樣,你不會阻止一個堅定的攻擊者,一段時間...一旦你的應用被黑客攻擊,你可以期望它可以免費在線。您所需的保護方案的

幽州兩個目標:

1)使其難以扭轉工程師。 2)讓它有人扯掉你。

對於#1,任何混淆/調試檢測器/等方案將具有至少一定的影響。坦率地說,然而,已經深入研究編譯器輸出的工程師的比例正在縮減,這意味着編譯的C/C++代碼被混淆了許多代碼。

#2,除非你有一個具體的法律保護算法/過程,你要保護,一旦應用程序被逆向工程你擊沉。如果它受法律保護,您已經發布了受保護的詳細信息,那麼您想獲得什麼?

在一般情況下,我認爲這是「雙贏」之苦的方式和你最好的「業務方面的」固定這一點 - 那就是,讓你的應用程序訂閱,或負責維護/支持......但具體情況顯然取決於你的情況。

1

您需要設置一個限制,以保護您的代碼。看看市場和你的解決方案。你永遠不會保證你的產品100%,所以你應該評估什麼方法會給你最好的保護。在大多數情況下,簡單的許可證密鑰並且不需要混淆就足夠了。

延遲逆向工程只會「推遲」不可避免的。您需要關注的是阻止最初企圖侵犯版權/知識產權的行爲。良好的法律條款和條件的通知關於頁,或大膽的版權聲明警告說,任何企圖扭轉工程師代碼將導致通過脊柱一鎬上......

大多數人都背過嘗試如果有機會,他們將被起訴一些法律行動,以撕掉一些東西。

我們使用SafeNet,我們的客戶將其視爲'官方'保護。這本身就是一種很好的威懾力量。