1625-5 王子昂 总结《2018年2月16日》 【连续第504天总结】
A. 专用加密软件(2)
B.
加密壳
加密壳种类较多,不同的壳侧重点不同
有的壳单纯保护程序,有的壳则还有附加功能,例如提供注册机制,使用次数,时间限制等
值得注意的是,越是有名的加密壳,研究的人也越多,因此被针对破解的可能性也就越大
常见的加密壳有
- ASProtect
- Armadillo
- EXECryptor
- Themida
ASProtect
ASP是款很经典的壳,拥有压缩、加密、反跟踪、CRC校验和花指令等保护措施。使用了Blowfish、Twofish、TEA等加密算法,还用RSA1024作为注册密钥生成器。
它通过API钩子与子程序进行通信,并且ASProtect为软件开发人员提供SDK,实现加密程序内外结合。
ASP注重兼容性和稳定性,因此没有采用过多的反调试策略。
目前有两个系列:ASProtect 1.3x和ASProtect SDK 2.x
后者采用了部分虚拟机技术,主要是在EntryPoint和SDK上
Armadillo
又叫穿山甲,是一款应用面较广的商业保护软件
它有很多保护功能:
Nanomites、Import Table Elimination、Stratcgic Code Splicing、Memory-Patching Protections等
最强大的是Nanomites
使用时在程序中加入NANOBEGIN和NANOEND标签的定义,被括住的代码会被Armadillo扫描,处理中间的所有跳转指令,将所有跳转指令换成INT3
运行时会起双进程,父进程为Armadillo的控制器,子进程遇到INT3异常时由父进程截获,计算出跳转指令的目标地址并反馈给子进程,子进程继续运行
由于INT3的机器码是0xCC,因此也叫这种保护为CC保护
《逆向工程核心原理》中提到过这种保护,破解的方法为模拟父进程进行计算,通过脚本得到所有跳转地址,然后再Patch回去
另一方面由于一个进程只能被一个进程附加调试,因此调试器无法调试子进程,很难得到父进程的计算过程
C.明日计划
专用加密软件