IL系列文章之二:Make Best Use of Our Tools
生活随笔
收集整理的這篇文章主要介紹了
IL系列文章之二:Make Best Use of Our Tools
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
工欲善其事,必先利其器。這一節我談的就是我們用于研究IL的工具。 第一篇文章貼出來之后,網上有朋友問我“能不能看到c#程序的IL代碼?”。看來還有些朋友對IL的編譯與反編譯還不太熟悉,所以我個人認為寫一篇關于工具的文章還是有必要的。我們的工具主要有三個,第一個是dumpbin,可以把exe,obj,dll等bump出來然我們它們的PE結構,關于PE結構的討論前一段時間比較熱,網絡上雜志上都有很多資料。(如果你先麻煩懶得去找的話,那你就等著什么時候我也來寫一篇吧J)。另外兩個是ilasm和ildasm,上次的文章中我們已經提到過了,分別是IL的編譯器和反編譯器。dumpbin, ilasm的說明已經比較詳細了。你可以啟動Visual Studio .NET命令提示,鍵入“dumpbin /?”,“ilasm /?”或“ildasm /?”,Enter,就可以看到在三個應用程序的命令行幫助了。更為詳細的MSDN資料如下: dumpbin:ms-help://MS.VSCC/MS.MSDNVS.2052/vccore/html/_core_dumpbin_reference.htm ilasm:ms-help://MS.VSCC/MS.MSDNVS.2052/cptools/html/cpconmsilassemblerilasmexe.htm ildasm:ms-help://MS.VSCC/MS.MSDNVS.2052/cptools/html/cpconmsildisassemblerildasmexe.htm (不過你要安裝了Visual Studio.NET整合的MSDN才能看到。) 這些我都不想再說了,自己去看吧。我下面要講的是一個不太容易被人們發現的東西——ildasm的高級選項。 你在Visual Studio .NET命令提示下輸入“ildasm /?”看看有什么東西,然后在輸入“ildasm /ADV /?”再看看多了什么東西(ADV就是Advanced的意思)。我們第一個輸入下是看不到ADV選項的,在第二個輸入下我們看到了多出了幾個高級選項。這些高級選項對于那些以.net平臺為目標的工具開發者很有益處。 可供選擇的命令行高級參數如下: /ADV 以高級方式啟動ildasm,在你啟動ildasm后“視圖”菜單中會出現一些高級選項。如果你是想使用命令行的方式進行反編譯的話,“/ADV”必須寫在其它選項前面前面,如“/ADV /CLASSLIST”等。 /STATS 顯示鏡像文件(你就把它理解為被你反編譯的文件好了)的統計信息。 /CLASSLIST 包括本模塊中定義的類的列表。 /ALL 包括 /HEADER, /BYTES, /STATS, /CLASSLIST, /TOKENS。 /METADATA[=<specifier>] 顯示<specifier>所指定的MetaData,<specifier>包括: MDHEADER 顯示MetaData header包含的信息和大小。 HEX 顯示更多十六進制表示的內容。 CSV 以逗號分隔的形式顯示header的大小。(這里我沒搞太懂L。) UNREX 顯示無法分析的外部對象。 VALIDATE 對metadata的一致性進行驗證。(對于metadata我以后會有文章介紹。) OK!差不多了,就先寫到這里吧。?
轉載于:https://blog.51cto.com/zhoufoxcn/164407
總結
以上是生活随笔為你收集整理的IL系列文章之二:Make Best Use of Our Tools的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再推荐一个安全的好软件
- 下一篇: Log4j比较全面的配置