Android APK加固技術(shù)方案調(diào)研

@author ASCE1885的 Github 簡書 微博 CSDN
本文由于潛在的商業(yè)目的,不開放全文轉(zhuǎn)載許可,謝謝!
最近項目中需要實現(xiàn)自己的APK加固方案,因此就有了這一篇調(diào)研報告。

軟件安全領(lǐng)域的攻防向來是道高一尺魔高一丈,攻防雙方都處于不斷的演變和進(jìn)化過程中,因此軟件加固技術(shù)需要長期持續(xù)的研究與投入。

目前成熟的第三方解決方案

1. 娜迦

針對Android平臺下的APP被逆向分析,破解,植入木馬病毒后,用戶敏感信息泄露或者被釣魚網(wǎng)站劫持,NAGA Android保護(hù)采用防止靜態(tài)分析與防止動態(tài)調(diào)試全面防護(hù)的思路,在未保護(hù)程序運行的不同周期采取不同程度的加固措施,可以針對銀行、基金、券商,電商等需在線支付領(lǐng)域及游戲領(lǐng)域,提供定制型APP安全解決方案。

主要實現(xiàn):

  • 類抽?。罕Wo(hù)dex文件,防止靜態(tài)分析及動態(tài)破解
  • 代碼加解密:保護(hù)so文件,防止靜態(tài)破解
  • 網(wǎng)絡(luò)訪問控制:保護(hù)so文件,攔截惡意廣告,阻止注入型木馬
  • 敏感文件檢測:保護(hù)so文件,防止靜態(tài)調(diào)試
  • 整體包裹:保護(hù)dex文件,防止靜態(tài)破解
  • 利用重定位清除ELF頭:保護(hù)so文件,利用系統(tǒng)機(jī)制ELF頭已經(jīng)被系統(tǒng)清除,不兼容X86處理器
  • 字符串表加密:保護(hù)so文件,防止靜態(tài)破解
  • 檢查核心庫:保護(hù)so文件,防止功能性數(shù)據(jù)庫被劫持
  • 檢查調(diào)試器:保護(hù)so文件,防止動態(tài)調(diào)試
  • Xposed檢查:保護(hù)so文件,防止so文件,防止靜態(tài)調(diào)試,防dump 防xposed脫殼神器對加固apk進(jìn)行一鍵脫殼
  • 防止跟蹤:保護(hù)so文件,防止動態(tài)跟蹤
  • 強(qiáng)力清除ELF頭:保護(hù)so文件,防止靜態(tài)分析
  • 中間碼亂序:保護(hù)smali文件,dex保護(hù),防止靜態(tài)分析,不兼容Android5.0 ART模式
  • 重定位加密殼段:保護(hù)so文件,對抗靜態(tài)分析
  • 殼完整性檢查:保護(hù)so文件,防止對APP程序中的殼段進(jìn)行修改、調(diào)試 兼容性100%

擴(kuò)展閱讀:娜迦社區(qū)

2. 愛加密

愛加密主要功能:

1. 漏洞分析:

  • 文件檢查:檢查dex、res文件是否存在源代碼、資源文件被竊取、替換等安全問題
  • 漏洞掃描:掃描簽名、XML文件是否存在安全漏洞、存在被注入、嵌入代碼等風(fēng)險。
  • 后門檢測:檢測App是否存在被二次打包,然后植入后門程序或第三方代碼等風(fēng)險。
  • 一鍵生成:一鍵生成App關(guān)于源碼、文件、權(quán)限、關(guān)鍵字等方面的安全風(fēng)險分析報告。

2. 加密服務(wù):

  • DEX加殼保護(hù):DEX文件加殼保護(hù)對DEX文件進(jìn)行加殼防護(hù),防止被靜態(tài)反編譯工具破解獲取源碼。
  • 內(nèi)存防dump保護(hù):防止通過使用內(nèi)存dump方法對應(yīng)用進(jìn)行非法破解
  • 資源文件保護(hù):應(yīng)用的資源文件被修改后將無法正常運行
  • 防二次打包保護(hù):保護(hù)應(yīng)用在被非法二次打包后不能正常運行。
  • 防調(diào)試器保護(hù):防止通過使用調(diào)試器工具(例:zjdroid)對應(yīng)用進(jìn)行非法破解
  • 多渠道打包:上傳1個APK,通過選擇android:name和填寫android:value來實現(xiàn)對每一個渠道的包的生成和加密
  • 漏洞分析服務(wù):漏洞分析采用文件檢查、漏洞掃描、后門檢測等技術(shù)方向?qū)PK進(jìn)行靜態(tài)分析并支持一鍵生成分析報告
  • 渠道監(jiān)測服務(wù):監(jiān)控國內(nèi)400多個渠道市場入口,對應(yīng)用的各渠道的下載量、版本信息、正盜版進(jìn)行一站監(jiān)控
  • 簽名工具:愛加密提供純綠色簽名工具,支持Windows、Linux和MAC系統(tǒng),同時支持批量簽名
  • DEX專業(yè)加殼保護(hù):本服務(wù)是對安卓DEX文件進(jìn)行加殼保護(hù),有效防止所有靜態(tài)調(diào)試器對APK進(jìn)行破解
  • DEX專業(yè)加花保護(hù):本服務(wù)對安卓DEX文件進(jìn)行加入花指令(無效字節(jié)碼)保護(hù)
  • 資源文件指紋簽名保護(hù):對資源文件指紋簽名進(jìn)行驗證保護(hù),有效防止資源文件被篡改
  • 高級防二次打包保護(hù):本服務(wù)對APK進(jìn)行防止二次打包保護(hù),防止APK被使用非法手段修改替換文件后進(jìn)行二次打包
  • 高級防調(diào)試器保護(hù):防止通過使用調(diào)試器工具(如:zjdroid、APK改之理、ida等)對應(yīng)用進(jìn)行非法破解
  • 高級內(nèi)存保護(hù):本服務(wù)是對內(nèi)存數(shù)據(jù)的專業(yè)高級保護(hù),可防止內(nèi)存調(diào)試,防止通過dump獲取源碼,防止內(nèi)存修改
  • 截屏防護(hù):防止黑客通過截屏形式獲取應(yīng)用賬號、應(yīng)用密碼、支付銀行卡號、支付銀行卡密碼,支持安卓所有機(jī)型
  • 本地數(shù)據(jù)文件保護(hù):對APK應(yīng)用的網(wǎng)絡(luò)緩存數(shù)據(jù)、本地儲存數(shù)據(jù)(提供SDK)進(jìn)行深度保護(hù)
  • 源碼優(yōu)化:1) 一鍵清除Log(開發(fā)日志)信息;2) 一鍵優(yōu)化減少加密后增大的源用包大小
  • 防止腳本:本服務(wù)愛加密提供防止腳本SDK,用戶根據(jù)開發(fā)幫助文檔進(jìn)行二次開發(fā),此保護(hù)項可有效防止游戲非法使用腳本
  • 防止加速器:防止游戲使用加速器,破壞游戲公平(如:防八門神器和葫蘆俠中的加速器功能)
  • 防止模擬器運行:防止模擬器非法運行(可以防止運行在PC上的任何類型的android模擬器)
  • 防止內(nèi)購破解:防止游戲被內(nèi)購破解(如:游戲內(nèi)部有支付項,可以防止支付項相關(guān)內(nèi)容被破解)
  • SO文件保護(hù):so文件專業(yè)保護(hù),對so文件進(jìn)行優(yōu)化壓縮、源碼加密隱藏、防止調(diào)試器逆向分析

3. 渠道監(jiān)測:

  • 渠道數(shù)據(jù)監(jiān)控
  • 精準(zhǔn)識別渠道正盜版
  • 盜版APP詳情分析

擴(kuò)展閱讀:加密資訊

3. 梆梆加固

提供的移動應(yīng)用保護(hù)服務(wù):

  • 防逆向保護(hù):以加密代碼的方式阻止反編譯,從而防止被竊取代碼和創(chuàng)意
  • 防篡改保護(hù):通過對app的完整性保護(hù),防止app被篡改或者盜版
  • 反調(diào)試保護(hù):阻止應(yīng)用運行中被動態(tài)注入,防止被外掛,木馬偷竊賬號密碼,修改交易金額等
  • 存儲數(shù)據(jù)加密保護(hù):更底層,跨文件格式的數(shù)據(jù)加密,防止應(yīng)用數(shù)據(jù)被竊取
  • 環(huán)境監(jiān)測和保護(hù):云監(jiān)測設(shè)備環(huán)境,防止盜版應(yīng)用,惡意應(yīng)用的釣魚攻擊

擴(kuò)展閱讀:安全SDK下載

4. 360加固保

加固保為移動應(yīng)用提供專業(yè)安全的保護(hù),可防止應(yīng)用被逆向分析、反編譯、二次打包,防止嵌入各類病毒、廣告等惡意代碼,從源頭保護(hù)數(shù)據(jù)安全和開發(fā)者利益,主要提供:

  • 反篡改:通過簽名校驗保護(hù),能有效避免應(yīng)用被二次打包,杜絕盜版應(yīng)用的產(chǎn)生
  • 反竊?。簩?nèi)存數(shù)據(jù)進(jìn)行變換處理和動態(tài)跟蹤,有效防止數(shù)據(jù)被獲取和修改
  • 反逆向:對代碼進(jìn)行加密壓縮,可防止破解者還原真實代碼邏輯,避免被復(fù)制
  • 反調(diào)試:多重手段防止代碼注入,可避免外掛、木馬、竊取賬號密碼等行為

[總結(jié)]常見app漏洞及風(fēng)險

靜態(tài)破解:

通過工具apktool、dex2jar、jd-gui、DDMS、簽名工具,可以對任何一個未加密應(yīng)用進(jìn)行靜態(tài)破解,竊取源碼。

二次打包

通過靜態(tài)破解獲取源碼,嵌入惡意病毒、廣告等行為再利用工具打包、簽名,形成二次打包應(yīng)用。

本地儲存數(shù)據(jù)竊取

通過獲取root權(quán)限,對手機(jī)中應(yīng)用儲存的數(shù)據(jù)進(jìn)行竊取、編輯、轉(zhuǎn)存等惡意行為,直接威脅用戶隱私。

界面截取

通過adb shell命令或第三方軟件獲取root權(quán)限,在手機(jī)界面截取用戶填寫的隱私信息,隨后進(jìn)行惡意行為。

輸入法攻擊

通過對系統(tǒng)輸入法攻擊,從而對用戶填寫的隱私信息進(jìn)行截獲、轉(zhuǎn)存等惡意操作,竊取敏感信息。

協(xié)議抓取

通過設(shè)置代理或使用第三方抓包工具,對應(yīng)用發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等惡意操作。

[總結(jié)]Android app加密保護(hù)核心概念

防內(nèi)存竊取

防止通過gdb、gcore,從內(nèi)存中截取dex文件,獲取代碼片段,從而反編譯還原APK進(jìn)行不法操作。

防動態(tài)跟蹤

防止通過ptrace調(diào)試進(jìn)程,跟蹤、攔截、修改正在運行的應(yīng)用,進(jìn)行動態(tài)注入,保護(hù)程序運行安全。

防逆向分析

防止通過APKTool、IDA Pro等反編譯工具破解DEX文件,從而獲取APK源代碼,保護(hù)代碼層安全。

防惡意篡改

校驗APK完整性,自動終止運行被篡改的APK,二次打包后應(yīng)用都無法使用,杜絕盜版應(yīng)用的出現(xiàn)。

存儲數(shù)據(jù)加密保護(hù)

更底層,跨文件格式的數(shù)據(jù)加密,防止應(yīng)用數(shù)據(jù)被竊取。

[我們的措施]Android程序反破解技術(shù)

對抗反編譯

對抗反編譯是指apk文件無法通過反編譯工具(例如ApkTool,BakSmali,dex2jar等)對其進(jìn)行反編譯,或者反編譯后無法得到軟件正確的反匯編代碼。

基本思路是尋找反編譯工具在處理apk或者dex文件時的缺陷,然后在自己的代碼中加以利用,讓反編譯工具在處理我們apk文件的時候拋出異?;蛘叻淳幾g失敗,有兩種方法可以找到反編譯工具的缺陷:

  • 閱讀反編譯工具的源碼
  • 壓力測試

對抗靜態(tài)分析

反編譯工具一直在改進(jìn),因此即使你在版本2.1發(fā)現(xiàn)它的缺陷并加以利用,使反編譯你的apk失敗,但很可能在版本2.2就把這個缺陷解決了,因此,不要指望反編譯工具永遠(yuǎn)無法反編譯你的apk,我們還需要使用其他方法來防止apk被破解:

  • 代碼混淆技術(shù),ProGuard提供了壓縮,混淆,優(yōu)化Java代碼和(Shrinking),混淆(Obfuscation),優(yōu)化(Optimition)Java代碼和反混淆棧跟蹤(ReTrace)的功能。
  • NDK保護(hù):逆向NDK程序的匯編代碼比逆向Java代碼枯燥和困難很多,同時使用C++也可以對敏感字符串和代碼進(jìn)行加密。
  • 外殼保護(hù):針對NDK編寫的Native代碼。

對抗動態(tài)調(diào)試

  • 檢測調(diào)試器:動態(tài)調(diào)試使用調(diào)試器來掛鉤apk,獲取apk運行時的數(shù)據(jù),因此,我們可以在apk中加入檢測調(diào)試器的代碼,當(dāng)檢測到apk被調(diào)試器連接時,終止apk的運行。
  • 檢測模擬器:apk發(fā)布后,如果發(fā)現(xiàn)其運行在模擬器中,很有可能是有人試圖破解或者分析它,因此這時我們也要終止apk的運行。

防止重編譯

  • 檢查APK的簽名
  • 校驗APK的完整性
  • 校驗classes.dex文件的完整性

參考資料

歡迎關(guān)注我的微信公眾號

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容