013 Android锁机病毒分析
文章目錄
- 免流服務(wù)器-鎖機(jī)病毒分析
- 秒搶紅包-鎖機(jī)病毒分析
免流服務(wù)器-鎖機(jī)病毒分析
首先來分析這個(gè)免流服務(wù)器的鎖機(jī)病毒,文件信息如下
文件: 免流服務(wù)器.apk 大小: 799835 bytes 修改時(shí)間: 2016年3月 16日, 23:26:10 MD5: 2EFCA46F34A565C2EF4052B89B6B364B SHA1: 5493A958A592BB0B19C43ACB2C1F52C898885207 CRC32: 7F89A927安裝以后點(diǎn)擊安裝核心按鈕
這里在請(qǐng)求root權(quán)限,點(diǎn)擊允許
按照提示重啟模擬器
重啟完成之后手機(jī)被鎖屏。將apk拖到Android Killer進(jìn)行分析
首先查看工程信息,這里可以查看到當(dāng)前apk的四大組件的注冊(cè)信息以及用戶權(quán)限。
然后查看當(dāng)前工程的清單文件,入口類為MainActivity
直接查看onCreate函數(shù)的JAVA代碼,從頭開始分析。
這里創(chuàng)建了一個(gè)文件對(duì)象stk3.apk,然后往路徑中寫入文件數(shù)據(jù)。
寫入的文件數(shù)據(jù)來自于getAssets方法中的stk3.apk文件。
getAssets方法的含義就是獲取當(dāng)前apk的assets文件夾,當(dāng)前apk的assets有下面幾個(gè)自定義資源文件
上面的代碼寫入的數(shù)據(jù)就是來源于stk3.apk
Android Killer的反編譯效果并不好,這里可以換成jadx進(jìn)行對(duì)比分析。到這里onCreate方法就分析完了,該app啟動(dòng)時(shí),會(huì)自動(dòng)將資源中的stk3.apk寫入到SD卡中。
接著查看資源中的layout布局文件
安裝核心這個(gè)按鈕,有一個(gè)對(duì)應(yīng)的onClick方法,接著來分析這個(gè)onClick方法
az這個(gè)方法是將stk3.apk拷貝到系統(tǒng),點(diǎn)進(jìn)去看CopyAppToSystem函數(shù)
private void copyAppToSystem(String str) {try {Process root = getRoot();if (root != null) {DataOutputStream dataOutputStream = new DataOutputStream(root.getOutputStream());dataOutputStream.writeBytes("mount -o remount, rw /system/\n");dataOutputStream.writeBytes(new StringBuffer().append(new StringBuffer().append(new StringBuffer().append("cp ").append(str).toString()).append(" /system/app/").toString()).append("\n").toString());dataOutputStream.writeBytes(new StringBuffer().append(new StringBuffer().append(this.CHMOD_CMD).append(str.substring(str.lastIndexOf("/"))).toString()).append("\n").toString());dataOutputStream.writeBytes("exit\n");root.waitFor();dataOutputStream.close();Toast.makeText(this, "開始安裝核心文件....", 0).show();Toast.makeText(this, "正在進(jìn)行最后處理....", 0).show();Toast.makeText(this, "核心文件安裝完成!重啟手機(jī)后生效!", 0).show();}} catch (Exception e) {e.printStackTrace();Toast.makeText(this, "核心文件安裝錯(cuò)誤!請(qǐng)確認(rèn)手機(jī)是否已經(jīng)root!", 0).show();}}這個(gè)方法做了以下幾件事
接著來分析stk3.apk
查看工程信息,確定入口類
再查看清單文件,清單文件中有開機(jī)自啟動(dòng)的權(quán)限以及一個(gè)廣播接收者,也就是說開機(jī)之后會(huì)自動(dòng)執(zhí)行廣播接收者的回調(diào)函數(shù)
再來查看入口類的代碼
onCreate方法中啟動(dòng)了一個(gè)名為llxfc的服務(wù)
在onStartCommand方法里,創(chuàng)建了一個(gè)覆蓋桌面的窗口,并且設(shè)置了42個(gè)按鈕,這里只要找到了解鎖按鈕對(duì)應(yīng)的響應(yīng)事件就能夠找到密碼
而解鎖按鈕必然要獲取輸入的內(nèi)容進(jìn)行比較
這里直接搜索equals就能找到響應(yīng)函數(shù)
@Overridepublic void onClick(View paramAnonymousView){if ((llxfc.access$L1000000(llxfc.this).getText().toString().equals("T")) && (llxfc.access$L1000001(llxfc.this).getText().toString().equals("F")) && (llxfc.access$L1000002(llxfc.this).getText().toString().equals("B")) && (llxfc.access$L1000003(llxfc.this).getText().toString().equals("4"))) {llxfc.access$L1000005(llxfc.this).removeView(llxfc.access$L1000006(llxfc.this));}}});這里很容易就能看到密碼是TFB4
輸入TFB4,點(diǎn)擊解鎖
即可完成解密
秒搶紅包-鎖機(jī)病毒分析
樣本信息如下:
文件: 鎖機(jī)-秒搶紅包.apk 大小: 251271 bytes 修改時(shí)間: 2016年4月 15日, 23:37:26 MD5: 033AE1BA78676130E99ACC8D9F853124 SHA1: B43F731C59FF37602CB9F971F893965EF19C9DEE CRC32: AAC480FC運(yùn)行樣本,提示是否激活設(shè)備管理器
點(diǎn)擊激活后,返回主界面,模擬器被鎖屏。這個(gè)樣本是個(gè)雙重密碼,安裝完成后有運(yùn)行時(shí)解鎖密碼,重啟之后有屏幕鎖屏密碼
將文件用Android Killer打開,查看工程信息,
接著查看onCreate方法,里面調(diào)用了activiteDevice方法,跟進(jìn)去查看代碼
這個(gè)函數(shù)創(chuàng)建了一個(gè)Intent,獲取一個(gè)Class,接著啟動(dòng)了這個(gè)設(shè)備管理器。接著來查看MyAdmin這個(gè)類
分析onEnabled函數(shù),這個(gè)是設(shè)備管理器的激活方法,很明顯就能看出密碼就是8985,但是這個(gè)8985并不是當(dāng)前這一層的解鎖密碼。
接著又啟動(dòng)了一個(gè)服務(wù),就是說com.h.s這個(gè)類是一個(gè)服務(wù)類,剩下的代碼都在服務(wù)里面。首先查看服務(wù)的onCreate方法
這里創(chuàng)建了一個(gè)pass和passw對(duì)象,和一個(gè)des算法對(duì)象
this.pass = ((Math.random() * 100000000)); this.passw = new Long(this.pass + '?'); this.des = new DU("flower");接著獲取Flowers這個(gè)xml文件
this.share = getSharedPreferences("Flowers", 0);如果Flowers.xml里面的m等于0的話,就往里面寫入pass這個(gè)值
if (this.share.getLong("m", 0) == 0){this.editor.putLong("m", this.pass);this.editor.commit();}往 this.editor寫入passw和加密后的字符串
this.editor.putString("passw", this.des.encrypt(new StringBuffer().append("").append(this.passw).toString()));this.editor.commit();也就是說Flowers.xml里面有兩個(gè)數(shù)據(jù),一個(gè)是m對(duì)應(yīng)的value,一個(gè)是passw對(duì)應(yīng)的value。接著我們用adb連接模擬器,去查看這個(gè)文件的內(nèi)容
首先查看當(dāng)前設(shè)備,確認(rèn)連接成功
接著使用adb shell命令,進(jìn)入到命令行
切換到data/data/com.h目錄下,里面有一個(gè)文件夾shared_prefs
查看Flowers.xml,可以看到m的值和passw的值
回到代碼,m的值就是pass,而passw就是pass加上8985,所以passw的值就等于?65475849?,這個(gè)就是第一層的密碼
輸入密碼之后,第一層解鎖完成
再輸入8985,第二層解鎖完成,到這里這個(gè)鎖機(jī)病毒就分析完成了。
總結(jié)
以上是生活随笔為你收集整理的013 Android锁机病毒分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 012 动态调试smali代码
- 下一篇: 014 Android之Cydia与Xp