模块扫盲课,如何判断一个模块是否安全
害怕模块会格机?担心模块里面藏有后门?这节课将彻底让你不再害怕格机,教会你模块安全性的所有知识,让格机无所遁形!
目录
1.模块刷入和生效的原理
2.格机在模块中生效的原理
3.格机代码常见样式
3.找到格机代码与后门的演示
4.预防格机与防格机模块
模块的原理
想要知道模块为什么会格机,格机代码会被藏在哪里,就必须先简单了解一下模块工作的原理
首先,我们打开一个常见的模块,它通常包含以下文件夹或者文件(没有的可以忽略)
META-INF
system
system.prop
customize.sh
module.prop
service.sh
post-fs-data.sh
其中以.sh为后缀的有三个:service.sh、post-fs-data.sh、customize.sh
他们分别会在以下的环节被自动执行
模块刷入时执行:customize.sh
手机启动的早期阶段执行:post-fs-data.sh
手机启动完成后执行:service.sh
除这三个外,/META-INF/com/google/android/目录还有个叫update-binary的文件,它虽然不以.sh后缀结尾,但是同样会在模块刷人时被执行
所以简单来说,模块工作的主体就是这四个文件
其余的文件除非模块自己设定,否则均不会[被执行],所以这里暂时忽略
格机在模块中如何生效?
前面讲了模块中只有这四个文件会被自动执行,所以格机代码只要位于这四个文件中,就会在对应阶段被执行,从而实现格机
如何查找格机代码
格机代码大多数藏匿于这四个文件中,一般来说只用排查这四个文件即可。但是如果模块中存在其他的.sh文件,那作者大概率是设置了会在某个阶段执行的,所以最好是把其他.sh文件也排查一遍
格机代码常见样式
1.dd if命令,意思是将指定的数据写入指定的区域,如果后面跟的是zero,那么大概率是格机,执行后会用0填充整个硬盘
下面简单演示一下如何用mt管理器找到dd if命令
2.rm -rf命令,意思是删除文件且不需要确认,需要注意的是这个命令不一定是格机,需要看删除的是什么文件,仅删除$MODPATH或者$TMPDIR并不是格机,而是正常删除模块缓存,如果删除的是关键文件或者是全盘文件,那就是格机无疑了。
下面简单演示找到rm -rf正常删除模块缓存的命令
如果你还是没有学会,可以直接在虚拟机里先装模块测试,确认没有问题再刷入,虚拟机里就算被格机,也完全不会影响到真机。
除这两种命令外,基本没有其他能够直接格机的命令,一般来说,没有这两种命令的模块并不会直接格机,但并不代表完全安全,接下来教学如何找到模块里的"后门"
如何找到后门代码
有的模块格机手段更加高深,不会在你安装时进行格机,而是偷偷在你手机里埋下后门,随时可以控制格机,这样即使是虚拟机测试,也发现不了任何问题。
但是我们依然有方法找到模块中的后门代码,后门需要远程控制,也就是需要网络请求,而安卓中请求网络的命令有两个:wget、curl。只需要在模块中查找这两个命令,就能找到后门。
这里以之前让k60大规模被格机的后门代码为例
这段代码中包含两个curl,用于不断从格机者的服务器获取脚本并执行,一开始这个脚本是空的,所以并不会格机,当脚本被替换为格机命令时,才会执行格机
绝大多数模块是不需要使用wget和curl命令的,当发现模块中有这两个命令,就要格外小心了
防格机模块有用吗?
有用,但是无法防御所有的格机
防格机大多是通过拦截格机命令来实现的,比如@HChai 大佬的百分百防格机,还有通过把关键分区改变挂载点来实现的,这些模块确实能起到很大的作用,能够拦截绝大部分格机命令,但是任何东西都总有失灵的时候,你不能用手机的命去赌它一定有用。
最好的防格机模块就是一个聪明的大脑和一双雪亮的眼睛,擦亮双眼,才能杜绝格机。