C# 帶簽名dll破解

來源:互聯網
上載者:User

標籤:執行   檔案   info   eve   錯誤   nal   名稱   解決   異常   

首先申明,本文只是從技術的角度來分析下怎樣破解帶簽名的C#寫的dll檔案。大家如有遇到收費的軟體或類庫還是應該去購買正版,程式員何苦為難程式員呢。

不帶簽名的破解

不帶簽名的dll檔案的破解很簡單,通常有下面三個步驟:

1. 使用反編譯工具對dll檔案進行反編譯,找到校正到期的相關代碼,反編譯工具可以使用ILSpy或Reflector;

2. 使用ildasm.exe工具將dll匯出成il文字檔,在該檔案中找到相關的代碼進行修改;

3. 使用ildasm.exe工具將修改後的il檔案編譯成dll檔案。

下面看一個例子,假設有ClassLibrary1.dll檔案,該類庫中的有關校正到期的代碼如下:

   public static class License
    {
        private static bool licenseExpired;

        internal static void CheckLicense()
        {
            //if語句中判斷是否到期
            if(true)
            {
                //標示是否到期,設定成true表示到期
                License.licenseExpired = true;
            }
        }
    }

使用ILSpy進行反編譯看到的代碼如下:

 

在使用ildasm.exe對該dll檔案進行匯出成il文字檔:

 

使用文字編輯器開啟il檔案,找到校正對相關代碼:

 

 

1. 中的紅框部分代碼對應的就是 License.licenseExpired = true; 這行代碼;

2. 第97行代碼 IL_0004:ldc.i4.1 代表的就是true,等待著賦值給下面的licenseExpired;

3. 修改97行的代碼為 IL_0004:ldc.i4.0 ,然後儲存il檔案。

開啟命令列,進入到il檔案所在到目錄,執行下面的命令;

c:\windows\microsoft.net\framework\v4.0.30319\ilasm.exe /dll/resource=ClassLibrary1.res ClassLibrary1.il

現在在il檔案的目錄中可以看到產生的dll檔案:

 

反編譯產生的dll檔案,可以看出代碼已經被修改,如:

 

 

 

 

帶簽名dll的破解

如果程式集是帶簽名的程式集,在經過上面的步驟進行破解後,dll檔案依然不能正常使用,通常會報如下錯誤:

未能負載檔案或程式集“ClassLibrary1”或它的某一個依賴項。未能驗證強式名稱簽名。此程式集可能已被篡改,或者已被延遲簽名,但沒有用正確的私密金鑰進行完全簽名。 (異常來自 >HRESULT:0x80131045)

經過對比發現經過簽名的dll檔案和未簽名的dll檔案的區別在於簽名的dll檔案產生的il代碼中會多處如下的代碼:

 

 

將il代碼中上面紅框部分代碼刪除,重建的dll檔案就是去掉了簽名的dll檔案。不出什麼意外的話此時的dll檔案可以正常使用了,但有時又會出現如下的錯誤:

重寫成員“xxx”時違反了繼承安全性規則。重寫方法的安全可訪問性必須與所重寫方法的安全可訪問性匹配

解決該問題需要在Assemblyinfo.cs檔案中添加如下代碼:

[assembly: System.Security.SecurityRules(System.Security.SecurityRuleSet.Level1)]

 

 

 

 

上面添加的代碼對應的il代碼為:

  .custom instance void [mscorlib]System.Security.SecurityRulesAttribute::.ctor(valuetype [mscorlib]System.Security.SecurityRuleSet) = ( 01 00 01 00 00 ) 
將上面的代碼添加到il的相應位置,重建dll檔案就OK了。

總結

本文是以技術研究學習為目的,不提倡對收費的軟體或類庫進行破解使用

C# 帶簽名dll破解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.