使用Allatori实现代码混淆加密


placeholder image
admin 发布于:2022-07-24 00:56:25
阅读:loading

每个软件开发人员迟早都会意识到,他不仅必须支持他制作的产品并不断更新它,试图以所有可能的方式改进它,而且还要同时保护它。在我们这个信息技术和快速变化的市场时代,这些规则是在软件开发业务中取得成功的唯一途径。每个软件开发人员迟早都会意识到,他不仅必须支持他制作的产品并不断更新它,试图以所有可能的方式改进它,而且还要同时保护它。在我们这个信息技术和快速变化的市场时代,这些规则是在软件开发业务中取得成功的唯一途径。混淆器Allatori充分利用了人类大脑在代码保护领域的发明,可供许多软件开发人员使用,他们的目的是保护他们的秘密和专有技术——这实际上意味着保护他们的未来。它的官方网站地址为“https://allatori.com/”,前面这段也是从其官网上翻译来摘选的,看到更新日志时才知道JDK的版本也到了17的版本了,当前最新版本为Allatori-8.2,可免费用于教育和非商业项目。

代码混淆加密在许多场景下还是很有必要和意义的,习惯了一些开源项目的源码阅读便捷后,再来实践一下对部署应用程序的class文件的混淆加密,普及一下知识盲区,也算是对一块知识技能的涉足。本篇文章简单的介绍一下Allatori的介绍,更多细节和深度的掌握还得靠个人的实践,本次主要简单的介绍下载的Allatori-8.2-Demo中提供的15个示例,通过示例的介绍来浅浅的整理一波。

Step 1 - Basic Library Obfuscation

基本混淆,配置文件中声明:

1)声明需要混淆的文件和输出混淆后的文件,可以支持同时对多个文件的混淆;

2)声明混淆所影响到的定义范围,如字段和方法,访问权限高于受保护的;

3)声明日志的输出文件;

Step 2 - Basic Application Obfuscation

作为一个独立的应用程序去混淆,需要排除主函数的调用类,如 main 函数作为程序启动的主函数,该函数所在的类不宜被混淆;

Step 3 - Obfuscation with Setting Classpath

设置混淆的程序应该是自己的项目代码而不应该包含所引用的第三方开源框架,另外对于有些场景的混淆需要依赖第三方开源框架,可根据类路径进行过滤;

Step 4 - Single Jar Packaging

将多个混淆的jar文件合并汇总成为一个单独的jar;

Step 5 - Introduction to Watermarks

1)混淆的时候增加水印(给混淆的jar增加秘钥),可根据水印对应的秘钥key提取对应的value值,来查看是否是某个组织的jar,secure-key-to-extract-watermark为固定的属性名,不可任意而写;

2)通过配置文件配置的水印,单独调用抽取水印的函数;

3)需要验证该例子中是否与 Single Jar存在关系,即当存在Single Jar的时候最终给单独的Jar增加水印,还是当不存在Single Jar时会给所有输出的Jar都增加水印;

Step 6 - Watermarking without Obfuscation

1)不通过配置文件config.xml设置水印,而是通过调用时 add 参数指定;

2)抽取水印的示例与Step 5中一样;

Step 7 - Watermarking of Several Jars without Obfuscation

1)不通过配置文件config.xml设置水印,而是通过调用时 add 参数指定;

2)对多个Jar设置水印,抽取水印同时也从多个Jar中抽取;

Step 8 - Using Stack Trace Utility

使用混淆后的代码报错时,根据错误堆栈和混淆日志来反解应用程序源码,所有名称和行号都恢复到它们的原始值,这确实对于调试应用程序非常有用;

Step 9 - Integration with Apache Ant

与Apache Ant集成,这几年已经没有使用甚至是听说还用 Ant 构建打包了,所以此部分示例,将不再实践;

Step 10 - Adding Expiry Date

混淆时增加可用时间期限,既截至可用日期,否则程序运行将会报错,不仅仅是在程序启动运行处增加判断逻辑,不仅会插入到main方法中,因此无法轻松删除。

Step 11 - Obfuscating Android applications

关于Android应用的混淆肯定是涉及不到了,也不用去梳理这个复杂的混淆实现。

Step 12 - Running from Maven

从Maven中运行混淆打包,官方示例中提供的有maven工程,可以从直接导入工程,使用maven运行打包验证;

Step 13 - Android Studio Integration

与Android Studio集成,这个与示例11一样,使用不到直接跳过。

Step 14 - Eclipse IDE Plugin

Allatori可以在Eclipse IDE中轻松使用:

1)将allatori.jar复制到eclipse / dropins文件夹;

2)在Eclipse中右键单击您的项目名称,在弹出菜单中选择Configure-> Add Allatori Builder(请参见屏幕截图);

3)清理重建项目,混淆过程仅在清理构建上运行。

默认的allatori.xml配置文件将在第一次运行时在项目的根文件夹中创建。

Step 15 - Custom String Encryption

将英文翻译过来仍旧是没看懂自定义字符串加密的示例,也没搞清楚示例中参数的意义,也是耐着性子在继续,太费劲。

其它说明

1)帮助文档(查看官网的config文件的xml结构): http://www.allatori.com/doc.html#structure;

2)示例中提供的MouseGestures-1.2/run_test.bat无法正常运行成功,分析原因是该命令启动时没有加载test.jar目录中的mousegestures-1.2.jar没有被加载,尝试了一个最简单的方式将后者的jar中class文件拷贝复制到test.jar文件中示例可以运行成功,但示例比较简单,就一个纯粹的Swing界面,猜测该项目示例是用于测试加密混淆的源码工程,并非是打开后有图形化界面从界面配置加密混淆的实现,参考如下图所示:

image.png


 点赞


 发表评论

当前回复:作者

 评论列表


留言区