曾经有人说.NET是最容易被反编译的开发语言。其实现如今,在常见的开发语言中,无论是.NET还是JAVA,甚至人气排名第一的JavaScript都存在容易被反编译的风险,如何保护代码不受窃取,如何应用程序不受破坏,是所有开发人员最为关系的话题。
或许在软件开发的过程中,工程师会寻找一些开源产品以节约成本,但在实际应用、分发授权、许可控制的过程中,仍不希望自己的成果被窃取。“代码保护”、“软件保护”等等这些词的热度一直经久不衰。
其中,最常见的保护方式有“代码混淆”、“代码虚拟化”以及“软件加密”。
混淆:利用花指令和代码非等价变形等技术,将程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码,可充分干扰静态分析。
虚拟化:将指令编译为虚拟代码,放在指定虚拟机中运行,目前对指令有一定的格式要求,有的函数可能不能被保护。
加密:将代码块作为数据,用许可加密函数存储,程序执行到该函数时验证许可并解密,内存中不会暴露完整的代码块,目前有的函数不可添加到保护中。
无论哪种方法,必然会借助工具来实现,接下来咱们就一起来聊聊软件代码保护的那些工具。这里说几个热议度比较高的,其他欢迎在评论区补充~
(本文篇幅较长,建议收藏阅读)
先说说软件加密保护,也有人会说是加壳保护,加壳实际上就是一种加密方式。这里我们说说VMProtect、WinLicense和Themida。
虚拟化,突变以及涉及应用程序代码突变和后续虚拟化的组合保护。
支持的平台和操作
支持从windows 2000开始的Windows家族的32/64位操作系统,以及从版本10.6开始的mac OSX
保护方式
Themida®使用SecureEngine®保护技术,该技术以最高优先级运行时,实现了前所未有的保护技术,以保护应用程序免遭高级软件破解。
SecureEngine®击败了当前可用于受保护应用程序的所有破解工具,它将确保受保护应用程序仅在安全环境中运行。
保护方式
WinLicense作为软件保护者
WinLicense使用SecureEngine®保护技术,该技术能够以最高优先级运行其代码,以实现前所未有的保护技术。这样可以保护任何具有最高安全级别的应用程序。
WinLicense作为许可证管理器
WinLicense提供了最广泛的选项和功能,可以为应用程序创建试用版和注册版。开发人员可以与WinLicense通信,以通过完整的SDK检查其应用程序的试用版或注册版的当前状态。WinLicense还提供了自动处理所有可能情况的功能。
保护方式
如果是保护知识产权的角度,脱离混淆的代码加密是伪命题,无论怎么加密,如果不加以混淆手段保护,都没有意义。如同传统软件的加壳保护,代码混淆给底层的加密算法加了最基本的保障,所以说,混淆和加密一定是相辅相成的。
再说说代码混淆保护器,.NET、Java以及JavaScript代码混淆是目前热议度较高的。.NET混淆器可试试Dotfucator、.NET Reactor;Java混淆器可试试DashO;JavaScript混淆器可试试JSDefender;当然也有针对x32和x64本机PE/ELF/Mach-O文件中代码混淆器Code Virtualizer。
通过多种方法来防止反编译,这些方法会将.NET程序集转换为任何现有工具都无法反编译的进程。
.NET Reactor还提供了强大的选项,通过使用丰富的试用版和完整版本锁来执行许可条款,以确保您的收入流。
支持的平台和操作
提供了多层保护:混淆的多种形式(重命名,字符串加密,控制流等)以及活动的运行时检查(篡改,调试,root等)。
支持的平台和操作
Windows,MacOS / OS X,Unix,Java 1.3-1.8、9-14,Java模块,Kotlin,Android 4.1+(API 16 +),J2EE,WAR,J2ME,Spring,Gradle,APK
保护方式
提供了多层保护:混淆的多种形式(重命名,字符串加密,控制流等)以及活动的运行时检查(篡改,调试,root等)。
支持的平台和操作
.NET Framework 1.0和更高版本,.NET Core 2和更高版本,.NET 5和Mono的应用程序,并有针对性地支持包括Xamarin,UWP,http://ASP.NET,.NET Standard等在内的各种框架。
Dotfuscator的构建组件可以在Windows,Mac和Linux上的.NET Framework 4.7.2 + 、. NET Core 2.1+和Mono 6+上运行。Config Editor需要Windows上的.NET Framework。
保护方式
JavaScript模糊处理技术,包括控制流变平,篡改检测和其他应用内保护转换。
支持的平台和操作
JavaScript框架,运行时和捆绑器,包括Angular,Node,React,React Native,Webpack等。
保护方式
在任何x32和x64本机PE / ELF / Mach-O文件中保护您敏感的代码区域。
由于.NET应用程序的性质,Code Virtualizer无法保护.NET应用程序中的敏感代码。
支持的平台和操作
适用于Windows,Linux和Mac OS X应用程序
保护方式
以上就是目前市面上我所了解的软件和代码保护工具,欢迎在评论区留言补充。