MSIL , Dotfuscator &.Net Reflector

MSIL介紹

  • 在.NET 平台中,為了達到跨語言甚至跨平台的可移植性,採取了和Java 一樣的策略,也就是將程式碼先編譯成一種中介碼,再經由執行環境以JIT(Just-In-Time) 的方式編譯成可執行的原生碼(native code)並執行。
  • 相對於Java 中的byte code,.NET 平台則是將程式碼編譯成一種稱為 Microsoft Intermediate Language(MSIL)的中介碼。
  • 透過 IL 碼,我們可以對程式碼進行反組譯工程。由於中介碼的結構較清楚,可讀性也比原生碼高的多,因此反組譯也相對得比較容易。

參考來源: MSIL簡介_ 黃宣龍(sun.cis.scu.edu.tw/~nms9115/articles/dotnet/msil/MSIL.pdf)

 

下圖是使用Red Gate’s .Net Reflector

對.Net編譯出的程式(.exe)進行反編譯的結果

原始程式碼幾乎都看得一清二楚

Red Gate's .Net Reflector - 複製

接下來測試「防止反編譯軟體」

下圖是Dotfuscator防止反編譯的功能

Dotfuscator

對程式碼進行混淆後

再次進行反編譯,可以看到下圖結果

.Net Reactor_2 - 複製

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s