1625-5 王子昂 总结《2017年12月13日》 【连续第439天总结】
A. .NET平台加解密
B.
概述
- 统一了编程语言
无论程序是用C#、C++还是VB编写的,最终都会被编译为.NET的中间语言IL - 扩展了PE文件的格式
可执行文件中保存的不是机器码,而是IL指令和元数据 - 改变了程序的运行方式
程序的运行不再由Windows负责,而是.NET框架。.NET框架中的JIT引擎负责在运行时将IL代码即时编译为本地汇编代码再执行
IL指令
中间语言MSIL和高级语言C#、C++和VB比起来要低级许多,所以又称作IL汇编。是.NET的最小执行单位。
但是与asm汇编比起来又要高级,最明显的特征就是IL不直接操作内存。
常用的.net反编译器如.Net Reflector、dnSpy等等都是直接将IL指令反编译成C#语言,通常会很方便
但是如果遇到压缩壳、加密壳等等处理时就会使得IL指令不再跟直接编译的结果相同格式了。此时常见的反编译器就会报错了
微软提供的ildasm可以直接反汇编出IL语句,虽然难以阅读但是通用性要强很多
IL汇编的特点是以堆栈为基础进行操作,变量、操作都在堆栈中进行而不直接得到内存地址(指针)