溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android app如何加密

發(fā)布時(shí)間:2022-01-11 16:26:52 來源:億速云 閱讀:206 作者:iii 欄目:網(wǎng)絡(luò)安全

本文小編為大家詳細(xì)介紹“Android app如何加密”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Android app如何加密”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

一.什么是Android界面劫持

界面劫持是指在Android系統(tǒng)中,惡意軟件通過監(jiān)控目標(biāo)軟件的運(yùn)行,當(dāng)檢測到當(dāng)前運(yùn)行界面為某個被監(jiān)控應(yīng)用的特定界面時(shí)(一般為登錄或支付界面),彈出偽造的釣魚頁面,從而誘導(dǎo)用戶輸入信息,最終竊取用戶的隱私(惡意盜取用戶賬號、卡號、密碼等信息),或者利用假冒界面進(jìn)行釣魚欺詐。

Android app如何加密

二. 常見攻擊手段

1. 監(jiān)聽系統(tǒng)Logocat日志,一旦監(jiān)聽到發(fā)生Activity界面切換行為,即進(jìn)行攻擊,覆蓋上假冒Activity界面實(shí)施欺騙。

2. 監(jiān)聽系統(tǒng)API,一旦惡意程序監(jiān)聽到相關(guān)界面的API組件調(diào)用,即可發(fā)起攻擊。

3. 5.0以下機(jī)型枚舉獲取棧頂Activity,監(jiān)控到目標(biāo)Activity出現(xiàn),即可發(fā)起攻擊。

4. 惡意啟動Service監(jiān)聽目標(biāo)應(yīng)用,在切換到目標(biāo)Activity時(shí),彈出對話框劫持當(dāng)前界面迷惑用戶

三. 預(yù)防手段

●    針對用戶

Android手機(jī)均有一個HOME鍵,長按可以查看到近期任務(wù)。用戶在要輸入密碼進(jìn)行登錄時(shí),可以通過長按HOME鍵查看近期任務(wù),比如說登錄微信時(shí)長按發(fā)現(xiàn)近期任務(wù)出現(xiàn)了微信,那么現(xiàn)在的這個登錄界面就極有可能是一個惡意偽裝的Activity,切換到另一個程序,再查看近期任務(wù),就可以知道這個登錄界面是來源于哪個程序了。

●    針對開發(fā)人員

針對釣魚Activity類型劫持,在登錄窗口或者用戶隱私輸入等關(guān)鍵Activity的onPause方法中檢測最前端Activity應(yīng)用是不是自身或者是系統(tǒng)應(yīng)用,如果發(fā)現(xiàn)惡意風(fēng)險(xiǎn),則給用戶一些警示信息,提示用戶其登陸界面以被覆蓋,并給出覆蓋正常Activity的類名。

如果是針對彈窗對話框類型的劫持,接管Activity的生命周期,當(dāng)發(fā)現(xiàn)當(dāng)前界面onResume之后,判斷是否失去焦點(diǎn);如果同時(shí)存在則有可能是對話框類劫持,判斷此時(shí)運(yùn)行的活動進(jìn)程是否包含敏感權(quán)限(全局Alert權(quán)限、獲取任務(wù)棧權(quán)限等),如果有的話則給用戶告警。

Android 的 APK 中怎么放置反編譯“炸彈”

上面文章里提到的"炸彈", 其實(shí)就是反編譯器的 bug,所以針對不同的反編譯器,需要設(shè)計(jì)不同的“炸彈”。先了解一下常用的 APK 反編譯工具:

●     baksmali/smali: baksmali 能將二進(jìn)制 dex 文件轉(zhuǎn)化為 smali 文本文件用于分析,smali 則能將 smali 文件重新編譯為 dex 文件。

●    Apktool : 整合了 baksmali/smali 用于處理 dex 文件, 另外實(shí)現(xiàn)了 res 資源文件(比如layout / strings等)的反編譯。

●   AxmlPrinter : 用于將二進(jìn)制形式的 AndroidManifest.xml 轉(zhuǎn)換為文本形式的 AndroidManifest.xml。

●    dex2jar: 能將 dex 轉(zhuǎn)化為 jar 文件。

●    jd-gui: 能將 jar 文件反編譯為 java 源代碼。

●    Ida Pro: 主要用于反編譯 Apk 中的 So 文件,也支持將 dex 文件反編譯為類似smali 語法的文本形式指令。

從上面的反編譯工具可以看出,主要分三種功能:

●    反編譯資源,如 AndroidManifest.xml、layout.xml

●    反編譯 Dex 文件,或者進(jìn)一步將 Dex 文件轉(zhuǎn)換為 Java 代碼

●    反編譯 So 文件

炸彈”的設(shè)置需要對特定的文件格式有相當(dāng)?shù)牧私?,而且可能只能針對某個反編譯工具的。

Android app如何加密?

android app包含的內(nèi)容有dex文件,so文件,res,assets資源文件。對應(yīng)的加密按此內(nèi)容分為三大方面:dex保護(hù)、so加密、資源保護(hù)(res, assets)。

●   dex保護(hù)

由于未保護(hù)的dex文件,是從java編譯打包而來,破解成本低較易受到攻擊。其保護(hù)措施從最基本的加殼,到函數(shù)執(zhí)行體抽取、動態(tài)加載,再到當(dāng)前的vmp虛擬機(jī)加固,安全逐步增強(qiáng)。尤其是vmp加固,更是使用了自研虛擬機(jī)解釋函數(shù)體,如果指令加密替換做的好,會讓破解者很難受。

●    so加密

so文件,由起初的段加密,發(fā)展到自定義elf結(jié)構(gòu)的加密方式,能防止IDA查看函數(shù)名稱,增加破解成本和難度。

●    資源保護(hù)

res資源文件,通常只采用混淆的方式增加逆向難度。assets資源,一般不處理。但隨時(shí)H5應(yīng)用日益增多,部分廠商(易盾、娜迦)有提供assets加密的功能,實(shí)現(xiàn)原理不詳。

除了上述三點(diǎn)防護(hù)外,還有防反編譯、防二次打包、防調(diào)試、防模擬器、防xposed功能等。

a) 防反編譯,一般是對市面上的反編譯工具(例如apktool)做對抗,利用其漏洞,致使反編譯失??;

b) 防二次打包,一般常用的是在代碼里保存簽名信息,啟動時(shí)在native層將當(dāng)前apk的簽名信息與保存的簽名進(jìn)行比對。市面上已有破擊工具??梢栽诔S脤?shí)現(xiàn)方式上做些升級。

c) 防調(diào)試,通過ptrace進(jìn)程,阻止破解者再ptrace調(diào)試。

d) 防模擬器,檢測/system/bin/su和/system/xbin/su文件。

e) 防xposed,通過檢測XposedHelpers的methodCache,判斷是否被hook。

讀到這里,這篇“Android app如何加密”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點(diǎn)還需要大家自己動手實(shí)踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI