DashO用户指南:如何在Android 应用程序中创建DashO项目

原创|行业资讯|编辑:杨鹏连|2021-06-10 11:28:18.593|阅读 13 次

概述:为您的 Android 应用程序或库创建PreEmptive Protection™ DashO™项目的最简单方法是使用新建项目向导。我们建议您将 DashO 集成到您现有的 Gradle 项目中。

# 31款JAVA开发必备控件和工具 # 企业数字化建设合规无风险[专题]

相关链接:

DashO-Pro是第三代的Java混淆器(obfuscator)、压缩机(compactor)、优化工具和水印工具(watermarker)。它能有效保护和防止Java程序被反编译和篡改,是Java代码保护的理想选择。DashO-Pro除了为Java代码提供领先的代码保护外,它还将应用程序的大小缩减到原文件的70%。如果您正在找寻为您的Java程序提供反编译保护、提高运行速度和减少程序体积的办法,那么我们推荐您使用DashO。

DashO可以降低和管理Java应用程序开发所带来的风险。我们的5,000多家企业客户和300,000多名用户列举了许多理由,说明他们为什么信任PreEmptive--特别是DashO--来保护他们的Java应用的安全并提高其价值。

点击下载DashO最新版

为您的 Android 应用程序或库创建PreEmptive Protection™ DashO™项目的最简单方法是使用新建项目向导。我们建议您将 DashO 集成到您现有的 Gradle 项目中。但是,如果您只有 APK 文件,DashO在某些情况下可以直接处理它。

集成到 Gradle 项目中(推荐)
我们建议您使用该向导来集成您的项目。如果您想查看向导更改的内容或只是手动集成,请参见下文。

先决条件

  • Android Gradle 插件 v3.2.0 或更高版本
通过向导集成 DashO

该向导会检查您的构建环境,以将适用于 Android的新DashO Gradle 插件集成到构建过程中。它不会覆盖您的任何源文件。通过转到File > Project Wizard启动向导。选择Android(大多数项目)。向导会询问您 Android 项目的位置。

选择包含项目(或相应模块)的目录并单击Next。然后,单击Finish以允许向导修改 Gradle 配置并创建project.dox.

如果project.dox存在,向导将询问您是否要替换它。如果您选择在现有项目上保存,您的新设置将被保存,并且将创建旧文件的备份。

然后 DashO GUI 将加载项目,并且可能会提示您构建(例如gradlew assembleRelease)。构建完成后,您可以通过转到Project > Reload Class List来重新加载项目的类。

注意:您可能还需要启用 R8。
恭喜!您的应用程序或库现在受到 DashO 的保护!

手动集成 DashO

该向导对您的 Gradle 构建配置进行了一些更改,这些更改也可以手动完成:
1.将 PreEmptive Solutions Maven 存储库添加到您的 buildscript 存储库,在您的根目录中build.gradle:

 buildscript {
     repositories {
         maven { url 'https://maven.preemptive.com' } //add this line
     }
 }
2.将插件的工件添加到您的 buildscript 依赖项中:
 buildscript {
     dependencies {
         classpath 'com.preemptive.dasho:dasho-android:1.4.+' //add this line
     }
 }
3.应用 Android Gradle 插件后应用插件:
 apply plugin: 'com.android.application' //could also be 'com.android.library'
 apply plugin: 'com.preemptive.dasho.android' //add this line
或者
 plugins {
     id 'com.android.application' //could also be 'com.android.library'
     id 'com.preemptive.dasho.android' //add this line
 }
4.确保您已为构建minifyEnabled设置true为release,以允许重命名和收缩:
 android {
     buildTypes {
         release {
             minifyEnabled true
         }
     }
 }
注意:您可能还需要启用 R8。
5.设置DashO 主页。如果 DashO 安装在标准位置,则不需要这样做。请注意,有多种方法可以配置 DashO Home。

6.如果这是一个 Android 库 (AAR) 项目,您应该在 R8 配置中添加规则以保留库的公共 API。
创建一个library-rules.pro在项目目录中命名的文件,内容如下:

 -keep public class !dasho.**,!**.dasho.**,* {
     public protected *;
 }

 -keepparameternames
 -renamesourcefileattribute SourceFile
 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                 SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
通过添加或更新以下proguardFiles行来配置 R8 以使用这些规则

 android {
     buildTypes {
         release {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'library-rules.pro'
         }
     }
 }
7.在包含应用程序或库文件的目录中生成默认的Android 模式配置文件 。使用定义的属性组装您的项目:project.doxbuild.gradleGENERATE_DASHO_CONFIG
 gradlew clean assembleRelease -DGENERATE_DASHO_CONFIG
8.忽略.dasho源代码控制系统中的目录(例如添加.dasho/到.gitignore文件)。

恭喜!您的应用程序或库现在受到 DashO 的保护!

如果您在构建过程中遇到任何问题,请参阅DashO 故障排除和DashO Gradle Plugin for Android 故障排除。

你可以描述增强你的保护之下。

Android Gradle 插件将根据您的项目配置自动生成保留规则,以防止 R8 重命名或删除必要的类和成员。如果遇到问题,您可能需要指定额外的保留规则。有关如何配置规则文件,请参阅下面的R8。

启用 R8

如果您运行的是 3.2.x 或 3.3.x 版 Android Gradle 插件,请将以下内容添加到您的gradle.properties文件中:

#Only for Android Gradle Plugin v3.2.x or v3.3.x
android.enableR8=true
加强保护

选择 DashO 的默认Android 模式保护设置来为您的应用程序提供相当强大的保护,而无需您执行其他配置。您可以通过调整 DashO 配置和在 R8 中启用某些规则来改进这一点。

您可以通过在DashO GUI 中修改您的项目文件来增强您的保护。

特别是,您可能希望将Checks添加到您的项目中。检查为您的应用程序或库添加了额外的保护层,使其能够抵抗调试、挂钩或篡改的尝试。检查还可以防止您的软件在不安全的环境中运行,包括有root 权限的设备和Android 模拟器。

您可能还想增加字符串加密级别或增加在Try/Catch Control Flow Obfuscation 中注入的 try/catch 块的数量。

您可能还想启用资源加密,它可以加密应用程序中的资产和原始资源。

如果您想为不同的构建变体提供不同的保护设置,您可以使用特定于变体的名称复制初始项目文件。

R8

R8 是通过引用应用程序或库中的规则文件来配置的build.gradle。如果您还没有这些文件,则需要创建一个空文件。下面的示例启用一组默认的 Android 规则并配置migrated-rules.pro可用于本地设置的附加文件 ( )。

android {
    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'migrated-rules.pro'
        }
    }
}
此规则文件 ,migrated-rules.pro通常与build.gradle.

注意:R8 可能会在优化规则中发出有关忽略选项的警告,但可以安全地忽略这些警告。

默认情况下,R8 将重命名包名称的各个部分,例如重命名com.preemptive.dasho为m.e.r. 尽管删除了原始名称,但保留了原始包层次结构。这可能意味着类之间的关系,因此理论上可能会泄漏信息。

将这些包合并在一起,例如重命名所有类以便它们共享相同的包,可以消除这种风险。将以下内容添加到 'migrated-rules.pro',其中com.yourcompany类将被移动到的包中:

-repackageclasses com.yourcompany
-allowaccessmodification
该-repackageclasses规则将类移动到单个包中。该-allowaccessmodification规则将允许 R8 更改对类和类成员的有效访问,从而允许将更多类移动到同一个包中。此规则类似于 DashO 的标准模式功能Make Public。

注意:您可能不需要-allowaccessmodification明确指定,它包含在proguard-android-optimize.txt(如上)中的规则中。
任何被确定为入口点的类(清单中提到的活动等),以及通过保留规则排除的其他类将不会被移动。

后处理 APK

仅当将 DashO 集成到您的 Android 应用程序的构建过程中不可行时,才推荐使用 此方法。

本节将引导您设置现有的 Android 应用程序 (APK) 项目以使用PreEmptive Protection DashO。这种方法不同于显著从项目集成了达绍到使用的摇篮构建达绍摇篮插件Android的:所有的重命名和删除被达绍处理,而不是委托混淆的那些部分Android的R8 minifier。

在处理 APK 时,DashO 使用第三方 dex2jar 和 Apktool 实用程序来提取类。DashO 然后混淆这些类,并使用这些工具输出一个新的 APK。

先决条件

DashO 主机必须具有:

  • Android SDK 工具修订版 10 或更高版本
  • Java 8 或更高版本必须在系统路径上
注意:
此方法不适用于:
Multidex APK 文件。
Android 库(.aar文件)。
如果适用,请使用Gradle集成。 

DashO 不会处理嵌入的 APK 文件(由 Wear OS 使用)。如果您的应用程序包含 Wear OS 应用程序,如果您希望混淆 Wear 部分,请使用适用于 Android的DashO Gradle 插件。

使用向导创建 DashO 项目

该向导会检查您的应用程序并确定用于保护它的适当设置。通过转到File > Project Wizard启动向导。选择Android(APK 后处理)。向导会询问您 APK 的位置和原始构建环境。

该向导要求您选择一个有效的 APK 文件。

该向导将尝试根据您的环境确定 Android SDK Home。选择创建 APK 时使用的 SDK 版本。

该向导会分析AndroidManifest.xmlAPK 中的、资源和已编译的类,以确定应用程序的入口点。您可能会看到一些默认情况下未选中的入口点。这些是非 Android 应用程序通常使用的入口点。除非您知道某些选择不正确,否则不应对其进行修改。

注意: 
如果无法正确解码 APK,您将在“选择入口点”页面上看到错误。单击取消并查看写入控制台的输出以了解其他详细信息。
该向导还将查找用于修饰代码中的类、方法和字段的注释,并会建议您可以启用的潜在的基于注释的入口点规则。如果您熟悉注释并认为应保留使用这些注释修饰的代码元素,请启用注释入口点。

注意: 具有默认值的注释CLASS RetentionPolicy在生成 APK 时会被 Android 构建过程删除,并且在 DashO 处理 APK 时不会出现。RUNTIME在处理 APK 时,向导或 DashO 只能看到分配有保留策略的注释。
此外,该向导将显示一个复选框,允许根据用于 Hibernate 的注释自动生成入口点规则。选中该框将设置以下规则:

  • 防止任何带有注释的类javax.persistence.Entity被重命名或删除。
  • 防止删除带有注释javax.persistence.Entity或注释的类的以下任何成员javax.persistence.Embedded:
字段
Getters(名称以get或开头的 0 参数方法is)
Setter(名称以 开头的 1 参数方法set)

向导将创建一个project.dox文件。这是 DashO 项目配置文件,包含所有项目特定的设置。

如果已经为此 APK 创建了项目文件,DashO 会询问您是否要替换该项目。如果您选择在现有项目上保存,您的新设置将被保存,并且将创建旧文件的备份。

附加配置

某些项目详细信息无法自动确定,应手动配置。这可以在 DashO 的用户界面中完成。

你应该:

在输出 - 签名屏幕上配置签名。如果您未配置签名,则需要手动对混淆的 APK 进行签名,然后才能将其安装到设备或模拟器上。有关签署 APK 的更多信息,请参阅http://developer.android.com/tools/publishing/app-signing.html。

在输出 – APK屏幕上的 Android 构建工具目录中配置或验证配置。

Zipalign在Output – APK上启用(使用构建工具),以限制您的应用程序的内存占用。

此外,在选项 - 用户属性页面上设置以下属性可能会有所帮助:

  • ANDROID_BUILD_TOOLS_HOME– 您希望使用的 Android 构建工具的位置。指定的此目录应包含zipalign可执行文件(例如c:\android-sdk\build-tools\27.0.3)。如果您使用的是 19.1.0 之前的构建工具版本,则此可执行文件不在该build-tools目录下,而应在该tools目录下。该向导会尝试检测 Android SDK 的build-tools目录以帮助进行此配置。
  • APKTOOL_FRAMEWORK_DIR– 包含与 Apktool 一起使用的框架文件的目录。这仅在默认框架文件不起作用的极少数情况下才有必要(例如自定义设备或 Android 测试版)。有关提取必要框架的说明,请参阅http://ibotpeaches.github.io/Apktool/documentation/#frameworks。
  • APKTOOL_JRE– 与 Apktool 一起使用的 Java 主页。这必须指向 Java 8 或更高版本。(例如C:\Program Files\Java\jre1.8.0)。如果您已经使用 Java 8(或更高版本)运行 DashO 并且它在您的系统路径上,则此设置是可选的。
  • SKIP_APK_MANIFEST– 此可选设置将启用跳过AndroidManifest.xmlAPK 内文件的处理。如果清单中提到的类都没有被重命名,则可以将其设置为“true”。
注意:只要 DashO 和 Android SDK 可用,就可以
将project.dox文件从一台机器复制到另一台机器。您可能需要更新ANDROID_BUILD_TOOLS_HOME以指向 Android SDK 的新位置。

将 DashO 集成到构建中

如果您需要自动化独立 APK 的混淆,以下是与Gradle或Ant构建系统集成的示例。它们分别使用我们的DashO Gradle 插件 Java和DashO Ant 插件。
您可以使用DashO Gradle Plugins for Java 中的com.preemptive.dashoCustom插件从Gradle 构建调用 DashO 。

注意:此集成使用DashO Gradle Plugins for Java,它不同于DashO Gradle Plugin for Android。
将以下内容添加到您的构建脚本中:

buildscript {
    repositories {
        flatDir dirs: "{DashO Home}/gradle"
    }
    dependencies {
        classpath "com.preemptive:dasho:X.Y.+"
    }
}

apply plugin: 'com.preemptive.dashoCustom'

dashOConfig {
    dashOHome = '{DashO Home}'
    doxFilename = 'project.dox'
}

task obfuscate (type:DashOFileTask) {
    from("application.apk")  //Where application.apk is replaced by the actual filename and path
    to("application-ob.apk")
    addUserProperty("apkInput", '${gradleInput}')
    addUserProperty("apkOutput", '${gradleOutput}')
}
DashO Home会因平台而异。有关详细信息,请参阅安装页面。

要运行,请调用gradlew obfuscate。
注意:
注意${gradleInput}和周围的单引号${gradleOutput}。这些文字字符串需要作为属性值传递。

环境

通过将以下内容添加到您的构建脚本中,从 Ant 调用 DashO:

<typedef onerror="failall" resource="preemptive/dasho/anttask/antlib.xml"/>
<target name="obfuscate" description="Obfuscate the application.">
    <obfuscate project="project.dox">
        <sysproperty key="apkInput" value="application.apk" />
        <!-- Where application.apk is replaced by the actual filename and path -->
        <sysproperty key="apkOutput" value="application-ob.apk" />
    </obfuscate>
</target>
这将包含 DashO 的 Ant 插件。要运行,请调用ant obfuscate。

假设您已经安装了 DashO 的 Ant Task。DashO 的 Ant 任务文档 中提供了有关安装Ant 任务的信息。

安装混淆的 APK

签名后,可以使用标准 Android 工具安装混淆的 APK:

adb install {filename}.apk

这将在正在运行的模拟器或连接的设备上安装 APK。然后,您可以通过导航到应用程序列表来访问该应用程序。安装的应用程序将像安装在设备上的任何其他 Android 应用程序一样显示。


如果您对该加密/解密软件感兴趣,可以在慧都网免费下载最新试用版,加入加密/解密QQ交流群:740060302

需要更详细的版本报价比较?欢迎咨询我们的 慧都客服~或者直接拨打023-68661681


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:PreEmptive

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
在线咨询
联系我们
TOP
在线客服系统
live chat