原創(chuàng)|行業(yè)資訊|編輯:楊鵬連|2021-06-10 11:28:18.593|閱讀 445 次
概述:為您的 Android 應(yīng)用程序或庫(kù)創(chuàng)建PreEmptive Protection? DashO?項(xiàng)目的最簡(jiǎn)單方法是使用新建項(xiàng)目向?qū)АN覀兘ㄗh您將 DashO 集成到您現(xiàn)有的 Gradle 項(xiàng)目中。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
DashO-Pro是第三代的Java混淆器(obfuscator)、壓縮機(jī)(compactor)、優(yōu)化工具和水印工具(watermarker)。它能有效保護(hù)和防止Java程序被反編譯和篡改,是Java代碼保護(hù)的理想選擇。DashO-Pro除了為Java代碼提供領(lǐng)先的代碼保護(hù)外,它還將應(yīng)用程序的大小縮減到原文件的70%。如果您正在找尋為您的Java程序提供反編譯保護(hù)、提高運(yùn)行速度和減少程序體積的辦法,那么我們推薦您使用DashO。
	DashO可以降低和管理Java應(yīng)用程序開發(fā)所帶來的風(fēng)險(xiǎn)。我們的5,000多家企業(yè)客戶和300,000多名用戶列舉了許多理由,說明他們?yōu)槭裁葱湃蜳reEmptive--特別是DashO--來保護(hù)他們的Java應(yīng)用的安全并提高其價(jià)值。
為您的 Android 應(yīng)用程序或庫(kù)創(chuàng)建PreEmptive Protection? DashO?項(xiàng)目的最簡(jiǎn)單方法是使用新建項(xiàng)目向?qū)АN覀兘ㄗh您將 DashO 集成到您現(xiàn)有的 Gradle 項(xiàng)目中。但是,如果您只有 APK 文件,DashO在某些情況下可以直接處理它。
	集成到 Gradle 項(xiàng)目中(推薦)
我們建議您使用該向?qū)砑赡捻?xiàng)目。如果您想查看向?qū)Ц牡膬?nèi)容或只是手動(dòng)集成,請(qǐng)參見下文。
先決條件
該向?qū)?huì)檢查您的構(gòu)建環(huán)境,以將適用于 Android的新DashO Gradle 插件集成到構(gòu)建過程中。它不會(huì)覆蓋您的任何源文件。通過轉(zhuǎn)到File > Project Wizard啟動(dòng)向?qū)А_x擇Android(大多數(shù)項(xiàng)目)。向?qū)?huì)詢問您 Android 項(xiàng)目的位置。
 
	如果project.dox存在,向?qū)⒃儐柲欠褚鎿Q它。如果您選擇在現(xiàn)有項(xiàng)目上保存,您的新設(shè)置將被保存,并且將創(chuàng)建舊文件的備份。
然后 DashO GUI 將加載項(xiàng)目,并且可能會(huì)提示您構(gòu)建(例如gradlew assembleRelease)。構(gòu)建完成后,您可以通過轉(zhuǎn)到Project > Reload Class List來重新加載項(xiàng)目的類。
	注意:您可能還需要啟用 R8。
恭喜!您的應(yīng)用程序或庫(kù)現(xiàn)在受到 DashO 的保護(hù)!
手動(dòng)集成 DashO
	該向?qū)?duì)您的 Gradle 構(gòu)建配置進(jìn)行了一些更改,這些更改也可以手動(dòng)完成:
1.將 PreEmptive Solutions Maven 存儲(chǔ)庫(kù)添加到您的 buildscript 存儲(chǔ)庫(kù),在您的根目錄中build.gradle:
 buildscript {
     repositories {
         maven { url '//maven.preemptive.com' } //add this line
     }
 }
2.將插件的工件添加到您的 buildscript 依賴項(xiàng)中: buildscript {
     dependencies {
         classpath 'com.preemptive.dasho:dasho-android:1.4.+' //add this line
     }
 }
3.應(yīng)用 Android Gradle 插件后應(yīng)用插件: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.確保您已為構(gòu)建minifyEnabled設(shè)置true為release,以允許重命名和收縮: android {
     buildTypes {
         release {
             minifyEnabled true
         }
     }
 }
注意:您可能還需要啟用 R8。
	6.如果這是一個(gè) Android 庫(kù) (AAR) 項(xiàng)目,您應(yīng)該在 R8 配置中添加規(guī)則以保留庫(kù)的公共 API。
創(chuàng)建一個(gè)library-rules.pro在項(xiàng)目目錄中命名的文件,內(nèi)容如下:
 -keep public class !dasho.**,!**.dasho.**,* {
     public protected *;
 }
 -keepparameternames
 -renamesourcefileattribute SourceFile
 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                 SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
通過添加或更新以下proguardFiles行來配置 R8 以使用這些規(guī)則
	
 android {
     buildTypes {
         release {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'library-rules.pro'
         }
     }
 }
7.在包含應(yīng)用程序或庫(kù)文件的目錄中生成默認(rèn)的Android 模式配置文件 。使用定義的屬性組裝您的項(xiàng)目:project.doxbuild.gradleGENERATE_DASHO_CONFIG
gradlew clean assembleRelease -DGENERATE_DASHO_CONFIG8.忽略.dasho源代碼控制系統(tǒng)中的目錄(例如添加.dasho/到.gitignore文件)。
恭喜!您的應(yīng)用程序或庫(kù)現(xiàn)在受到 DashO 的保護(hù)!
如果您在構(gòu)建過程中遇到任何問題,請(qǐng)參閱DashO 故障排除和DashO Gradle Plugin for Android 故障排除。
你可以描述增強(qiáng)你的保護(hù)之下。
Android Gradle 插件將根據(jù)您的項(xiàng)目配置自動(dòng)生成保留規(guī)則,以防止 R8 重命名或刪除必要的類和成員。如果遇到問題,您可能需要指定額外的保留規(guī)則。有關(guān)如何配置規(guī)則文件,請(qǐng)參閱下面的R8。
啟用 R8
	如果您運(yùn)行的是 3.2.x 或 3.3.x 版 Android Gradle 插件,請(qǐng)將以下內(nèi)容添加到您的gradle.properties文件中:
#Only for Android Gradle Plugin v3.2.x or v3.3.x android.enableR8=true加強(qiáng)保護(hù)
選擇 DashO 的默認(rèn)Android 模式保護(hù)設(shè)置來為您的應(yīng)用程序提供相當(dāng)強(qiáng)大的保護(hù),而無需您執(zhí)行其他配置。您可以通過調(diào)整 DashO 配置和在 R8 中啟用某些規(guī)則來改進(jìn)這一點(diǎn)。
您可以通過在DashO GUI 中修改您的項(xiàng)目文件來增強(qiáng)您的保護(hù)。
特別是,您可能希望將Checks添加到您的項(xiàng)目中。檢查為您的應(yīng)用程序或庫(kù)添加了額外的保護(hù)層,使其能夠抵抗調(diào)試、掛鉤或篡改的嘗試。檢查還可以防止您的軟件在不安全的環(huán)境中運(yùn)行,包括有root 權(quán)限的設(shè)備和Android 模擬器。
您可能還想增加字符串加密級(jí)別或增加在Try/Catch Control Flow Obfuscation 中注入的 try/catch 塊的數(shù)量。
您可能還想啟用資源加密,它可以加密應(yīng)用程序中的資產(chǎn)和原始資源。
如果您想為不同的構(gòu)建變體提供不同的保護(hù)設(shè)置,您可以使用特定于變體的名稱復(fù)制初始項(xiàng)目文件。
R8
	R8 是通過引用應(yīng)用程序或庫(kù)中的規(guī)則文件來配置的build.gradle。如果您還沒有這些文件,則需要?jiǎng)?chuàng)建一個(gè)空文件。下面的示例啟用一組默認(rèn)的 Android 規(guī)則并配置migrated-rules.pro可用于本地設(shè)置的附加文件 ( )。
android {
    buildTypes {
        release {
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'migrated-rules.pro'
        }
    }
}
此規(guī)則文件 ,migrated-rules.pro通常與build.gradle.
注意:R8 可能會(huì)在優(yōu)化規(guī)則中發(fā)出有關(guān)忽略選項(xiàng)的警告,但可以安全地忽略這些警告。
默認(rèn)情況下,R8 將重命名包名稱的各個(gè)部分,例如重命名com.preemptive.dasho為m.e.r. 盡管刪除了原始名稱,但保留了原始包層次結(jié)構(gòu)。這可能意味著類之間的關(guān)系,因此理論上可能會(huì)泄漏信息。
	將這些包合并在一起,例如重命名所有類以便它們共享相同的包,可以消除這種風(fēng)險(xiǎn)。將以下內(nèi)容添加到 'migrated-rules.pro',其中com.yourcompany類將被移動(dòng)到的包中:
-repackageclasses com.yourcompany -allowaccessmodification該-repackageclasses規(guī)則將類移動(dòng)到單個(gè)包中。該-allowaccessmodification規(guī)則將允許 R8 更改對(duì)類和類成員的有效訪問,從而允許將更多類移動(dòng)到同一個(gè)包中。此規(guī)則類似于 DashO 的標(biāo)準(zhǔn)模式功能Make Public。
	注意:您可能不需要-allowaccessmodification明確指定,它包含在proguard-android-optimize.txt(如上)中的規(guī)則中。
任何被確定為入口點(diǎn)的類(清單中提到的活動(dòng)等),以及通過保留規(guī)則排除的其他類將不會(huì)被移動(dòng)。
后處理 APK
僅當(dāng)將 DashO 集成到您的 Android 應(yīng)用程序的構(gòu)建過程中不可行時(shí),才推薦使用 此方法。
本節(jié)將引導(dǎo)您設(shè)置現(xiàn)有的 Android 應(yīng)用程序 (APK) 項(xiàng)目以使用PreEmptive Protection DashO。這種方法不同于顯著從項(xiàng)目集成了達(dá)紹到使用的搖籃構(gòu)建達(dá)紹搖籃插件Android的:所有的重命名和刪除被達(dá)紹處理,而不是委托混淆的那些部分Android的R8 minifier。
在處理 APK 時(shí),DashO 使用第三方 dex2jar 和 Apktool 實(shí)用程序來提取類。DashO 然后混淆這些類,并使用這些工具輸出一個(gè)新的 APK。
先決條件
	DashO 主機(jī)必須具有:
	
DashO 不會(huì)處理嵌入的 APK 文件(由 Wear OS 使用)。如果您的應(yīng)用程序包含 Wear OS 應(yīng)用程序,如果您希望混淆 Wear 部分,請(qǐng)使用適用于 Android的DashO Gradle 插件。
使用向?qū)?chuàng)建 DashO 項(xiàng)目
該向?qū)?會(huì)檢查您的應(yīng)用程序并確定用于保護(hù)它的適當(dāng)設(shè)置。通過轉(zhuǎn)到File > Project Wizard啟動(dòng)向?qū)А_x擇Android(APK 后處理)。向?qū)?huì)詢問您 APK 的位置和原始構(gòu)建環(huán)境。
 
	該向?qū)L試根據(jù)您的環(huán)境確定 Android SDK Home。選擇創(chuàng)建 APK 時(shí)使用的 SDK 版本。
 
	
	注意: 
如果無法正確解碼 APK,您將在“選擇入口點(diǎn)”頁(yè)面上看到錯(cuò)誤。單擊取消并查看寫入控制臺(tái)的輸出以了解其他詳細(xì)信息。
該向?qū)н€將查找用于修飾代碼中的類、方法和字段的注釋,并會(huì)建議您可以啟用的潛在的基于注釋的入口點(diǎn)規(guī)則。如果您熟悉注釋并認(rèn)為應(yīng)保留使用這些注釋修飾的代碼元素,請(qǐng)啟用注釋入口點(diǎn)。
	注意: 具有默認(rèn)值的注釋CLASS RetentionPolicy在生成 APK 時(shí)會(huì)被 Android 構(gòu)建過程刪除,并且在 DashO 處理 APK 時(shí)不會(huì)出現(xiàn)。RUNTIME在處理 APK 時(shí),向?qū)Щ?DashO 只能看到分配有保留策略的注釋。
此外,該向?qū)@示一個(gè)復(fù)選框,允許根據(jù)用于 Hibernate 的注釋自動(dòng)生成入口點(diǎn)規(guī)則。選中該框?qū)⒃O(shè)置以下規(guī)則:
	
 
	向?qū)?chuàng)建一個(gè)project.dox文件。這是 DashO 項(xiàng)目配置文件,包含所有項(xiàng)目特定的設(shè)置。
如果已經(jīng)為此 APK 創(chuàng)建了項(xiàng)目文件,DashO 會(huì)詢問您是否要替換該項(xiàng)目。如果您選擇在現(xiàn)有項(xiàng)目上保存,您的新設(shè)置將被保存,并且將創(chuàng)建舊文件的備份。附加配置
某些項(xiàng)目詳細(xì)信息無法自動(dòng)確定,應(yīng)手動(dòng)配置。這可以在 DashO 的用戶界面中完成。
你應(yīng)該:
在輸出 - 簽名屏幕上配置簽名。如果您未配置簽名,則需要手動(dòng)對(duì)混淆的 APK 進(jìn)行簽名,然后才能將其安裝到設(shè)備或模擬器上。有關(guān)簽署 APK 的更多信息,請(qǐng)參閱//developer.android.com/tools/publishing/app-signing.html。
在輸出 – APK屏幕上的 Android 構(gòu)建工具目錄中配置或驗(yàn)證配置。
Zipalign在Output – APK上啟用(使用構(gòu)建工具),以限制您的應(yīng)用程序的內(nèi)存占用。
	此外,在選項(xiàng) - 用戶屬性頁(yè)面上設(shè)置以下屬性可能會(huì)有所幫助:
	
將 DashO 集成到構(gòu)建中
	如果您需要自動(dòng)化獨(dú)立 APK 的混淆,以下是與Gradle或Ant構(gòu)建系統(tǒng)集成的示例。它們分別使用我們的DashO Gradle 插件 Java和DashO Ant 插件。
您可以使用DashO Gradle Plugins for Java 中的com.preemptive.dashoCustom插件從Gradle 構(gòu)建調(diào)用 DashO 。
	注意:此集成使用DashO Gradle Plugins for Java,它不同于DashO Gradle Plugin for Android。
將以下內(nèi)容添加到您的構(gòu)建腳本中:
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會(huì)因平臺(tái)而異。有關(guān)詳細(xì)信息,請(qǐng)參閱安裝頁(yè)面。
	要運(yùn)行,請(qǐng)調(diào)用gradlew obfuscate。
注意:
注意${gradleInput}和周圍的單引號(hào)${gradleOutput}。這些文字字符串需要作為屬性值傳遞。
環(huán)境
	通過將以下內(nèi)容添加到您的構(gòu)建腳本中,從 Ant 調(diào)用 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 插件。要運(yùn)行,請(qǐng)調(diào)用ant obfuscate。
假設(shè)您已經(jīng)安裝了 DashO 的 Ant Task。DashO 的 Ant 任務(wù)文檔 中提供了有關(guān)安裝Ant 任務(wù)的信息。
安裝混淆的 APK
簽名后,可以使用標(biāo)準(zhǔn) Android 工具安裝混淆的 APK:
adb install {filename}.apk
這將在正在運(yùn)行的模擬器或連接的設(shè)備上安裝 APK。然后,您可以通過導(dǎo)航到應(yīng)用程序列表來訪問該應(yīng)用程序。安裝的應(yīng)用程序?qū)⑾癜惭b在設(shè)備上的任何其他 Android 應(yīng)用程序一樣顯示。
	
	
	
	如果您對(duì)該加密/解密軟件感興趣,可以在慧都網(wǎng)免費(fèi)下載最新試用版,加入加密/解密QQ交流群:740060302
需要更詳細(xì)的版本報(bào)價(jià)比較?歡迎咨詢我們的 ~或者直接撥打023-68661681
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: