害怕模塊會(huì)格機(jī)?擔(dān)心模塊里面藏有后門?這節(jié)課將徹底讓你不再害怕格機(jī),教會(huì)你模塊安全性的所有知識(shí),讓格機(jī)無所遁形!本文來自資深玩家:貓頭鷹醬醬,相關(guān)文章幫助了更多用戶避免被軟件模塊格機(jī),ROM基地整理分享給大家
目錄
1.模塊刷入和生效的原理
2.格機(jī)在模塊中生效的原理
3.格機(jī)代碼常見樣式
3.找到格機(jī)代碼與后門的演示
4.預(yù)防格機(jī)與防格機(jī)模塊
模塊的原理
想要知道模塊為什么會(huì)格機(jī),格機(jī)代碼會(huì)被藏在哪里,就必須先簡單了解一下模塊工作的原理
首先,我們打開一個(gè)常見的模塊,它通常包含以下文件夾或者文件(沒有的可以忽略)
META-INF
system
system.prop
customize.sh
module.prop
service.sh
post-fs-data.sh
模塊文件
其中以.sh為后綴的有三個(gè):service.sh、post-fs-data.sh、customize.sh
他們分別會(huì)在以下的環(huán)節(jié)被自動(dòng)執(zhí)行
模塊刷入時(shí)執(zhí)行:customize.sh
手機(jī)啟動(dòng)的早期階段執(zhí)行:post-fs-data.sh
手機(jī)啟動(dòng)完成后執(zhí)行:service.sh
除這三個(gè)外,/META-INF/com/google/android/目錄還有個(gè)叫update-binary的文件,它雖然不以.sh后綴結(jié)尾,但是同樣會(huì)在模塊刷人時(shí)被執(zhí)行
所以簡單來說,模塊工作的主體就是這四個(gè)文件
其余的文件除非模塊自己設(shè)定,否則均不會(huì)[被執(zhí)行],所以這里暫時(shí)忽略
格機(jī)在模塊中如何生效?
前面講了模塊中只有這四個(gè)文件會(huì)被自動(dòng)執(zhí)行,所以格機(jī)代碼只要位于這四個(gè)文件中,就會(huì)在對(duì)應(yīng)階段被執(zhí)行,從而實(shí)現(xiàn)格機(jī)
如何查找格機(jī)代碼
格機(jī)代碼大多數(shù)藏匿于這四個(gè)文件中,一般來說只用排查這四個(gè)文件即可。但是如果模塊中存在其他的.sh文件,那作者大概率是設(shè)置了會(huì)在某個(gè)階段執(zhí)行的,所以最好是把其他.sh文件也排查一遍
格機(jī)代碼常見樣式
1.dd if命令,意思是將指定的數(shù)據(jù)寫入指定的區(qū)域,如果后面跟的是zero,那么大概率是格機(jī),執(zhí)行后會(huì)用0填充整個(gè)硬盤
dd格機(jī)
下面簡單演示一下如何用mt管理器找到dd if命令
2.rm -rf命令,意思是刪除文件且不需要確認(rèn),需要注意的是這個(gè)命令不一定是格機(jī),需要看刪除的是什么文件,僅刪除$MODPATH或者$TMPDIR并不是格機(jī),而是正常刪除模塊緩存,如果刪除的是關(guān)鍵文件或者是全盤文件,那就是格機(jī)無疑了。
如果你還是沒有學(xué)會(huì),可以直接在虛擬機(jī)里先裝模塊測試,確認(rèn)沒有問題再刷入,虛擬機(jī)里就算被格機(jī),也完全不會(huì)影響到真機(jī)。
除這兩種命令外,基本沒有其他能夠直接格機(jī)的命令,一般來說,沒有這兩種命令的模塊并不會(huì)直接格機(jī),但并不代表完全安全,接下來教學(xué)如何找到模塊里的"后門"
如何找到后門代碼
有的模塊格機(jī)手段更加高深,不會(huì)在你安裝時(shí)進(jìn)行格機(jī),而是偷偷在你手機(jī)里埋下后門,隨時(shí)可以控制格機(jī),這樣即使是虛擬機(jī)測試,也發(fā)現(xiàn)不了任何問題。
但是我們依然有方法找到模塊中的后門代碼,后門需要遠(yuǎn)程控制,也就是需要網(wǎng)絡(luò)請(qǐng)求,而安卓中請(qǐng)求網(wǎng)絡(luò)的命令有兩個(gè):wget、curl。只需要在模塊中查找這兩個(gè)命令,就能找到后門。
這里以之前讓k60大規(guī)模被格機(jī)的后門代碼為例
k60格機(jī)
這段代碼中包含兩個(gè)curl,用于不斷從格機(jī)者的服務(wù)器獲取腳本并執(zhí)行,一開始這個(gè)腳本是空的,所以并不會(huì)格機(jī),當(dāng)腳本被替換為格機(jī)命令時(shí),才會(huì)執(zhí)行格機(jī)絕大多數(shù)模塊是不需要使用wget和curl命令的,當(dāng)發(fā)現(xiàn)模塊中有這兩個(gè)命令,就要格外小心了
防格機(jī)模塊有用嗎?
有用,但是無法防御所有的格機(jī)
防格機(jī)大多是通過攔截格機(jī)命令來實(shí)現(xiàn)的,比如HChai 大佬的百分百防格機(jī),還有通過把關(guān)鍵分區(qū)改變掛載點(diǎn)來實(shí)現(xiàn)的,這些模塊確實(shí)能起到很大的作用,能夠攔截絕大部分格機(jī)命令,但是任何東西都總有失靈的時(shí)候,你不能用手機(jī)的命去賭它一定有用。最好的防格機(jī)模塊就是一個(gè)聰明的大腦和一雙雪亮的眼睛,擦亮雙眼,才能杜絕格機(jī)