.NET程式員應該理解的幾種軟體保護方法 辛苦開發的程式需要建立有效保護機制

來源:互聯網
上載者:User
文章目錄
  • 方法一  以Red Gate的SQL Toolbet為代表的 需要串連到伺服器端進行驗證
  • 方法二 企業管理軟體類 ERP 許可授權檔案
  • 方法三 序號註冊碼
  • 方法四  license to license2 雙重許可驗證
  • 方法五  微軟大量啟用工具

使用.NET開發程式,因為中繼資料存在於程式集中,可以輕易的被反編譯成原始碼。在分發給客戶之間,會應用加密軟體混淆程式集,這樣讓程式集被反編譯時間,

理解起來困難一些,增加一點破解難度。以下列舉我常見到的幾種保護方法,可應用於實際的產品保護。

方法一  以Red Gate的SQL Toolbet為代表的 需要串連到伺服器端進行驗證

Red Gate開發的SQL系列工具非常有名氣,比如著名的SQL Prompt,可以在SQL Server Management Studio實現智能提示功能。每當有新的可用的版本

出現(希望你可以理解我說的意思),它成為必收藏的工具之一。它的保護機制比較典型,客戶下載並安裝試用版軟體,超過試用期限後,需要串連到

伺服器進行啟用驗證,否則退出程式。

這種情況下網路連接必須可用。然而由於種種原因,有些機器是不能串連到互連網上的,或是因為程式開發伺服器,資料和資料比較寶貴,或是因為開發人員

不允許上網,沒有網路防問許可權。這種情況下,它也提供了一種驗證機制,可以將驗證資訊打包,通過郵件或是即時通訊軟體發送到官方,

擷取一個類似於註冊碼的字串,如所示

這兩種方式配合起來,這種類型的驗證保護機制就做的相對完善,也比較人性化。

 

方法二 企業管理軟體類 ERP 許可授權檔案

在企業管理軟體中,經常要涉及軟體許可(license)。無論是按網站收費(用友),還是按功能收費(金蝶),或是按使用者用量收費, 這種方法的靈活性高。

使用者從官方網站或是CD盤中得到的是正式的安裝程式檔案,需要一個license檔案才能啟用進入系統。根據使用者的實際購買情況,產生不同的license檔案,

在系統運行時,會檢測檔案是否有效,是否有授權,全部的秘密都在產生的這個license檔案,以下面的license檔案所示

<?xml version="1.0" encoding="utf-16"?><SolutionLicense xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <RegistrationName>Enterprise Solution Limited</RegistrationName>  <Version>2.2</Version>  <MaxUser>100</MaxUser>  <MaxViewer>100</MaxViewer>  <MaxDatabase>4</MaxDatabase>  <WithHaspKey>false</WithHaspKey>  <AllowInstallOnVirtualMachine>true</AllowInstallOnVirtualMachine>  <IssuedDate>2013-05-27T15:55:15.3440758+08:00</IssuedDate>  <ExpiryDate>2013-06-26T23:59:59.997</ExpiryDate>  <LicenseType>Internal</LicenseType>  <HardwareFingerprint>+MV/ImkUxQV3RWDrD4rso4dplxmr5WHDDJ37WdwE09ogGhACKWjp+tWmDB5RVqfu/
tqx5i1p15g7t5ChynBwR0UKxNaSb1WyG4kdt5etndm7wg45DWzDpIryKLCYVQ4SuE3ykmXTR8NgTsYriI0CCP1DC5YrCiGfbAjNJ8zwC5A=wfUHYiIpI2DQ/kSXyM6TMx
0pCUWqa9V/UGukBPcAhafmeseTEBKeJ1Fdqwoie8QuV3Zy8GzGz9DX9d43QXYKMKpHzdLG6CL848a4MzRw1nmQ9s7i+kB/+AjPM+yaJGFp8EpxYROfjJoDgat+ES1KSimh
t5VNB5AL2FY1QLwqoiOjk6q/ClCzsEB6ieLMHsS0HLmc=GQQTPgTgRuI4NsVLZ803HhUP+Lf/cG9OqtOreEWdMSRbuYIJKCyp8SDBygH7B+Omt1k3nEvpt3FUyMR+yyDNRql
qhAH7/KtVcJwvrs9Ye7LywpwcGKSJcJot/jTKKagSFn20fYXjZROIpxfc8tsnxBXpkchYSrTMJb+93EnLOUg=ACvXKe/WfGEvjyrUIm+BVZty0NfxemFLeQDZtdQnsLnfjDcK
FP3fhLY3dcYvDMJJmJx4cnYtp+8kabxxPr1M5i6qosEUULyIGb6kjyWjGQJ7M1/JEO8J5oZv/3PRLs307FO69WpIZ36O4Y=</HardwareFingerprint>  <AdditionalInformations /><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC
-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI=""><Transforms><T
ransform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /></Transforms><DigestMethod Algorithm="http://ww
w.w3.org/2000/09/xmldsig#sha1" /><DigestValue>RUdHeihpzCcTda4kH9VPm/n7aBE=</DigestValue></Reference></SignedInfo><Sig
natureValue>OHBWoz1WjG2D2Pfno9mSOuHg9oFRaSTYjw7w9oJh0NTtBYbMhb5CLwZz5WXXpfYsghnax4RfqoUt3edvYU2b1vu3//0YaQHkY+qbczrBiX
3svfKB+DSSm+WZvyruucnTsTp39RKutcim+fhAt/wDA2Iarwdm1/ztPAhoOi+zzbA=</SignatureValue></Signature></SolutionLicense>

license檔案的格式是文字檔,以方便查看。上面的許可檔案中,我給了100個使用者,4 個帳套的許可權。再運用SignedXml對檔案內容進行簽名,

阻止篡改。此外,如果想限定使用者,還可以加上機器標識(hardware fingerprint),如果檢測到被收取的license檔案,不在被授權的機器上運行,

也會拋出異常,終止程式。

還有一個許可產生工具,它的原型看起來像這樣

再來說明一下,如何破解這種加密。首先,如果程式集有強簽名(strong name),需要找一個工具,把它的簽名去掉,其次,找到演算法驗證license.xml檔案的地方,把它的public key替換成自己產生的public key,再寫一個以private key產生的licnese產生工具,產生license檔案,同時替換自己修改過的驗證程式集檔案,即可讓程式驗證成功

上面所說的破解過程,是比較理想的情況。如果程式集有strong name,而且在程式集中有驗證strong name是否存在,strong name是否匹配作者產生的public token,這種情況下,要產生一個strong name,替換作者產生的和已經寫入到程式集中的public token。其次,要可以反編譯器集,著名的工具Red Gate Reflector, ILSpy,dotPeek,都可以做到反編譯器集。如果程式集有加殼,還應該去殼。

 

方法三 序號註冊碼

經典的原始碼編輯軟體UltraEdit至今還保持這種保護方法。在首次運行時,需要輸入註冊碼

一個使用者名稱和註冊碼,可以讓多台機器的試用版軟體變成正式版。這個問題,在我們國家是普遍存在的。許可一般是Single PC 許可,而我們常常是只要來自於官方下載,又有官方的許可檔案或是序號,即把它當成正版,其實這種情況下,也非正版。僅僅是輸入註冊碼,不需要串連到網路驗證伺服器,如果想進一步串連到伺服器做驗證,還需要網路連接。

關於網路連接的額外話。Windows 自Windows 7開始,為了啟用它,就必須要有網路連接可用。對於新買的機器,想裝舊的Windows Server 2003,死活都找不到網卡驅動,無法串連到網路上去,無法啟用,只好裝最新的系統。有個小小的建議,如果你的機器是Windows 7以下的,可以考慮備份一下你手頭的驅動程式,網卡,顯卡,主板晶片集。這些驅動以後會越來越難找,廠家也直接拒絕提供舊系統的驅動(Windows 2003,XP),讓你被迫無奈只能用Windows 7或是更新的系統。硬體製造裝置廠商也是有預謀的逼迫你對舊機器改朝換代啊。

 

方法四  license to license2 雙重許可驗證

以著名的.NET加密軟體.NET Reactor為代表,要通過它的許可驗證需要兩次許可檔案。

購買正版軟體後,軟體供應商會給出一個license.license 檔案。開啟dotNET_Reactor.exe,菜單->Help-》 Registeration ,線上擷取另外一個License檔案, 點擊超連結進入官方網站:查收郵件,下載真正的License

開啟dotNET_Reactor.exe,菜單->Help-Registeration ,註冊,軟體才成為正式使用者。

回想一下這個註冊過程,它會產生一個原生硬體標識,把這個複製到網頁中去才能啟用軟體,從而得知這個軟體需要配合硬體,即使有序號,許可檔案,但是硬體標識不相同,也是無效的license檔案。

硬體標識通常會寫到license許可檔案中,這是唯一可以動手腳,但又不會出問題的地方。硬體標識寫註冊表,可以被使用者匯出,再匯入到其它機器上,硬體表示可以寫到系統隱藏檔案中,使用者誤刪除會導致出錯。

 

方法五  微軟大量啟用工具

以Office 2010為代表,它的大量啟用工具主介面如下,控制台介面風格,小巧強悍

再比如殺毒軟體卡巴斯基,對企業大量授權。也是實現批量產生許可的方式。

這種授權方法的好處是,可以被命令列調用。在域管理的企業基礎架構中,只需要網域系統管理員修改一下域策略,在每台用戶端登入網域時,執行一個指令檔即刻啟用企業內所有的軟體許可。

我理解的這種加密方法,也是產生一個許可檔案。因為Office系列軟體太流行了,可以很輕鬆的找到可用的版本。很少會被他的許可難住,不過這種產生許可的方式,值得學習和研究。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.