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