()程序员用高级OO语言(C#VBNETVCNetCobolPython……)编写代码这些代码经过Net编译器(比如Visual StudioNet)编译成统一的MSIL(Microsoft Intermediate Language)NET应用程序是以MSIL的形式出现的只有在程序执行的时候才通过即时编译器JIT(JustInTime)被编译为本机代码
()程序执行的时候由JIT装入程序的MSILJIT同时作了很多其他的工作(装载相应的运行库安全检测……) 最后JIT将转化成本地机器码(EXE或者DLL)
()本地机器码被装入内存开始执行
就是通过这几个步骤net实现了编程语言无关(都转化成MSIL)平台无关(执行的时候根据本地配置生成相应的机器码)安全性(JIT里面做了很多检测)
作为Cracker可以用Net Framework SDK自带的工具进行MSIL和EXE(DLL)之间的互换利用FrameworkSDK\Bin\目录下的ilasm和ildasm()ilasm示例下面的命令对 MSIL 文件 myTestFileil 进行汇编并产生可执行文件 myTestFileexe ilasm myTestFile下面的命令对 MSIL 文件 myTestFileil 进行汇编并产生 dll 文件 myTestFiledll ilasm myTestFile /dll下面的命令对 MSIL 文件 myTestFileil 进行汇编并产生 dll 文件 myNewTestFiledll ilasm myTestFile /dll /outputmyNewTestFiledll()ildasm示例下面的命令使 PE 文件 MyHelloexe 的元数据和反汇编代码显示在 Ildasmexe 的默认 GUI 中
ildasm myHelloexe下面的命令对 MyFileexe 文件进行反汇编并将结果 MSIL 汇编程程序文本存储在 MyFileil 文件中
ildasm MyFileexe /outputMyFileil下面的命令对 MyFileexe 文件进行反汇编并将结果 MSIL 汇编程序文本显示到控制台窗口中
ildasm MyFileexe /text如果文件 MyAppexe 包含嵌入的托管和非托管资源则下面的命令将产生以下 个文件MyAppilMyAppresIconsresources 和 Messageresourcesildasm MyAppexe /outputMyAppil下面的命令对 MyFileexe 的 MyClass 类中的 MyMethod 方法进行反汇编并将输出显示到控制台窗口中
ildasm /itemMyClassMyMethod MyFileexe /text在上面的示例中可能有几个具有不同签名的 MyMethod 方法下面的命令对返回类型为 void 且带有参数 int 和 Systemstring 的
MyMethod 方法进行反汇编
ildasm /itemMyClassMyMethod(void(intclass SystemString)) MyFileexe /text