0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Java代碼加密支持Android App Bundle動(dòng)態(tài)化框架

幾維安全 ? 來(lái)源:幾維安全 ? 作者:幾維安全 ? 2020-07-29 16:13 ? 次閱讀

傳統(tǒng)App加殼技術(shù)無(wú)法應(yīng)用在App Bundle模式生成的數(shù)據(jù)包之上。然而,幾維安全推出的Java2C加固方案完美支持Android App Bundle動(dòng)態(tài)化框架,守護(hù)企業(yè)的核心代碼和數(shù)據(jù)安全。

App 瘦身新姿勢(shì):Android App Bundle

Android App Bundle是借助Split Apk完成動(dòng)態(tài)加載,使用AAB動(dòng)態(tài)下發(fā)方式,可以大幅度減少應(yīng)用體積,加快用戶安裝速度。使用Android的新應(yīng)用發(fā)布格式和Google Play的工臺(tái)交付上傳應(yīng)用,生成和提供針對(duì)每個(gè)用戶的設(shè)備進(jìn)行優(yōu)化的APK。只須在 Android Studio 中構(gòu)建一個(gè)應(yīng)用 (App Bundle),就可以將應(yīng)用所需的全部?jī)?nèi)容 (適用于所有設(shè)備) 都涵蓋在內(nèi):所有語(yǔ)言、所有設(shè)備屏幕大小、所有硬件架構(gòu)。它本身并不支持動(dòng)態(tài)化,只是動(dòng)態(tài)化的一個(gè)載體文件,真正實(shí)現(xiàn)邏輯并不是它。

1.Split APKs

多APK支持以下類型屏幕密度ABI,使用新的拆分機(jī)制,構(gòu)建同一個(gè)應(yīng)用程序的hdpi版本和mdpi版本,能夠共享很多的任務(wù) (如 javac,dx,proguard)。此外,它會(huì)被認(rèn)為是一個(gè)單一的variant,并且同一個(gè)測(cè)試程序?qū)?huì)被用來(lái)測(cè)試每個(gè)多APK。

2.Dynamic Feature Module

這個(gè)概念感覺(jué)像是游戲里面到某個(gè)新地圖才開(kāi)始下載那樣,不是一來(lái)就把所有資源都下載下來(lái)。這樣顯得apk更小了,而且就像游戲邏輯一樣,高級(jí)副本的地圖新手沒(méi)機(jī)會(huì)進(jìn)入,就不必要下載這部分內(nèi)容,有的用戶可能很久都不會(huì)用到部分功能,就可以放在Dynamic Feature Module,等要用的時(shí)候再下載。

Android App加固新變化

傳統(tǒng)加固方式

其對(duì)象是一個(gè)Android的安裝包,也就是一個(gè)APK文件,APK文件里面包含了基本所有的內(nèi)容,一般對(duì)其進(jìn)行加固,必須保證APK里面的DEX和支持的架構(gòu)都放到包里面,然后對(duì)其進(jìn)行加固處理,當(dāng)然也有一些熱更新框架,但是加固對(duì)于這些熱更新的框架支持性并不好。

APK包里面的文件結(jié)構(gòu):

而Android App Bundle動(dòng)態(tài)化框架,是按需要來(lái)進(jìn)行更新代碼模塊和資源文件的,這就導(dǎo)致傳統(tǒng)加固并不合適,而且Google要求上傳的Google Play 商店的時(shí)候上傳打包好的AppBundle,就是以AAB格式的結(jié)尾的文件,其實(shí)也是一個(gè)壓縮包,具體的文件結(jié)構(gòu)基本如圖:

base代表應(yīng)用程序的基本模塊,feature1 和feature2是動(dòng)態(tài)模塊,當(dāng)用戶安裝包的時(shí)候,Google Play會(huì)生成一個(gè)基本包,將包安裝到設(shè)備上,然后運(yùn)行到需要某個(gè)功能的時(shí)候才會(huì)下載動(dòng)態(tài)模塊,所以傳統(tǒng)的加固是無(wú)法對(duì)其進(jìn)行加固處理的。

幾維安全Java2c加固方案

直接對(duì)AAB文件進(jìn)行加密處理,將里面的Dex進(jìn)行加密轉(zhuǎn)換成加密后的SO,這樣的加固方案天然支持Android App Bundle的動(dòng)態(tài)框架。經(jīng)過(guò)Java2C加固之后輸出的也是一個(gè)AAB文件,上傳Google之后完全不影響其分包下發(fā)策略。

幾維安全Java2C是最新一代Android-Dex保護(hù)方案,之前針對(duì)Android的應(yīng)用加密已經(jīng)經(jīng)歷了4代更迭(第一代動(dòng)態(tài)加載,第二代整體加密解密,第三代類方法抽取,第四代自定義DVM運(yùn)行時(shí)),然而這4代更迭并未很好的解決應(yīng)用加密后的安全性、兼容性等問(wèn)題,根本原因是這4代技術(shù)底層基于運(yùn)行時(shí)攔截等手段實(shí)現(xiàn)Android代碼防護(hù),而碎片化、開(kāi)源化的Android生態(tài)讓這類技術(shù)不能從根本上解決安全問(wèn)題。而幾維安全Java2C技術(shù)屬于代碼靜態(tài)加密,沒(méi)有運(yùn)行時(shí)劫持,可配合安全編譯器工作,達(dá)到高安全性、高兼容性的要求。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3903

    瀏覽量

    126606
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2943

    瀏覽量

    104085
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節(jié)碼(.class文件)轉(zhuǎn)換回源代碼的過(guò)程。反編譯后的代碼可以進(jìn)行修改,但是需要注意,反編譯代碼的質(zhì)
    的頭像 發(fā)表于 09-02 11:00 ?170次閱讀

    鴻蒙ArkUI-X跨語(yǔ)言調(diào)用說(shuō)明:平臺(tái)差異化【Android、ios動(dòng)態(tài)

    ArkUI-X支持動(dòng)態(tài),使用者可以根據(jù)自己需要動(dòng)態(tài)發(fā)布跨平臺(tái)內(nèi)容,從而使跨平臺(tái)部分和宿主應(yīng)用進(jìn)行解耦。
    的頭像 發(fā)表于 05-23 14:38 ?475次閱讀
    鴻蒙ArkUI-X跨語(yǔ)言調(diào)用說(shuō)明:平臺(tái)差異化【<b class='flag-5'>Android</b>、ios<b class='flag-5'>動(dòng)態(tài)</b><b class='flag-5'>化</b>】

    SBSFU boot加密過(guò)的app大概需要的時(shí)間是什么級(jí)別的啊?

    ST 的SBSFU boot 加密過(guò)的app 大概需要的時(shí)間是什么級(jí)別的啊? 如果主頻40 M, 代碼100K .
    發(fā)表于 04-19 07:38

    鴻蒙OS開(kāi)發(fā)實(shí)例:【HarmonyHttpClient】網(wǎng)絡(luò)框架

    鴻蒙上使用的Http網(wǎng)絡(luò)框架,里面包含純Java實(shí)現(xiàn)的HttpNet,類似okhttp使用,支持同步和異步兩種請(qǐng)求方式;還有鴻蒙版retrofit,和Android版Retrofit相
    的頭像 發(fā)表于 04-12 16:58 ?702次閱讀
    鴻蒙OS開(kāi)發(fā)實(shí)例:【HarmonyHttpClient】網(wǎng)絡(luò)<b class='flag-5'>框架</b>

    java后端能轉(zhuǎn)鴻蒙app開(kāi)發(fā)嗎

    java后端轉(zhuǎn)鴻蒙app開(kāi)發(fā)好。 還是前端呢
    發(fā)表于 01-29 18:15

    RK3568開(kāi)發(fā)平臺(tái)Android 11強(qiáng)制所有應(yīng)用橫屏展示

    ManifestActivity_screenOrientation, SCREEN_ORIENTATION_UNSPECIFIED); } // End 2、打開(kāi)frameworks/base/core/java/android/ap
    發(fā)表于 12-28 15:20

    Android APP如何進(jìn)行訪問(wèn)硬件驅(qū)動(dòng)

    本文我們要講的是在用 i.MX8 平臺(tái)開(kāi)發(fā)時(shí),Android APP 如何進(jìn)行訪問(wèn)硬件驅(qū)動(dòng)。
    的頭像 發(fā)表于 12-04 13:50 ?1171次閱讀
    <b class='flag-5'>Android</b> <b class='flag-5'>APP</b>如何進(jìn)行訪問(wèn)硬件驅(qū)動(dòng)

    基于springboot和vue框架Java

    本文將詳細(xì)介紹基于Spring Boot和Vue框架進(jìn)行Java應(yīng)用開(kāi)發(fā)的實(shí)踐。首先,將介紹Spring Boot和Vue框架的基本概念及其優(yōu)點(diǎn)。然后,將詳細(xì)介紹如何搭建Spring Boot
    的頭像 發(fā)表于 12-03 15:15 ?818次閱讀

    mybatis框架的主要作用

    MyBatis框架是一種流行的Java持久框架,主要用于簡(jiǎn)化數(shù)據(jù)庫(kù)操作和管理。它提供了一種簡(jiǎn)潔的方式來(lái)訪問(wèn)數(shù)據(jù)庫(kù),并將SQL語(yǔ)句從Java
    的頭像 發(fā)表于 12-03 14:49 ?1816次閱讀

    mybatis接口動(dòng)態(tài)代理原理

    MyBatis是一款輕量級(jí)的Java持久框架,它通過(guò)XML或注解配置的方式,將數(shù)據(jù)庫(kù)操作與SQL語(yǔ)句解耦,提供了一種簡(jiǎn)單、靈活的數(shù)據(jù)訪問(wèn)方式。在MyBatis中,使用動(dòng)態(tài)代理技術(shù)來(lái)實(shí)
    的頭像 發(fā)表于 12-03 11:52 ?748次閱讀

    Android App環(huán)境檢測(cè)分析

    這個(gè)原理就是APPAndroidManifest.xml文件中application是否配置了android:debuggable="true",設(shè)置true支持
    的頭像 發(fā)表于 12-01 10:26 ?717次閱讀

    Java Agent的作用及原理

    .lang.instrument.Instrumentation API的一部分,Instrumentation 提供了修改字節(jié)碼的機(jī)制。并且可以動(dòng)態(tài)或者靜態(tài)地完成。這意味著我們可以在不接觸源程序代碼的情況下,向程序中添加一些代碼
    的頭像 發(fā)表于 10-10 15:53 ?1462次閱讀
    <b class='flag-5'>Java</b> Agent的作用及原理

    Java序列怎么使用

    轉(zhuǎn)換方式就叫做序列。將文件或者網(wǎng)絡(luò)傳輸中得到的 byte[] 數(shù)組轉(zhuǎn)換為 java 對(duì)象就叫做反序列。 怎么使用 如果一個(gè) Java 對(duì)象要能被序列
    的頭像 發(fā)表于 10-10 14:19 ?351次閱讀

    esp8266無(wú)法將數(shù)據(jù)傳到APP上怎么解決?

    androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.os.Bundle
    發(fā)表于 10-10 08:06

    如何通過(guò)注解來(lái)優(yōu)化我們的Java代碼

    Java注解可以說(shuō)是我們編碼過(guò)程中最常用的。本篇文章將給大家介紹Java注解的概念、作用以及如何使用注解來(lái)提升代碼的可讀性和靈活性,并介紹如何通過(guò)注解來(lái)優(yōu)化我們的Java
    的頭像 發(fā)表于 09-30 11:39 ?509次閱讀