原創|行業資訊|編輯:楊鵬連|2021-06-10 11:28:18.593|閱讀 424 次
概述:為您的 Android 應用程序或庫創建PreEmptive Protection? DashO?項目的最簡單方法是使用新建項目向導。我們建議您將 DashO 集成到您現有的 Gradle 項目中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
DashO-Pro是第三代的Java混淆器(obfuscator)、壓縮機(compactor)、優化工具和水印工具(watermarker)。它能有效保護和防止Java程序被反編譯和篡改,是Java代碼保護的理想選擇。DashO-Pro除了為Java代碼提供領先的代碼保護外,它還將應用程序的大小縮減到原文件的70%。如果您正在找尋為您的Java程序提供反編譯保護、提高運行速度和減少程序體積的辦法,那么我們推薦您使用DashO。
DashO可以降低和管理Java應用程序開發所帶來的風險。我們的5,000多家企業客戶和300,000多名用戶列舉了許多理由,說明他們為什么信任PreEmptive--特別是DashO--來保護他們的Java應用的安全并提高其價值。
為您的 Android 應用程序或庫創建PreEmptive Protection? DashO?項目的最簡單方法是使用新建項目向導。我們建議您將 DashO 集成到您現有的 Gradle 項目中。但是,如果您只有 APK 文件,DashO在某些情況下可以直接處理它。
集成到 Gradle 項目中(推薦)
我們建議您使用該向導來集成您的項目。如果您想查看向導更改的內容或只是手動集成,請參見下文。
先決條件
該向導會檢查您的構建環境,以將適用于 Android的新DashO Gradle 插件集成到構建過程中。它不會覆蓋您的任何源文件。通過轉到File > Project Wizard啟動向導。選擇Android(大多數項目)。向導會詢問您 Android 項目的位置。
如果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 '//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。
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_CONFIG8.忽略.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 主機必須具有:
DashO 不會處理嵌入的 APK 文件(由 Wear OS 使用)。如果您的應用程序包含 Wear OS 應用程序,如果您希望混淆 Wear 部分,請使用適用于 Android的DashO Gradle 插件。
使用向導創建 DashO 項目
該向導會檢查您的應用程序并確定用于保護它的適當設置。通過轉到File > Project Wizard啟動向導。選擇Android(APK 后處理)。向導會詢問您 APK 的位置和原始構建環境。
該向導將嘗試根據您的環境確定 Android SDK Home。選擇創建 APK 時使用的 SDK 版本。
注意:
如果無法正確解碼 APK,您將在“選擇入口點”頁面上看到錯誤。單擊取消并查看寫入控制臺的輸出以了解其他詳細信息。
該向導還將查找用于修飾代碼中的類、方法和字段的注釋,并會建議您可以啟用的潛在的基于注釋的入口點規則。如果您熟悉注釋并認為應保留使用這些注釋修飾的代碼元素,請啟用注釋入口點。
注意: 具有默認值的注釋CLASS RetentionPolicy在生成 APK 時會被 Android 構建過程刪除,并且在 DashO 處理 APK 時不會出現。RUNTIME在處理 APK 時,向導或 DashO 只能看到分配有保留策略的注釋。
此外,該向導將顯示一個復選框,允許根據用于 Hibernate 的注釋自動生成入口點規則。選中該框將設置以下規則:
向導將創建一個project.dox文件。這是 DashO 項目配置文件,包含所有項目特定的設置。
如果已經為此 APK 創建了項目文件,DashO 會詢問您是否要替換該項目。如果您選擇在現有項目上保存,您的新設置將被保存,并且將創建舊文件的備份。附加配置
某些項目詳細信息無法自動確定,應手動配置。這可以在 DashO 的用戶界面中完成。
你應該:
在輸出 - 簽名屏幕上配置簽名。如果您未配置簽名,則需要手動對混淆的 APK 進行簽名,然后才能將其安裝到設備或模擬器上。有關簽署 APK 的更多信息,請參閱//developer.android.com/tools/publishing/app-signing.html。
在輸出 – APK屏幕上的 Android 構建工具目錄中配置或驗證配置。
Zipalign在Output – APK上啟用(使用構建工具),以限制您的應用程序的內存占用。
此外,在選項 - 用戶屬性頁面上設置以下屬性可能會有所幫助:
將 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
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: