DashO 软件版本简介
- PreEmptive_Protection_DashOEval_10.0.1 是针对Java、Android和Kotlin应用程序的应用程序加固和混淆工具,DashO以多种方式保护库或应用程序
-
使编译后的代码变得模糊,从而使使用静态技术进行分析变得更加困难
-
注入代码来自动态检测和响应各种威胁,这使得它甚至难以开始篡改、调试或检查
-
可以将调用注入到定制代码中,定制代码可以选择的任何方式响应威胁,从而完全控制应用程序在检测到威胁时的行为
DashO 混淆工作机制
- 每层都提供了总体保护策略的重要组成部分;如果一层受到威胁,其他层将继续提供有效的保护。不仅存在多层,而且每个层都具有高级功能,这些功能比其他混淆产品使用的简单技术更强大。
- 保护的第一层是混淆技术,该技术对Java字节码进行操作,使逆向工程变得困难或不可能。
- 下一层保护是运行受保护软件时发生的检查。当软件检测到攻击者试图对其进行篡改或反向工程,或者该软件在不安全的环境中运行时,它可以使用自定义逻辑进行防御。检查包括:篡改检查,调试检查,拆卸,优化
DashO 安装过程
- 下载 : https://www.preemptive.com/downloads 它提供多个版本 Dotfuscator Professional for .NET 和 DashO Professional for Java 。当然了每个版本都有对应的liux和windows版的可供下载 。
- 本次调研使用的是java中的windows版本,安装的时候直接点击exe文件就可以安装。
- 安装完成后,首次启动首先需要到C:/Program Files/PreEmptive Protection DashO X.y/app这个目录下修改jdk路径,然后需要输入license ,license的申请是在注册账号的时候会发到你的邮箱中。
- 针对java你可以对.jar或者.war进行模糊,如果要对war包进行模糊,点击首页中的new project然后选择web app,如下图所示:
- 通过上面步骤后会让你选择一个目录保存你的DashO project Files 然后你会在该目录下看到dasho的文件夹里面包含三个文件
- obfuscate.xml 一个Ant脚本会打开.war文件,运行DashO项目文件,然后重新组装.war文件。
- obfuscate.properties 由obfuscate.xml读取的Java属性文件。使用此文件更改模糊后war包放的位置默认值。
-
接下来就要执行DashO的ant混淆命令了,此处会用到ant的环境,所以如果机器没有ant环境可以先设置环境,设置好后在上面的目录下执行 ant -f obfuscate.xml
DashO 混淆 WAR 包
- 首先通过Dasho软件分析后会生成一个名为dasho的文件夹
- 通过ant -f obfuscate.xml命令后会在指定的文件夹在指定文件夹生成两个文件夹.obfus以及.unwar
- 将.war文件提取到一个目录中。默认目录是.unwar。这个.unwar文件可以通过命令重新回到可执行的war包文件
- 它根据.unwar目录的内容运行向导生成的项目文件。结果临时存储在.obfus目录中。
- 它将.war文件与混淆的代码重新组装到一个新文件中,并将_dashoed附加到名称后面。
- 利用DashO混淆后不会改变应用功能
-
混淆的前后对比
- 整个war包的结构没什么变化 ,大小也差不多,内部的class发生了变化因此会导致重新打包后的war的大小有所变化。
- 反编译混淆后的class文件会发现混淆后的会对java代码进行压缩改造,例如变量名称,方法名的简化
- 混淆后会对字符串加密将字符串隐藏在可执行文件中,仅在需要时才恢复其原始值
- 混淆前后的war包通过jetty上正常运行
DashO和Jenkins Pipeline 集成
TODO1: DashO和Jenkins Pipeline 集成过程
DashO POC 总结
- 能成功的输出一个war包,并且能够在jetty上执行
TODO2: 总结是否能够集成到pipeline 打包阶段
3.war包混淆效率
war包混淆前大小 | war包混淆后大小 | 混淆花费总时间 |
80M | 77M | 5s |