androidapk加固
⑴ 【移動安全】騰訊樂固對apk文件加固失敗
樂固官方問題描述模板:
1、小德通+com.idcvideo.xiaodetong【重要】
2、安卓6.0手機,進入應用頁面後,載入業務so庫後應用閃退【非常重要】
3、安卓6.0手機非必現(如需要登錄,提供登錄賬號)【非常重要】
4、765871277(最好是QQ 方便溝通 快速解決問題)【重要】
5、目前只有加固後的apk(至少要提供加固後的apk)【非常重要】
6、日誌文件見附件【重要】
7、問題復現環境:華為手機 MAL-AL10 安卓6.0 【非常重要】
樂固加固前後的apk包內。對比後很明顯的看到,classes.dex文件,大小已經發生了很大的變化。同時多出了tencent_stub文件。猜測,classes.dex包是編譯後的Android可執行,運行時載入。在65536個方法時,Mulitudex我們都是知道的,之前看《2018美團技術年報》,美團移動團隊用python篩選方法,將常用方法放到一個dex文件中,減少ART切換dex的頻率。
騰訊的樂固加固,大概是在dex文件中插入tencent_stub引用,同時對原dex內部的方法進行篡改,避免dex2-jar的反編譯。這個做法的風險,就是動態載入失敗。我覺得是這樣,Android6.0是ART轉正的版本,業務的so庫在Android6.0機子出現問題。不加固的包沒有so庫問題。
另外說下樂固對簽名的處理,我不認為樂固真的如簡介中說,只在本地運行簽名。我認為是有後台長傳雲端的,只是做的比較隱秘。
加固後啟動崩潰,可查詢應用加固後是否重簽名並且與加固前簽名保持一致。
——如何查看apk的簽名信息?安裝好java,並配置環境變數。在cmd中執行:keytool -printcert -jarfile *.apk即可看到apk的簽名MD5欄位信息。確認加固前後apk的簽名信息是否一致。
移動應用安全MS 2019/7/31 18:20:44
提供下復現的操作步驟哈,例如是否需要登錄,登錄後如何操作,點擊哪步出現閃退
您使用的是免費版樂固嗎?目前免費版樂固不支持實時人工服務,您的問題和信息會提交技術測試並定位,但是需要排期解決的
您自查過加固後簽名信息與加固前保持一致了么?
——如何查看apk的簽名信息?安裝好java,並配置環境變數。在cmd中執行:keytool -printcert -jarfile *.apk即可看到apk的簽名MD5欄位信息。確認加固前後apk的簽名信息是否一致。
⑵ 怎麼加固安卓軟體
加固安卓軟體一般要達到以下效果:
1、防逆向:通過DEX 文件加殼以及DEX 虛擬化等技術,防止代碼被反編譯和逆向分析。
2、防篡改:通過校驗 APK 開發者簽名,防止被二次打包,植入廣告或惡意代碼。
3、防調試:防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
VirboxProtector安卓加固的核心技術一般有:
DEX 文件加密隱藏
對 DEX 文件加殼保護,防止代碼被竊取和反編譯。
SO 區段壓縮加密
對 SO 庫中的代碼段和數據段壓縮並加密,防止被 IDA 等工具反編譯。
單步斷點檢測
在混淆的指令中插入軟斷點檢測暗樁,防止native層run trace和單步調試。
防動態調試
防止應用被 IDA、JEB 等工具調試,動態分析代碼邏輯。
開發者簽名校驗
對 APK 中的開發者簽名做啟動時校驗,防止被第三方破解和二次打包。
SO 內存完整性校驗
在 SO 庫載入時校驗內存完整性,防止第三方對 SO 庫打補丁。
SO 代碼混淆
對 SO 庫中指定的函數混淆,通過指令切片、控制流扁平化、立即加密等技術手段,將 native 指令轉換為難以理解的復雜指令,無法被 IDA 反編譯,並且無法被還原。
SO 代碼虛擬化
對 SO 庫中指定的函數虛擬化,可以將 x86、x64、arm32、arm64 架構的機器指令轉換為隨機自定義的虛擬機指令,安全強度極高,可通過工具自定義配置,調整性能與安全性。
DEX 虛擬機保護
對 DEX 中的 dalvik 位元組碼進行虛擬化,轉換為自定義的虛擬機指令,最後由 native 層虛擬機解釋執行,防止逆向分析。
⑶ Android開發App如何進行加固
1.避
免技巧:使用內部API。即便我們總是建議不要這么做,但還是有一些開發者選擇使用那些不支持或者內部的API。例如,許多開發者使用內部的亮度控制和藍
牙切換API,這些API出現在1.0和1.1版本上。一個Bug——在Android
1.5上進行了修正——允許App在不需要請求許可權的情況下使用這些API。結果,使用了這些API的App在1.5上掛掉了。如果你在App中使用了這
些內部API,你需要做的是:停止這一做法,更新你的程序。
2.避
免技巧:直接操作Settings。嚴格來講,這一條不算,因為我們可以通過Android本身進行操作。但之所以我們加上了這一條,是因為一些開發者做
了一些調皮的事情:一些App悄無聲息地修改了系統設定,而沒有通知用戶。例如,一些App沒有詢問用戶就直接打開了GPS,而另外一些則可能直接打開了
數據傳輸。
因此,應用程序不能直接操作某個特定的系統設定值,即便是它們之前能這么做。例如,App不能直接打開或關閉GPS。不是說使
用會導致App崩潰,而是不應該使用這些API。代替的,App需要發出一個Intent來啟動相應的Settings配置畫面,這樣用戶可以手動地修改
這些設定。詳細情況可以參考android.provider.Settings.Secure類,你可以在1.5_pre(和之後的)SDK文檔中找
到。注意,只有那些移動到Settings.Secure類中設定受到影響。其它的,還會像Android 1.1那樣有著相同的功能。
3.避
免技巧:過分布局。由於View渲染部分的變化,在布局中,過於深(超過10層左右)或過於多(超過30個左右)的View樹層次可能會導致程序崩潰。過
於復雜的布局總歸是有危險的,盡管你可以認為Android
1.5已經好於1.1。大多數開發者不需要對此擔心,但如果你的App有著非常復雜的布局,你還是應該對其「瘦身」。你可以使用一些高級的布局類,如
FrameLayout和TableLayout,來簡化你的布局。
4.避
免技巧:不好的硬體假設。Android
1.5支持軟鍵盤,因此,不久就會有很多設備不再包含物理鍵盤。如果你的程序假設物理鍵盤存在(例如,如果你創建一個自定義的View,並接收鍵按下消
息),你必須保證在只有軟鍵盤的設備上也工作正常。想了解更多關於這方面的信息,請繼續關注這個Blog,我們將會有更多關於處理軟鍵盤的詳細資料。
5.避
免技巧:無意識的旋轉。運行Android
1.5(及以上)的設備能夠根據用戶手持設備的方向自動地旋轉屏幕。一些1.5的設備默認這么做,而其它的需要用戶手動設置。應用程序自己的重定向在某種
程度上會導致不可預期的行為(不論是使用加速度計還是其它一些東西)。這種情況通常發生在應用程序假設有物理鍵盤時才能旋轉;如果設備沒有物理鍵盤,這些
App就不能進行重定向,而這明顯就是個編碼錯誤。開發者應該明確應用程序能在任何時間都能處理重定向。
同樣,App可以使用加速度計做到與系統
相同的事情——直接重定向自己,這也會引發奇怪的結果。一些App使用加速度計來監測像晃動動作什麼的,而又不將其方向鎖定為垂直或水平,經常會導致在方
向上來回翻動。而這就會激怒用戶。(你可以在manifest文件中使用android:screenOrientation特性來鎖定App的方向為垂
直或水平。)
⑷ android發布應用必須apk加固嗎
看應用市場的要求,有些是要求必須做加固,比如360。
⑸ APK加固原理是什麼如何進行android apk加固
APK加固是對APK代碼邏輯的一種保護,原理是將APK文件進行某種形式的轉換,包括不限於隱藏、混淆、加等操作,進一步保護軟體的利益不受損壞。
常見APK應用加固主要有DEX文件、SDK文件、SO文件加固這三類。DEX加固技術包括混淆代碼、整體DEX加固、拆分DEX加固、虛擬機加固、Java2C加固,當前性能最強的加固方案是Java2c,將java指令轉成c/c++指令,並做虛假控制流、字元串加密等處理,逆向難度最高。SO庫文件一般存放著核心演算法、重要協議等重要信息。SO加固大概可以分為有源保護和無源保護,有源保護分為自解密、混淆、源碼VMP等,無源保護分為加殼、VMP保護。
APK加固後,可以降低被逆向破解風險,目前有些雲安全平台提供系統的APP加固服務,如網易易盾、360加固、阿里雲等,想要系統提升APK安全等級可以了解下。