1625-5 王子昂 总结《2017年12月16日》 【连续第442天总结】
A. .Net的保护和对抗(2)
B.
加密壳
这种壳会通过加密元数据、Hook引擎等手段来保护源程序。
因此要熟悉.Net内核,包括JIT的编译过程,执行引擎EE的原理等
.Net程序通过Windows的loader加载后,调用.Net框架的dll,随后程序便运行在EE的监管中,Windows本身不再负责该程序的内存分配、线程管理等工作。
运行过程中遇到没有编译的方法时,框架调用JIT引擎把代码编译成asm,然后执行它,完毕后框架再收回执行流。
因此加密软件常常HookJIT引擎和框架中负责调用JIT的dll(mscorwks),来在JIT编译前将被加密的IL代码和元数据恢复正常,并在方法结束后再将元数据和IL代码销毁。
对抗方法大体还是动态调试或是Hook JIT的编译方法来dump被解密的IL代码和元数据,再重构PE文件
其他保护手段
- 反检测
- 反调试跟踪
- 网络验证
- 虚拟机(VMP)
- 加密锁
都是Win32下也很常见的保护手段,如法炮制即可
C. 明日计划
加密与解密