软件开发中流行软件加密加壳技术盘点
目前软件开发中软件加密技术比较流行的是使用外壳,外壳分为压缩壳和加密壳,其中压缩壳的保护性比较弱,所以一般采用加密壳,其原理是利用堆栈平衡原理,修改程序入口处代码,使其跳转到壳代码执行解密程序,将原软件程序代码解密后跳回原程序的OEP继续执行。目前比较强的软件加密壳采用的是动态解密代码、SMC、IAT加密技术,软件程序在运行过程中动态解密代码,执行完毕后立刻删除,并且对IAT加密,当需要调用API时用解密算法算出API的实际地址来调用,更有甚者,壳里有壳,真的是用心良苦。
目前常见的比较强的软件加密技术所使用的5大壳:
1)EncryptPE:
加密技术特点:对IAT加密比较狠
破解办法:在适当的时机DUMP
2)ASProtect:
加密技术特点:采用多层SEH,可以把人转晕
破解办法:最后一次异常法,或者直接使用看雪的OD脚本,不过新版本有反调试,所以最好使用OD脚本,呵呵
3)ACProtect:
加密技术特点:采用stolen code的办法,玩了点小把戏
破解办法:先定位到OEP,然后根据程序语言特征把stolen code补回去,呵呵。对于非OEP处的stolen code,采用补空间的办法了。
4)Armadillo:
加密技术特点:双进程互相检测
破解办法,在进程检查处修改API,需要进程间的切换,比较麻烦
5)themida:
加密技术特点:采用虚拟机技术,十分猛,可以把人折磨成不成人样,再折磨回来
破解办法:百分之一千的耐心和毅力,或者采用OKOKDO大侠的脚本~~不过现在新版好像脚本也不行了,只有期待大侠更加令人激动的成果啦~~~