Andorid APK反逆向解決方案---梆梆加固原理探尋
http://blog.csdn.net/androidsecurity/article/details/8892635
Android APK加殼技術方案【1】
http://blog.csdn.net/androidsecurity/article/details/8678399
Android APK加殼技術方案【2】
http://blog.csdn.net/androidsecurity/article/details/8809542
梆梆加固 官網
安卓反編譯apk,http://dev.bangcle.com
http://www.secneo.com/appProtect/
?
梆梆加固apk
下載一個apk上傳到梆梆云端,獲取其加固包
梆梆可以很準確的解析混淆過的apk文件(說明混淆對于保護文件的作用并不是那么大)
安卓逆向有什么用。keywords:
dexguard 用法等;
android apk 反逆向
android 加殼
?
為什么這么多商業Android開發者不混淆代碼?
- 領導、產品、項管在這方面沒有意識,不重視。
- 單靠ProGuard是不夠的, 隨隨便便就被反編譯了,況且一些Activity,Service的名字不能被混淆,混淆后xml文件中相關的類找不到它們了。還有一些反射相關的也不能被混淆,等等…
- 混淆后增加了測試成本。
- 國內的安全意識普遍沒有那么高。
其實自動打包時,大多數公司還是會用官方提供的Proguard的默認混淆的(個別公司除外)。蜻蜓FM也混淆了,用的就是Proguard 然而并沒有什么卵用。
混淆想做到安全,還是需要自己做,或者購買一些第三方專業的混淆工具,比如:- 國外的DexGuard,一年600多刀,效果不錯。混淆后反編譯出來的都是亂碼,但這樣成本并不是一兩天時間,可能會遇到:
- 混淆后部分應用市場讀卻不到AndroidManifest.xml中的相關信息,審核失敗的情況
- 還有比如有時對gradle打包支持不到位,需要特別寫腳本支持混淆流程的
- 接入一些第三方的庫混淆后會有問題等等要解決,
- 還需要經常升級混淆程序,所以總體還是會耗費不少時間的。
- 像微信連資源文件名都混淆,并且大部分東西都放在.so文件中,估計是自己做的,這個是需要一定精力的。
- 國內的沒使用過,有一些什么梆梆加固,愛加密的,不知道混淆效果如何……
- 從安全角度
密碼學里對“安全的”算法有一描述:即使攻擊者知道了該加解密算法,在他們不知道密鑰的情況下,使用算法的系統很難(沒有絕對安全)被攻破。
所以混淆代碼的作用只是增加了攻擊者知道“系統”所使用的算法的難度。而安全本身在于“系統”所選擇的算法以及對應“密鑰”。(“系統”及“密鑰”是個廣義概念,可類比為移動app所使用的協議以及校驗信息)- 從盈利角度
如果app是作為一個用戶與服務提供者進行交互(信息交換)的終端之一,注意設計好雙方的通信協議,并保護好核心代碼。
ref:?https://www.zhihu.com/question/37446729
Android APK加固技術方案調研
軟件安全領域的攻防向來是道高一尺魔高一丈,攻防雙方都處于不斷的演變和進化過程中,因此軟件加固技術需要長期持續的研究與投入。
目前成熟的第三方解決方案
1.?娜迦
APK反編譯。針對Android平臺下的APP被逆向分析,破解,植入木馬病毒后,用戶敏感信息泄露或者被釣魚網站劫持,NAGA Android保護采用防止靜態分析與防止動態調試全面防護的思路,在未保護程序運行的不同周期采取不同程度的加固措施,可以針對銀行、基金、券商,電商等需在線支付領域及游戲領域,提供定制型APP安全解決方案。
主要實現:
- 類抽取:保護dex文件,防止靜態分析及動態破解
- 代碼加解密:保護so文件,防止靜態破解
- 網絡訪問控制:保護so文件,攔截惡意廣告,阻止注入型木馬
- 敏感文件檢測:保護so文件,防止靜態調試
- 整體包裹:保護dex文件,防止靜態破解
- 利用重定位清除ELF頭:保護so文件,利用系統機制ELF頭已經被系統清除,不兼容X86處理器
- 字符串表加密:保護so文件,防止靜態破解
- 檢查核心庫:保護so文件,防止功能性數據庫被劫持
- 檢查調試器:保護so文件,防止動態調試
- Xposed檢查:保護so文件,防止so文件,防止靜態調試,防dump 防xposed脫殼神器對加固apk進行一鍵脫殼
- 防止跟蹤:保護so文件,防止動態跟蹤
- 強力清除ELF頭:保護so文件,防止靜態分析
- 中間碼亂序:保護smali文件,dex保護,防止靜態分析,不兼容Android5.0 ART模式
- 重定位加密殼段:保護so文件,對抗靜態分析
- 殼完整性檢查:保護so文件,防止對APP程序中的殼段進行修改、調試 兼容性100%
擴展閱讀:娜迦社區
2.?愛加密
愛加密主要功能:
1. 漏洞分析:
- 文件檢查:檢查dex、res文件是否存在源代碼、資源文件被竊取、替換等安全問題
- 漏洞掃描:掃描簽名、XML文件是否存在安全漏洞、存在被注入、嵌入代碼等風險。
- 后門檢測:檢測App是否存在被二次打包,然后植入后門程序或第三方代碼等風險。
- 一鍵生成:一鍵生成App關于源碼、文件、權限、關鍵字等方面的安全風險分析報告。
apk3。2. 加密服務:
- DEX加殼保護:DEX文件加殼保護對DEX文件進行加殼防護,防止被靜態反編譯工具破解獲取源碼。
- 內存防dump保護:防止通過使用內存dump方法對應用進行非法破解
- 資源文件保護:應用的資源文件被修改后將無法正常運行
- 防二次打包保護:保護應用在被非法二次打包后不能正常運行。
- 防調試器保護:防止通過使用調試器工具(例:zjdroid)對應用進行非法破解
- 多渠道打包:上傳1個APK,通過選擇android:name和填寫android:value來實現對每一個渠道的包的生成和加密
- 漏洞分析服務:漏洞分析采用文件檢查、漏洞掃描、后門檢測等技術方向對APK進行靜態分析并支持一鍵生成分析報告
- 渠道監測服務:監控國內400多個渠道市場入口,對應用的各渠道的下載量、版本信息、正盜版進行一站監控
- 簽名工具:愛加密提供純綠色簽名工具,支持Windows、Linux和MAC系統,同時支持批量簽名
- DEX專業加殼保護:本服務是對安卓DEX文件進行加殼保護,有效防止所有靜態調試器對APK進行破解
- DEX專業加花保護:本服務對安卓DEX文件進行加入花指令(無效字節碼)保護
- 資源文件指紋簽名保護:對資源文件指紋簽名進行驗證保護,有效防止資源文件被篡改
- 高級防二次打包保護:本服務對APK進行防止二次打包保護,防止APK被使用非法手段修改替換文件后進行二次打包
- 高級防調試器保護:防止通過使用調試器工具(如:zjdroid、APK改之理、ida等)對應用進行非法破解
- 高級內存保護:本服務是對內存數據的專業高級保護,可防止內存調試,防止通過dump獲取源碼,防止內存修改
- 截屏防護:防止黑客通過截屏形式獲取應用賬號、應用密碼、支付銀行卡號、支付銀行卡密碼,支持安卓所有機型
- 本地數據文件保護:對APK應用的網絡緩存數據、本地儲存數據(提供SDK)進行深度保護
- 源碼優化:1) 一鍵清除Log(開發日志)信息;2) 一鍵優化減少加密后增大的源用包大小
- 防止腳本:本服務愛加密提供防止腳本SDK,用戶根據開發幫助文檔進行二次開發,此保護項可有效防止游戲非法使用腳本
- 防止加速器:防止游戲使用加速器,破壞游戲公平(如:防八門神器和葫蘆俠中的加速器功能)
- 防止模擬器運行:防止模擬器非法運行(可以防止運行在PC上的任何類型的android模擬器)
- 防止內購破解:防止游戲被內購破解(如:游戲內部有支付項,可以防止支付項相關內容被破解)
- SO文件保護:so文件專業保護,對so文件進行優化壓縮、源碼加密隱藏、防止調試器逆向分析
3. 渠道監測:
- 渠道數據監控
- 精準識別渠道正盜版
- 盜版APP詳情分析
3.?梆梆加固
提供的移動應用保護服務:
- 防逆向保護:以加密代碼的方式阻止反編譯,從而防止被竊取代碼和創意
- 防篡改保護:通過對app的完整性保護,防止app被篡改或者盜版
- 反調試保護:阻止應用運行中被動態注入,防止被外掛,木馬偷竊賬號密碼,修改交易金額等
- 存儲數據加密保護:更底層,跨文件格式的數據加密,防止應用數據被竊取
- 環境監測和保護:云監測設備環境,防止盜版應用,惡意應用的釣魚攻擊
擴展閱讀:安全SDK下載
4.?360加固保
加固保為移動應用提供專業安全的保護,可防止應用被逆向分析、反編譯、二次打包,防止嵌入各類病毒、廣告等惡意代碼,從源頭保護數據安全和開發者利益,主要提供:
- 反篡改:通過簽名校驗保護,能有效避免應用被二次打包,杜絕盜版應用的產生
- 反竊取:對內存數據進行變換處理和動態跟蹤,有效防止數據被獲取和修改
- 反逆向:對代碼進行加密壓縮,可防止破解者還原真實代碼邏輯,避免被復制
- 反調試:多重手段防止代碼注入,可避免外掛、木馬、竊取賬號密碼等行為
[總結]常見app漏洞及風險
靜態破解:
android 10、通過工具apktool、dex2jar、jd-gui、DDMS、簽名工具,可以對任何一個未加密應用進行靜態破解,竊取源碼。
二次打包
通過靜態破解獲取源碼,嵌入惡意病毒、廣告等行為再利用工具打包、簽名,形成二次打包應用。
本地儲存數據竊取
通過獲取root權限,對手機中應用儲存的數據進行竊取、編輯、轉存等惡意行為,直接威脅用戶隱私。
界面截取
通過adb shell命令或第三方軟件獲取root權限,在手機界面截取用戶填寫的隱私信息,隨后進行惡意行為。
輸入法攻擊
通過對系統輸入法攻擊,從而對用戶填寫的隱私信息進行截獲、轉存等惡意操作,竊取敏感信息。
協議抓取
逆向apk流程、通過設置代理或使用第三方抓包工具,對應用發送與接收的數據包進行截獲、重發、編輯、轉存等惡意操作。
[總結]Android app加密保護核心概念
防內存竊取
防止通過gdb、gcore,從內存中截取dex文件,獲取代碼片段,從而反編譯還原APK進行不法操作。
防動態跟蹤
防止通過ptrace調試進程,跟蹤、攔截、修改正在運行的應用,進行動態注入,保護程序運行安全。
防逆向分析
防止通過APKTool、IDA Pro等反編譯工具破解DEX文件,從而獲取APK源代碼,保護代碼層安全。
防惡意篡改
校驗APK完整性,自動終止運行被篡改的APK,二次打包后應用都無法使用,杜絕盜版應用的出現。
存儲數據加密保護
android,更底層,跨文件格式的數據加密,防止應用數據被竊取。
[我們的措施]Android程序反破解技術
對抗反編譯
對抗反編譯是指apk文件無法通過反編譯工具(例如ApkTool,BakSmali,dex2jar等)對其進行反編譯,或者反編譯后無法得到軟件正確的反匯編代碼。
基本思路是尋找反編譯工具在處理apk或者dex文件時的缺陷,然后在自己的代碼中加以利用,讓反編譯工具在處理我們apk文件的時候拋出異常或者反編譯失敗,有兩種方法可以找到反編譯工具的缺陷:
- 閱讀反編譯工具的源碼
- 壓力測試
對抗靜態分析
反編譯工具一直在改進,因此即使你在版本2.1發現它的缺陷并加以利用,使反編譯你的apk失敗,但很可能在版本2.2就把這個缺陷解決了,因此,不要指望反編譯工具永遠無法反編譯你的apk,我們還需要使用其他方法來防止apk被破解:
- 代碼混淆技術,ProGuard提供了壓縮,混淆,優化Java代碼和(Shrinking),混淆(Obfuscation),優化(Optimition)Java代碼和反混淆棧跟蹤(ReTrace)的功能。
- NDK保護:逆向NDK程序的匯編代碼比逆向Java代碼枯燥和困難很多,同時使用C++也可以對敏感字符串和代碼進行加密。
- 外殼保護:針對NDK編寫的Native代碼。
對抗動態調試
- 檢測調試器:動態調試使用調試器來掛鉤apk,獲取apk運行時的數據,因此,我們可以在apk中加入檢測調試器的代碼,當檢測到apk被調試器連接時,終止apk的運行。
- 檢測模擬器:apk發布后,如果發現其運行在模擬器中,很有可能是有人試圖破解或者分析它,因此這時我們也要終止apk的運行。
防止重編譯
- 檢查APK的簽名
- 校驗APK的完整性
- 校驗classes.dex文件的完整性
參考資料
- APK 的自我保護
- Android軟件安全與逆向分析
- 閑聊Android軟件保護
- Android混淆技巧與反混淆
- Android應用分析進階教程之一 初識JEBAPI
?