在计算机领域,程序加壳是指在原始程序运行前,先执行一段“壳”程序,而后再把程序交还给原始程序。这样作的好处是,经过常规破解手段,没法轻易找到可执行程序的真正入口点(OEP),可有效防止破解源程序,保护重要信息数据。算法
壳加密又分为假装壳、压缩壳等多种类型,虽然加壳方法的实现细节有所不一样,但其核心加密原理都是不变,即在原始程序外创建一个单独的防御机制,所以他对于源程序无论作了压缩、加密仍是地址打乱等操做,完整的源代码仍是要被还原出来,这样才能正常运行。这就是壳加密的一个安全风险,由于壳加密是能够被众多脱壳软件绕过或剥离的。如今网络上有不少免费的脱壳软件,均可以轻松实现去壳操做,这样一来,经过加壳保护源程序就不明智了。编程
壳加密还有另一个小缺点,就是兼容性问题。由于不一样系统平台下可执行文件的差别致使对于加壳有不一样的要求。好比:DOS下的可执行文件事宜.COM结尾的文件,且无文件头,缺省程序执行地址是0x100;win32平台的PE文件,不支持自装载,须要程序使用本身的方法来管理数据,因此标准很不统一就致使了壳加密的兼容性难题不易解决。安全
除了壳加密以外,如今市场比较流行的PC软件加密还有一种算法移植方案。基本原理是把可执行文件中的一部分代码功能移植到另外一个安全硬件平台运行,保证原有程序代码不完整,这样作的好处是必须把现有程序和移植走的程序一同破解才能实现真正的破解。对这种加密方案来讲,PC以外的安全硬件平台很是重要,最多见的就是算法移植加密狗,通常选用安全级别很是高的嵌入式安全芯片来完成移植代码的运行工做。由于安全芯片具备众多防破解机制,因此其内部运行的代码不能非法读出,只要移植的代码选取合理,可以很大限度的提高可执行软件的安全。网络
但这种软件加密方案也是有缺点的,它要求开发人员具有必定嵌入式编程能力,研发须要投入的时间也会较多。加密
上述两种加密方案,都有各自的优缺点,用户还需结合本身的实际需求和应用场景,选择合适的加密方案,若是用户更注重安全,那么算法移植方案的加密狗会更适合。开发