日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android恶意代码检测报告,用机器学习检测Android恶意代码

發布時間:2025/3/20 Android 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android恶意代码检测报告,用机器学习检测Android恶意代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考資料

原理

原理就不詳細講了,我參考資料中給的鏈接已經說得很清楚了,我就說一說原文中說得不是很清楚,我自己進行了一些揣摩理解的地方。

我以method作為單位進行提取,每個method看成互不相關的“句子”。以3-gram為例,如果method中的指令數目小于3的話則忽略該method。

原文按照一定的標準將指令分為MRGITPV七類,我按照Android4.1.2源碼下的dalvik-bytecode.html對其進行了整理,所有的字節碼到其分類的映射規則都位于/infrastructure/map.py文件中。

看原文的意思似乎最后的特征是通過匯總每種n-gram在app中出現的次數得到的,但是我思考了一下,如果app規模的大小相差很大的,這么做似乎不是很妥,因為規模大的app的指令出現數量自然應該傾向于比較多,比如我手頭里的樣本,惡意樣本的規模大多都比較小,而良性樣本的規模大多都很大,所以這里最終提取的特征是按照每種n-gram是否出現,如果出現過就為1,不出現就為0。我認為這樣會更加合理的原因是,惡意軟件往往都不是從頭開始寫的,大多數應該都是通過重用以前的代碼而實現的,通過判斷一種惡意n-gram是否出現應該能有一定的惡意軟件鑒別效果。

如何運行

本軟件是基于python3.6開發的,反匯編使用的工具是apktool,我已經將其放在了本倉庫的根目錄下,唯一的依賴是pandas,如果還沒有安裝的話,請使用pip install pandas安裝。

首先在clone下來的目錄下新建/smalis/malware和/smalis/kind兩個文件夾(這兩個是存放反匯編結果的目錄)。

然后打開batch_disasseble.py,將27行的virus_root變量的值改成自己電腦上存放惡意軟件apk樣本根目錄,32行的kind_root變量的值改成自己電腦上存放正常apk樣本的目錄,然后按照以下順序執行命令即可(或者直接執行run.bat,里面寫的就是這些命令):

python batch_disasseble.py

python bytecode_extract.py

python n_gram.py 6

python n_gram.py 5

python n_gram.py 4

python n_gram.py 3

python n_gram.py 2

?  其中batch_disasseble.py是用于反匯編apk的;

? python bytecode_extract.py執行結束后會在當前目錄生成一個data.csv,這個是在n-gram處理之前的特征,data.csv由SoftwareName,Feature,isMalware三個字段組成,分別代表軟件名稱,特征和是否惡意軟件(是為1,不是為0),其中Feature字段是該app的所有操作碼(被分為了MRGITPV七類表示),其中用"|"分隔不同的method。

python n_gram.py后面接的參數的含義就是n-gram中的n,命令運行結束之后會在當前目錄生成一個n-gram.csv文件,比如python n_gram.py 2,命令執行結束后就會在當前目錄生成一個2-gram.csv文件。

這些腳本我已經用自己手頭上的樣本運行過一遍了,本倉庫根目錄下的data.csv(因為超過了github限制的最大文件限制,所以沒有上傳),6_gram.csv(同樣的原因沒有上傳),5_gram.csv,4_gram.csv,3_gram.csv,2_gram.csv就是我在那些樣本上提取的特征。

倉庫中的數據說明

5_gram.csv,4_gram.csv,3_gram.csv,2_gram.csv前600個樣本是惡意樣本,后面583個樣本是良性樣本

軟件模塊

概述:batch_disasseble.py,bytecode_extract.py,n_gram.py是三個可以直接執行的腳本,/infrastructure下的模塊全部是給這些腳本提供一些封裝好的基礎設施,比如smali解析等等。

batch_disasseble.py:將惡意apk從指定目錄反匯編到/smalis/malware/目錄下,將良性apk從指定目錄反匯編到/smalis/kind/目錄下的腳本

bytecode_extract.py:將字節碼從smali文件中提取出來并映射成其分類,最終存儲到當前目錄下的data.csv的腳本

n_gram.py:將data.csv提取n_gram特征轉換成n_gram.csv的腳本

infrastructure.map:我在這里配置了所有字節碼到MRGITPV分類的映射關系

infrastructure.smali:Smali類的每個實例代表一個smali文件,用于封裝解析smali文件的邏輯

infrastructure.ware:Ware類的實例代表一個安卓app,該類的實例會包含多個Smali實例,這些Smali實例都是從該app反匯編得到的smali文件得到的

總結

以上是生活随笔為你收集整理的android恶意代码检测报告,用机器学习检测Android恶意代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。