>ildasm /out=a.txt one.exe
生成的 a.txt 包含完整元數據:程序集引用、版本、公開鑰雜湊、模組定義、類型定義、方法體 IL 碼。
one.vb 反組譯關鍵點Public Module modmain
Sub Main()
System.Console.WriteLine("hell")
End Sub
End Module
modmain 類(對應 Module),標記 Globals$StandardModuleAttribute。_vbProject::_main(string[]),內部調用 modmain::Main()。ldstr "hell" → call WriteLine → ret。反組譯輸出可重新通過 ilasm 組譯為可執行文件,證明 IL 是完整、可逆的中間表示。
.assembly extern mscorlib { ... }
.assembly one as "one" { ... }
.module one.exe
.class public auto ansi modmain extends [mscorlib]System.Object {
.method public static void Main() il managed {
.entrypoint
.maxstack 1
.locals init (class System.Object[] V_0)
IL_0000: ldstr "hell"
IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)
IL_000a: ret
}
}
.class private auto ansi _vbProject extends [mscorlib]System.Object {
.method public static void _main(class System.String[] _s) il managed {
.entrypoint
.maxstack 8
IL_0000: call void modmain::Main()
IL_0005: ret
}
}