国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Android下惡意代碼隱藏的一種方式

一、背景

在Android操作系統(tǒng)中,APK文件是一個包含多種普通文件和可執(zhí)行文件的ZIP格式文件。在一個正常的APK文件中,其壓縮的根目錄下會包含一個名為classes.dex的DEX可執(zhí)行文件,并且可能在lib目錄下包含一個或多個ELF格式的動態(tài)鏈接庫文件。如果在這個APK文件中,在其他位置還包含其他的APK、DEX或ELF格式的可執(zhí)行文件或動態(tài)鏈接庫文件,我們稱之為出現(xiàn)了異常的可執(zhí)行文件。

安全軟件在檢測惡意代碼的時候,不僅會對APK,classes.dex以及相關(guān)動態(tài)鏈接庫文件的特征進(jìn)行匹配檢測,并且同時會對APK中異常的可執(zhí)行文件特征進(jìn)行檢測。

這里以egdata家族的樣本為例,介紹其采用的一種對異常的可執(zhí)行文件的隱藏方式,來逃避安全軟件對相關(guān)惡意代碼文件的檢測,并增加檢出的難度。

二、篡改的萬年歷 — egdata.a

樣本egdata.a是一個被攻擊者篡改并重新打包過的萬年歷應(yīng)用,在運(yùn)行時會提示程序更新,但是由于簽名不同,更新會失敗。

圖1 egdata.a運(yùn)行截圖

對樣本的APK文件結(jié)構(gòu)和官方應(yīng)用的結(jié)構(gòu)進(jìn)行比較,發(fā)現(xiàn)樣本在/assets目錄下多了一個eg.data文件,對eg.data的文件頭部內(nèi)容進(jìn)行識別發(fā)現(xiàn)開始2個字節(jié)為PK,進(jìn)行解壓,其根目錄下包含AndroidManifest.xml,classes.dex,為標(biāo)準(zhǔn)的APK文件。

圖2 egdata.a(左)和官方應(yīng)用(右)APK結(jié)構(gòu)對比

圖3 eg.data文件內(nèi)容

通過對樣本APK的分析,其在類com.android.commond.Egrecvol中的createSingleInstall()方法實(shí)現(xiàn)了從/assets中提取eg.data。

InputStream v6 = Egrecvol.context.getAssets().open(“eg.data”);
FileOutputStream v7 = new FileOutputStream(this.fJar);
Egrecvol.Log(“eg.data len=” + v6.available());
while (true) {
v1 = new byte[1024];
v9 = v6.read(v1);
if (v9 > 0) {
goto lable_142;
}
break;
lable_142:
v7.write(v1, 0, v9);
}
v6.close();
v7.close();

釋放eg.data后,使用動態(tài)的方式調(diào)用所需的代碼,方式如下:

使用DexClassLoader動態(tài)加載釋放的eg.data文件,返回ClassLoader;
調(diào)用loadClass方法加載關(guān)鍵類,這里加載的類“com.suntu.engine3.engine.Main1”;
獲取該類的Constructor
調(diào)用newInstance創(chuàng)建類,并初始化,至此惡意代碼被徹底調(diào)用起來

當(dāng)eg.data這個APK文件被動態(tài)加載執(zhí)行后,它會執(zhí)行自身的com.suntu.engine3.engine.jni.JNIEngine類下的realeseFile()方法釋放一個.so的本地動態(tài)鏈接庫文件。這個被釋放文件的實(shí)際內(nèi)容以byte數(shù)組的形式存儲在Java代碼中。

以下是這個數(shù)組的一個片段:

static
{
byte[] arrayOfByte = new byte[5556];
arrayOfByte[0] = 127;
arrayOfByte[1] = 69;
arrayOfByte[2] = 76;
arrayOfByte[3] = 70;
arrayOfByte[4] = 1;
arrayOfByte[5] = 1;
arrayOfByte[6] = 1;
arrayOfByte[16] = 3;
arrayOfByte[18] = 40;
arrayOfByte[20] = 1;
arrayOfByte[24] = -116;
arrayOfByte[25] = 9;
arrayOfByte[28] = 52;
arrayOfByte[32] = 12;
arrayOfByte[33] = 19;
arrayOfByte[36] = 2;
arrayOfByte[39] = 5;
arrayOfByte[40] = 52;
arrayOfByte[42] = 32;
arrayOfByte[44] = 5;
arrayOfByte[46] = 40;
arrayOfByte[48] = 17;
arrayOfByte[50] = 16;
arrayOfByte[52] = 1;
arrayOfByte[55] = 112;
arrayOfByte[56] = -72;
arrayOfByte[57] = 16;
arrayOfByte[60] = -72;
arrayOfByte[61] = 16;
arrayOfByte[64] = -72;
arrayOfByte[65] = 16;
arrayOfByte[68] = 72;
arrayOfByte[72] = 72;
arrayOfByte[76] = 4;
arrayOfByte[80] = 4;
arrayOfByte[84] = 1;
arrayOfByte[101] = 17;

在這個樣本中,依舊采用了常規(guī)的添加異常的APK文件并動態(tài)加載的方式[1],但是通過在代碼中存儲.so動態(tài)鏈接庫文件內(nèi)容的方式實(shí)現(xiàn)對異常的動態(tài)鏈接庫文件的隱藏。

三、被感染的酷我音樂 — 變種egdata.c

變種egdata.c是一個被攻擊者篡改的酷我音樂應(yīng)用【2】,其采用了更加隱蔽的方式來隱藏包含有惡意代碼的APK文件,從而來增加安全軟件對其特征提取和識別的難度。

其APK文件結(jié)構(gòu)如下所示。

圖4 egdata.c APK結(jié)構(gòu)

在/assets目錄下有兩個jpg圖片文件emg.jpg,wkag.jpg,其中emg.jpg不能正常顯示為圖片。在變種APK的cn.kuwo.player.MainActivityyb類中的releaseClassData()方法實(shí)現(xiàn)從wkag.jpg文件中提取APK文件并動態(tài)加載。這里是從wkag.jpg文件的1024字節(jié)偏移處開始到文件最后為隱藏的APK文件內(nèi)容,并且每個字節(jié)做了減一變換。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
APK文件查看、修改和簽名 - dospy智能手機(jī)網(wǎng) 塞班 安卓Android 蘋果iPh...
在Android上使用LocalSocket實(shí)現(xiàn)上層Java和底層C++的通信
Delphi XE 11.1下創(chuàng)建簽名文件
安卓應(yīng)用加固之各代加殼保護(hù)技術(shù)詳解
Android逆向之旅
APK程序安裝包的用處(其實(shí)是一個壓縮包和文件格式)及安裝方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服