亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#ILDASM使用

2019-11-14 13:50:49
字體:
來源:轉載
供稿:網友

IL DASM反編譯工具

  使用C#的猿人或多或少都會對微軟的IL反編譯工具(ildasm.exe)有所認識。我最早接觸到這工具是公司同事使用他反編譯exe程序,進行研讀和修改。感覺他還是很強大。
  IL是微軟平臺上的一門中間語言,我們常寫的C#代碼在編譯器中都會自動轉換成IL,然后在由即時編譯器(JIT Compiler)轉化機器碼,最后被CPU執行。ildasm.exe反編譯工具將IL匯編成可跨平臺可執行的(pe)文件??晒┪覀兞私鈩e人代碼和修改。有了他我們看待問題可以不用停留在編輯器層面,可深入中間層。

VS中增加IL DASM工具

我們在安裝VS同時都會自動安裝ildasm工具,無需另行安裝。ildasm工具打開方法如下圖:

我們也可以直接wind+R.輸入:C:/PRogram Files (x86)/Microsoft SDKs/Windows/v7.0A/bin/ildasm.exe (window 7 64位 操作系統安裝目錄) 同樣可以打開ildasm。
我們也可以把ildasm工具增加到我們常用的VS中。
1.工具(Tools)-->外部工具(External Tools..)

2.添加內容填寫對應信息。命令:C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin/ildasm.exe
(window 7 64位 操作系統安裝目錄) 。

已上信息填寫完成后,在“工具”選擇卡中能找到我們剛增加的外部工具名稱(IL_DASM)。增加完成后可以小試一把。
國際慣例來段"Hello World"。代碼編寫完后直接F6生成exe文件,然后工具-->IL_DASM-->確認(無需修改任何參數,默認目標文件路徑)。系統會彈出IL工具,我們雙擊Main方法。

這時可以看到Main方法在IL中編譯的代碼。感覺有點陌生不易看懂。 還有IL編譯出現的三角型,正方型都是啥!

IL DASM 基礎

1.圖標含義

使用IL反編譯出項目代碼

MANIFEST:是一個附加信息列表,主要包含程序集的一些屬性,如程序集名稱、版本號、哈希算法等;
Democode:項目名稱
Democodeing.Common:命名空間
Democodeing.ICar:接口
Democodeing.Program:類,主要查看存類下面的內容。

.class 類信息項代碼:

.class private auto ansi beforefieldinit DemoCoding.Program       extends [mscorlib]System.Object{} // end of class DemoCoding.Program

1).class,表示Program是一個類。并且它繼承自程序集—mscorlib的System.Object類;
2)private,表示訪問權限;
3)auto,表示程序的內存加載全部由CLR來控制;
4)ansi,是為了在沒有托管代碼與托管代碼之間實現無縫轉換。這里主要指C、C++代碼等;
5)beforefieldinit,是用來標記運行庫(CLR)可以在靜態字段方法生成后的任意時刻,來加載構造器(構造函數);

.ctor 方法代碼:

.method public hidebysig specialname rtspecialname         instance void  .ctor() cil managed{  // 代碼大小       7 (0x7)  .maxstack  8  IL_0000:  ldarg.0  IL_0001:  call       instance void [mscorlib]System.Object::.ctor()  IL_0006:  ret} // end of method Program::.ctor

1)cil managed:表示其中為IL代碼,指示編譯器編譯為托管代碼;
2).maxstack:表示調用構造函數.otor期間的評估堆棧(Evaluation Stack) ;
3)  IL_0000:標記代碼行開頭;
4)ldarg.0:表示轉載第一個成員參數,在實例方法中指的是當前實例的引用;
5)call:call一般用于調用靜態方法,因為靜態方法是在編譯期就確定的。而這里的構造函數.otor()也是在編譯期就制定的。而另一指令callvirt則表示調用實例方法, 它是在運行時確定的,因為如前述,當調用方法的繼承關系時,就要比較基類與派生類的同名函數的實現方法(virtual和new),以確定調用的函數所屬的Method Table;
6)ret:表示執行完畢,返回;

Main() 靜態方法代碼:

.method private hidebysig static void  Main(string[] args) cil managed{  .entrypoint  // 代碼大小       19 (0x13)  .maxstack  8  IL_0000:  nop  IL_0001:  ldstr      "Hello World"  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)  IL_000b:  nop  IL_000c:  call       string [mscorlib]System.Console::ReadLine()  IL_0011:  pop  IL_0012:  ret} // end of method Program::Main

1) hidebysig:表示當把此類作為基類,存在派生類時,此方法不被繼承,同上構造函數;
2).entrypoint:指令表示CLR加載程序時,是首先從.entrypoint開始的,即從Main方法作為程序的入口函數;
3)nop:為空該指令,主要給外部設備或者指令間隙準備時間;
4)ldstr:創建String對象變量"Hello World." ;
5)pop:取出棧頂的值。當我們不需要把值存入變量時使用;

使用IL DASM 修改EXE程序代碼

1.打開IL工具,選擇所要修改的EXE程序。

2.文件-->轉儲。確定后選擇另存路徑,會生成二個文件:*.il 和 *.res

3.用記事本打開*.il修改里面的內容:

 .method private hidebysig static void  Main(string[] args) cil managed  {    .entrypoint    // 代碼大小       19 (0x13)    .maxstack  8    IL_0000:  nop    IL_0001:  ldstr      "Hello World-[已使用il工具修改過...]"    IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)    IL_000b:  nop    IL_000c:  call       string [mscorlib]System.Console::ReadLine()    IL_0011:  pop    IL_0012:  ret  } // end of method Program::Main

4.把修改后的代碼編譯成EXE程序。

ilasm /exe /output=C:/CK.exe /Resource=C:/Users/Ck/Desktop/coding.res C:/Users/Ck/Desktop/coding.il

修改就這么簡單。運行修改后的EXE程序,值已修改。

 


上一篇:委托

下一篇:001TheHelloWorldInCsharp

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美国产成人| 久久中文字幕在线视频| 久久精品在线视频| 97婷婷大伊香蕉精品视频| 日韩一区av在线| 亚洲网址你懂得| 成人黄色短视频在线观看| 欧美日韩福利在线观看| 成人黄色片网站| 97视频免费看| 黄色精品在线看| 亚洲国产中文字幕久久网| 日本精品免费观看| 欧美性理论片在线观看片免费| 亚洲字幕在线观看| 91久久精品国产91久久性色| 国产日产久久高清欧美一区| 欧美日韩激情小视频| 欧美日韩第一页| 不卡中文字幕av| 疯狂欧美牲乱大交777| 91在线视频九色| 日韩一区视频在线| 日本精品va在线观看| 久久中文字幕在线视频| 欧美日韩成人在线播放| 欧美老女人性生活| 成人福利免费观看| 国产精品丝袜视频| 91中文字幕在线观看| 欧美华人在线视频| 国产成人av在线播放| 懂色av影视一区二区三区| 久久精品最新地址| 久久久久在线观看| 欧美成人免费小视频| 中文字幕欧美亚洲| 九九热这里只有在线精品视| www.日韩系列| 自拍偷拍亚洲区| 亚洲乱码国产乱码精品精| 啪一啪鲁一鲁2019在线视频| 日韩精品视频在线免费观看| 国产一区二区三区网站| 中文字幕日韩在线视频| 92福利视频午夜1000合集在线观看| 色婷婷综合久久久久中文字幕1| 91久久国产精品91久久性色| 亚洲免费影视第一页| 精品成人在线视频| 91精品综合久久久久久五月天| 欧美丰满老妇厨房牲生活| 成人黄色网免费| 欧美电影第一页| 色综久久综合桃花网| 久久精品国产欧美激情| 精品久久久久久中文字幕| 成人免费视频网址| 91精品免费久久久久久久久| 欧美一区二区三区艳史| 亚洲精品电影网在线观看| 亚洲欧美日韩区| 国产精品色视频| 国产国语刺激对白av不卡| xxxxx91麻豆| 伊人久久久久久久久久| 欧美亚洲在线观看| 一本一道久久a久久精品逆3p| 日韩最新在线视频| 精品久久久久久国产| 精品无人国产偷自产在线| 三级精品视频久久久久| 成人a视频在线观看| 亚洲女同精品视频| 亚洲综合在线做性| 亚洲福利视频二区| 亚洲精品按摩视频| 国模gogo一区二区大胆私拍| 美乳少妇欧美精品| 成人午夜激情网| 欧美黄色片在线观看| 欧美肥老妇视频| 欧美午夜精品久久久久久浪潮| 久久久久久亚洲精品中文字幕| 亚洲女人天堂成人av在线| 成人黄色av免费在线观看| 日韩激情av在线播放| 亚洲精品电影网站| 日韩成人中文字幕在线观看| 成人av资源在线播放| 国产在线高清精品| 欧美中文字幕视频在线观看| 精品少妇一区二区30p| 国语自产精品视频在线看| 成人午夜一级二级三级| 亚洲色图综合网| 中文字幕在线观看亚洲| 欧美成人性生活| 北条麻妃在线一区二区| 午夜免费日韩视频| 中文字幕亚洲综合久久筱田步美| 国产视频精品一区二区三区| 91精品国产综合久久香蕉最新版| 精品国产91久久久久久老师| 久久精品免费播放| 北条麻妃久久精品| 97精品国产97久久久久久免费| 色婷婷av一区二区三区在线观看| 日韩av影视综合网| 国产欧美精品日韩精品| 中文在线不卡视频| 精品久久久久国产| 精品久久久久久久久中文字幕| 97高清免费视频| 亚洲国产日韩欧美在线图片| 国内精品久久久久影院优| 中文字幕亚洲欧美日韩在线不卡| 热re91久久精品国99热蜜臀| 韩国欧美亚洲国产| 91午夜理伦私人影院| 欧美国产日本在线| 日韩在线观看网址| 在线观看欧美成人| 国产精品99久久99久久久二8| 久久久精品2019中文字幕神马| 色噜噜狠狠色综合网图区| 精品中文字幕久久久久久| 日韩在线欧美在线| 久久久av亚洲男天堂| 欧美电影免费观看大全| 亚洲午夜性刺激影院| 国产欧美日韩最新| 人人做人人澡人人爽欧美| 国产91在线播放精品91| 亚洲аv电影天堂网| 精品国产户外野外| 欧美性猛交xxxx乱大交蜜桃| 亚洲无av在线中文字幕| 久久久国产在线视频| 菠萝蜜影院一区二区免费| 久久久国产影院| 亚洲欧美国产精品专区久久| 在线亚洲国产精品网| 欧美精品videosex极品1| 国产精品视频久久久久| 久久精品国产v日韩v亚洲| 国产精品99久久久久久久久| 福利一区视频在线观看| 国产中文日韩欧美| 亚洲国产精品va在线看黑人| 日韩视频在线观看免费| 久久综合免费视频| 亚洲精品美女在线观看播放| 国产成人综合一区二区三区| 亚洲а∨天堂久久精品喷水| 日韩成人激情视频| 亚洲免费视频一区二区| 午夜伦理精品一区| 国产一区二区三区毛片| 国产噜噜噜噜久久久久久久久| 国产精品久久一区| 欧美一区二区三区艳史| 亚洲国产精品久久久久秋霞蜜臀| 伊人伊成久久人综合网小说|