丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
政企安全 正文
發(fā)私信給郭佳
發(fā)送

0

VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

本文作者: 郭佳 2017-12-14 15:29
導(dǎo)語:由于VMP加殼技術(shù)目前無標準化,各廠商加固的效果也不盡相同。

雷鋒網(wǎng)編者按:不少基于Java的 APP 很容易被破解,之前曾有新聞報道,一些專職的 APP 打包黨專門從各種渠道找到 apk,將其文件破解、反編譯,然后加入廣告、病毒代碼,重新打包投入市場,不明真相的用戶若將帶病毒廣告的 apk 下載下來,影響使用體驗不說,還容易造成損失,若不采取安全措施,簡直如同“裸奔”。

為了提升APP的安全性,加固技術(shù)應(yīng)運而生。目前,App加固技術(shù)經(jīng)歷了以下四代技術(shù)發(fā)展↓↓↓

第一代加固技術(shù)——混淆技術(shù);

第二代加固技術(shù)——加殼技術(shù);

第三代加固技術(shù)——指令抽離;

第四代加固技術(shù)——指令轉(zhuǎn)換,即現(xiàn)在經(jīng)常被應(yīng)用的VMP加固技術(shù)。

但是由于VMP加殼技術(shù)目前無標準化,所以各廠商加固的效果也不盡相同,來自愛加密攻防實驗室的研究人員,抽選了一款經(jīng)過 VMP 加殼過加固的APP來驗證加固的安全強度,以此對比第三代加固的安全性,讓我們一起來看看效果對比。

以下為愛加密攻防實驗室對雷鋒網(wǎng)的投稿。

1、首先來驗證三代加固的安全:

三代加固:即抽取 dex 文件中 DexCode 的部分結(jié)構(gòu),即虛擬機操作碼。在虛擬機加載到此類的時候?qū)?DexCode 結(jié)構(gòu)進行還原。從而保證 app 能正常的運行。

如圖1-2,可知 accountLogin() 方法被抽取了,經(jīng)過分析得知其 hook 系統(tǒng)函數(shù) dvmResolveClass(以andorid4.4.4 為例),在系統(tǒng)執(zhí)行此函數(shù)之前會先對 ClassObject 進行修復(fù),修復(fù)之后即可正常運行。

修復(fù)演示:修復(fù)代碼可以參考開源工具 DexHunter ,在 dvm 情況下,DexHunter 脫殼工具主要的實現(xiàn)思路是修改 Android 源碼文件 /dalvik/vm/native/dalvik_system_DexFile.cpp 里的 Dalvik_dalvik_system_DexFile_defineClassNative 函數(shù)的實現(xiàn),具體操作是在 Android 系統(tǒng)代碼調(diào)用函數(shù) dvmDefineClass進行類加載之前,主動地一次性加載并初始化 Dex 文件所有的類。

此時拿到類就是已經(jīng)修復(fù)過的。以上為修復(fù)思路,僅僅作為參考。

修復(fù)工具部分代碼見圖1-1

 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖1-1

修復(fù)后的效果:如圖1-2。 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖1-2

反編譯為java源碼文件,代碼邏輯更加清晰,如圖 1-3

 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖 1-3

總結(jié):抽取加固一般可以防住一些基礎(chǔ)手段的攻擊,但網(wǎng)上有很大一部分工具可以破解此類技術(shù)的加固,核心代碼保護強度不夠,對網(wǎng)上的工具稍作修改即可破解。

2、再次驗證VMP加殼的安全性:

VMP加殼:VMP加殼在三代基礎(chǔ)上,抽取代碼后,并沒有對代碼進行還原,而是通過廠商自研的“虛擬機”來進行解析opcode,然后通過JNI 接口反射執(zhí)行各個方法。VMP加殼對于對代碼保護的效果、加殼后的運用價值相對于歷代加殼技術(shù)就高出不止一個臺階了,那么下一步讓我們拿出各加固廠商的自稱的“VMP加殼”版本進行驗證: 

我們獲取到*(匿名)廠商自稱VMP加殼樣本,通過初步分析確認該廠商VMP加殼版本有自己一套虛擬機操作碼表,這個表和正常虛擬機操作碼表是一一對應(yīng)的關(guān)系。也就是說拿到了這個表就可以還原操作碼。

首先通過HOOK JNI部分接口查看其是否是通過JNI接口來實現(xiàn)VMP函數(shù)執(zhí)行。效果圖2-0如下

 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖 2-0

可以確定此VMP是通過JNI接口來執(zhí)行VMP函數(shù)。

通過一些手段可以拿到此加固的操作碼表,需要一個一個操作碼比較,其置換表(測試樣本)如下圖2-1所示,

 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖2-1

加固前被加固的方法如下圖2-2,通過簡單查看這些被”vmp”方法基本都是是一些事件方法,核心代碼基本上采用的都是三代加固技術(shù)(測試樣本)。 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖2-2

可以知道,此加固是將原有的方法內(nèi)容抽取掉并替換掉成自己的方法,然后在這個方法里通過反射調(diào)用原先的代碼。還原工具部分代碼如下圖

通過hook dlopen函數(shù)等待libdexjni.so庫加載,一旦加載成功開始獲取相關(guān)函數(shù),其中兩個導(dǎo)出函數(shù),可以獲取DexCode的內(nèi)存、處理加密后的DexCode。如圖2-3 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖 2-3

接著根據(jù)特征信息獲取被加固方法的ID,如圖2-4

 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖 2-4

調(diào)用通過調(diào)用libdexjni.so 中的方法進行還原。如圖2-5 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖 2-5

其中說測試樣本的結(jié)構(gòu)體.如下圖也就是我們通過調(diào)用libdexJni.so中方法的返回值。如圖2-6

VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖 2-6

通過如上方法可以還原此加固樣本的“vmp”的方法。

還原效果如下圖2-7可以和圖2-2做對比

 VMP 加固 PK 第三代加固,誰才能為 APP 保平安?

圖2-7

愛加密攻防實驗室總結(jié):用VMP加固后的APP的還原過程是比較復(fù)雜和困難的,需要用大量的時間做相關(guān)分析,分析過程中的困難主要來自于函數(shù)名的混淆,由于現(xiàn)在的VMP都是基于JNI接口的,在某些情況下有可能泄露邏輯,比如HOOK 虛擬機的JNI接口函數(shù),加上日志輸出,還是可以看到調(diào)用的函數(shù)。但是,由于目前VMP加殼版本沒有統(tǒng)一標準與要求,就導(dǎo)致了不同廠商給出不同VMP加殼版本的方案在對安全、性能上會呈現(xiàn)不一樣的效果。

以上為愛加密攻防實驗室投稿,雷鋒網(wǎng)整理。

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

分享:
相關(guān)文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說