android病毒分析技巧和方法
分析前的準備工作:
析前首先了解應用自身的的功能,不要將應用自身的工作當作惡意行為來處理.
看許可權,根據應用的許可權判斷應用可以產生哪些行為,並判斷出這些許可權是否和應用的功能相關,如果有與應用本身不相關的功能那麼針對這些許可權的產生的行為要進行確認
的病毒屬於在正常應用中插入惡意**,並且病毒行為需要的許可權和應用本身需要的許可權是重複的,此時要辨別出那些**是病毒的**,那些是應用本身的**
的應用確實需要一些看似和應用無關的許可權,比如很多殺入軟體也有傳送簡訊的許可權和**,這點可以通過執行程式檢視是否有相應的提示,比如在應用介面會有簡訊反饋意見的提示.
常規分析的方法:
壓程式後從程式的入口順序分析程式的執行流程的行為,跳過不必要的**
後順著入口繼續分析service,thread,aynctask等.
行過程中可以通過執行命令 tcpdump -p -vv -s 0 -w ***.pcap的辦法對獲取網路傳輸資料,通過分析pcap可以幫助判斷是否有隱私竊取行為和遠端控制行為
行程式過程中連線eclipse,可以通過catlog和file explorer檢視應用的一些反饋資訊和使用的檔案等,emulator control可以模擬傳送短息、接打**、位置定位來幫助判斷是否有系統破壞行為等.
快速分析的方法:
感api直接查詢法
用droidbox和apimonitor監控進出的網路資料,檔案讀寫,發出的簡訊和聯絡歷史,加密類api等.
線分析工具和防毒軟體檢查,根據以上提供的資訊進行行為確認或者重點分析
獲取不直接資料的方法:
壓後在目標**處注入log**來列印目標資料.
壓後找到資料來源和相關的方法,之後把資料來源和相關方法加入到自己開發的應用中去執行,從而得到不直接資料
用andbug在對目標方法下斷點,根據斷點提示的資訊檢視不直接資料.
用droidbox可以監控部分api的資料,如發出的簡訊號碼和內容等
解決反編譯後不能安裝的方法:
碼中可能存在簽名檢查的方法,根據固定的api可以查詢的獲取簽名資訊所在的方法和判斷邏輯的方法,修改判斷邏輯,使之檢查失效
碼中可能存在校驗保護的方法,比如針對class.dex檔案的hash進行檢查,根據固定的api可以查詢的獲取簽名資訊所在的方法和判斷邏輯的方法,修改判斷邏輯,使之檢查失效
碼中可能存在無效的資源,在public.xml檔案中刪除錯誤提示中的資源id的元素
獲取目標**呼叫棧的方法:
接eclipse並執行程式, 使用method profile可以檢視目標方法的呼叫棧
壓apk後在目標**的smali檔案裡加入new exception(「trace」).printstacktrace();對應的smali**,之後重新打包執行該程式,當程式執行到目標**時會列印出目標方法的呼叫棧.
壓apk後在目標方法的前後分別加入android.os.debug.startmethodtrace(「123」)和android.os.debug.stopmethodtrace()對應的smali**,之後重新打包執行該程式,當程式執行到目標**時會列印出目標方法的呼叫棧.
用androguard的androdd.py工具可以生成apk檔案中每個類的方法的呼叫流程圖.
用androguard的androgexf.py工具可以生成apk的gexf格式的檔案,該檔案以節點和邊的形式展示apk中各個類之間的方法呼叫關係,
以通過gephi調整各個節點和邊的距離顏色等等
解決無法動態除錯的方法:
部分程式只能在真機中除錯,不能在模擬器中間除錯,可以改為真機除錯或者刪除應用中判斷模擬器的**
備註:
以上提示出大多數方法是在目標方法能夠執行的前提下才能實現,若目標惡意**無執行條件需要首先創造條件讓目標**執行起來
後續補充
簡單android病毒分析並實現其效果
今天在群裡看到大家發的乙個鏈結,乙個病毒的顯示方式,挺好玩的,模仿寫了下。這個實現的難度不大,主要是思路上面能夠理解就非常簡單了。根據截圖來看,主要也就是文字方面的更改,那麼我們可以直接考慮android中如何給textview進行賦值的操作。textview.settext charsequenc...
Android第三方推送分析
最近,公司的乙個物聯網專案android端,由於要保證推送的到達率和穩定性,由於google 的原生推送 c2dm,現在的 gcm 不能正常使用,故只能退而求其次採用了整合多方推送的方案。目前國內的主流的手機廠商主要有 華為,小公尺,oppo,vivo,魅族等。華為,小公尺都有官方自己的推送服務,其...
Java面試技巧和重點分析
雖然本人也是剛入行不久,但是之前也做過一些面試準備,剛好7 8月份,還有部分學生或者初入開發行業的潛在同行,正在找工作,所以把自己的感觸分享給大家,希望能夠幫助到大家,能夠順利的通過面試筆試,進入自己心儀的公司。做為一名應屆生或者初入開發行業人員,應該注重基礎知識和一些框架工具的使用。2.1 基礎知...