日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MSIL学习笔记(01):ilasm和ildasm

發布時間:2025/4/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MSIL学习笔记(01):ilasm和ildasm 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我跟每個.NET程序員一樣,MSIL多少都接觸過一點,個別語句也能看明白,但是沒有系統學習過

更沒有寫過IL代碼 和 編譯過

IL我覺得學習方法應該跟其他語言不同,因為這個語言根本上不是用來手寫的,因為IL就語言層次上相當高級,手工寫又相當麻煩,C#好像也就是薄薄的包裝了一層

還是寫C#代碼看IL來學習吧

1 using System;
2
3 namespace ILSample
4 {
5 class Program
6 {
7 static void Main(string[] args)
8 {
9 Console.WriteLine("Hello");
10 }
11 }
12 }

這么一段代碼,編譯生成?ILSample.exe

然后Microsoft Visual Studio 2008->Visual Studio Tools->Visual Studio Command Prompt (2010)

在黑屏里 輸入 執行下面的命令?

ildasm ILSample.exe /out=ILSample.il

ildasm是IL語言的反編譯工具,就是可以把DLL和EXE文件反編譯成IL代碼。執行這個命令會將ILSample.exe的IL原文件保存在ILSample.il中

?

如果直接輸入

ildasm ILSample.exe
或者
ildasm

會打開ildasm圖形界面 ,比如

但是加上“/out=ILSample.il” 就直接反編譯成IL代碼文件,圖形界面就不出來了

打開這個文件,內容如下

// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.1
//
Copyright (c) Microsoft Corporation. All rights reserved.



// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly ILSample
{
.custom instance void [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = ( 01 00 29 2E 4E 45 54 46 72 61 6D 65 77 6F 72 6B // ..).NETFramework
2C 56 65 72 73 69 6F 6E 3D 76 34 2E 30 2C 50 72 // ,Version=v4.0,Pr
6F 66 69 6C 65 3D 43 6C 69 65 6E 74 01 00 54 0E // ofile=Client..T.
14 46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61 // .FrameworkDispla
79 4E 61 6D 65 1F 2E 4E 45 54 20 46 72 61 6D 65 // yName..NET Frame
77 6F 72 6B 20 34 20 43 6C 69 65 6E 74 20 50 72 // work 4 Client Pr
6F 66 69 6C 65 ) // ofile

// --- The following custom attribute is added automatically, do not uncomment -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )

.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module ILSample.exe
// MVID: {76CE82AE-87E2-4509-B42A-AF8E007539D5}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000003 // ILONLY 32BITREQUIRED
//
Image base: 0x00390000


// =============== CLASS MEMBERS DECLARATION ===================

.class private auto ansi beforefieldinit ILSample.Program
extends [mscorlib]System.Object
{
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 11 (0xb)
.maxstack 8
IL_0000: ldstr "Hello"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method Program::Main

.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 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

} // end of class ILSample.Program


// =============================================================

// *********** DISASSEMBLY COMPLETE ***********************
//
WARNING: Created Win32 resource file ILSample.res

生成這么一大堆東西,雖然很多地方搞不清楚什么意思,能不能刪除

但是起碼有一部分可以看明白 比如?

.class private auto ansi beforefieldinit ILSample.Program
extends [mscorlib]System.Object

因該是

class Program

翻譯過來的?

可以從IL中看出來類Program繼承自 System.Object 是私有的 等等

以及IL定義的一個方法Main(string[] args),.ctor()是構造函數。

具體細節以后日子還長,現在的任務是把生成的IL代碼 重新編譯成 .EXE文件

還是在

開始菜單->Microsoft Visual Studio 2008->Visual Studio Tools->Visual Studio Command Prompt (2010)

在黑屏里 輸入 執行下面的命令?

ilasm ilsample.il /output=ILSample2.exe

會生成一個文件ILSample2.exe 執行這個文件 如果正確執行就搞定了。



今天的任務完成了

就是從C#的源代碼->.EXE文件->反編譯

轉載于:https://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html

總結

以上是生活随笔為你收集整理的MSIL学习笔记(01):ilasm和ildasm的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 西西人体做爰大胆gogo | www.色图| 九色麻豆 | jizzjizzjizz国产 | 九九免费精品视频 | 国产成人精品免费在线观看 | 国产人妻久久精品一区二区三区 | 亚洲三级免费 | 国产sm在线 | 成人永久视频 | 第一章激情艳妇 | 欧洲成人午夜精品无码区久久 | 性xxxxx大片免费视频 | 欧美激情一区二区三区 | 一区二区在线观看av | 男男av网站| 日本视频网址 | 3d动漫精品啪啪一区二区竹菊 | 日韩国产欧美综合 | 亚洲第一免费网站 | 天堂av免费观看 | 高清不卡毛片 | 欧美视频在线一区二区三区 | 中文字幕乱码中文字幕 | 牛牛在线 | 在线成人av | 欧美丰满老妇性猛交 | 精品视频亚洲 | 日韩欧美国产一区二区在线观看 | japanese24hdxxxx日韩 | 欧美亚洲日本一区 | 天天综合干 | 麻豆视频播放 | 国产原创视频在线 | 欧美视频在线一区 | 欧美视频亚洲 | 欧美日韩激情一区 | 99国产精品久久久久99打野战 | 国产欧美一级 | 激情福利视频 | 国产免费二区 | 99久久久无码国产精品性黑人 | 久久久久99精品成人片毛片 | 国产白丝av| 欧美××××黑人××性爽 | 捆绑调教在线观看 | 日韩成人精品在线观看 | 91欧美激情一区二区三区成人 | 闺蜜张开腿让我爽了一夜 | 欧美色图12p | 精品国语对白 | 中国性猛交 | 午夜簧片| 青青青免费在线视频 | 亚洲二级片 | va视频在线| 日本一区欧美 | 视色在线| 女生的胸无遮挡 | 国产91av视频 | 精品影视| 五月天激情开心网 | 亚洲成人av影片 | 精品少妇一区二区三区密爱 | 91sao | 国产 日韩 欧美 制服丝袜 | 免费人成在线观看网站 | 日日躁夜夜躁狠狠躁 | 五月天丁香网 | 日韩国产精品一区二区三区 | 国产精品精品视频 | 日本wwwwww| 国产真实自拍 | 色噜噜网站 | 打屁股外国网站 | 超碰com | 粗大黑人巨茎大战欧美成人免费看 | 青草91| 日韩av毛片 | 都市激情综合 | 日日夜夜撸撸 | 亚洲女人天堂成人av在线 | av番号网 | 四虎黄色网址 | 久久亚洲综合色图 | 91视频三区 | 欧美xxxxbbb| 欧美精品第一页 | 国内自拍真实伦在线观看 | 九草在线观看 | 看片网址国产福利av中文字幕 | 长腿校花无力呻吟娇喘的视频 | 日本高潮网站 | 日韩深夜视频 | 午夜在线视频 | 亚洲黄v | 91国内精品野花午夜精品 | 我要看18毛片 | 在线观看视频一区二区 |