1. 程式人生 > >C# & dnspy 使用總結--逆向分析工具

C# & dnspy 使用總結--逆向分析工具

dnspy工具: 非常優秀的C#的反編譯器

一、除錯

     1.1  載入模組: 直接將exe或者dll,拖到dnspy中即可。或者 開啟exe,執行起來就會,相關的模組會自動載入進來。

     1.2  快捷鍵和VS除錯的快捷鍵相同, 記不住可以手動點;

     1.3  附加程序;

二、多程序除錯

      2.1  當子程序起來後,另外起dnpsy使用附加的方式,可以進入除錯。

這樣做是可以除錯,但是這樣看手速... 如果你附加過慢,可能關鍵函式已經跳過了;最主要的問題是如果使用dnspy的附加功能,很多函式的區域性變數顯示不出值,提示:程序不安全,或者被優化;這時,我們應該選擇方式1.2。

      2.2  dnspyA啟動除錯主程序,到起程序ProcessStart處斷下來,這時可以見到,第一個引數是子程序名,第二個引數是啟動引數;     我們再啟動一個dnspyB,按照這個啟動引數啟動,子程序即可;

         注意:再windows系統中,啟動引數需要修改:去掉頭尾的字串,"""" 改為 "" , \  改為 \\ ;

三、修改模組

     1.1  如果可執行檔案沒有加殼、加混淆,dnspy基本可以完全的顯示出C#的原始碼;

     1.2 修改了程式碼可以儲存模組。

      1.3 修改方式: 編輯C#方法、修改IL指令等,修改完後需要編譯方法,儲存模組;

 

四、斷點: dnspy的斷點也是很強大

       條件斷點:

 

五、區域性變數、監視:可以檢視記憶體值

      值得注意的是,程式最好使用dnspy啟動,這樣相比附加程序的方式,可以看到更更多的記憶體值;附加程序往往顯示:記憶體

六、逆向程式碼

      我們自己建立一個C#的控制檯程式,編譯好,然後使用dnspy開啟,你會驚訝發現,基本上可以完全的還原始碼;

      所以,逆向程式碼的時候,我們只需要將關鍵的演算法位置摳出來即可,參考裝置使用了什麼資源,我們拷貝過來,參考裝置如何載入資源,我們也如何載入資源,參考裝置使用了什麼dll,我們也add 到工程中使用;

    

七、缺陷:

     6.1  從dnspy 3.0 開始:搜尋功能容易使得dnspy崩潰,據說時遞迴查詢導致的;