此方法只针对于修改别人修改你的build.prop或者直接盗用你的系统/system/bin文件下的文件
1.首先看你的手机的init.d是以什么方式来支持的,一般的CM和部分自制ROM是通过修改/system/bin下的某个文件来实现支持init.d的 还有的则是通过修改内核来实现的,不过万变不离其宗 实际原理和效果都是一样的,只是前者更为灵活。
如果你的是通过修改文件来支持的,那么我们可以直接在这个文件里面修改,也可以从新拦截一个bin文件来修改,我推荐前者,这样会减少不稳定因素,但是如果你的ROM本来就不支持init.d 那么我们就得去找一个文件来拦截了
想要知道什么文件在手机开机的时候启动?解包一个内核,查看里面的init.rc
找到类似这样的语句
service netd /system/bin/netd
不一定得和我这个一样,这个是我举例子随便找的,最好是照那种不会太影响系统功能的服务来进行拦截,这里就拿这个来举例了
我们在/system/bin下找到这个netd 给他重命名,如果为了更加保密,你可以定义一个新的名字或者毫不相干的名字,只要你自己知道就好了,这里我给他命名 donet
好 我们再新建一个空文本,去掉后缀,文件命名为netd 用来充当李鬼
在里面加入shell的声明语句
#!/system/bin/sh
接下来我们就开始验证我们的build.prop的内容了
v=`getprop ro.build.lge.version.release`;
set — $v; if [ ! "$1" == "Optimus" ]; then reboot; fi;
这句的意思,定义一个变量v,内容为一个字符串 这里这个字符串就是我们的命令
getprop ro.build.lge.version.release
getprop的命令是用来读取build.prop文件的,后面加上要读取的对象,我这里举例是读取的
ro.build.lge.version.release
大家可以根据自己的build.prop来修改(比如ro.build.display.id之类的)
在我的build.prop里
ro.build.lge.version.release=Optimus V2
所以
if [ ! "$1" ==
"Optimus" ]
如果变量不等于Optimus
Then 那么
Reboot 重启
Fi
if语句结束标识符
到这里 拦截的步骤就完成了,我们还需要启动原来的我们的服务
为了能够成功启动原来的服务 这里推荐在init.d启动脚本里面去添加 不要在这个文件添加,但是如果在启动脚本里面添加容易被看出来 如果大家测试在这个文件里面不能成功启动,那么就只要在init.d里面添加了。
/system/bin/donet
这里也可以不写入路径,直接写donet,更具有隐蔽性
OK,记得在updater-script里面给我们的donet和netd给权限
教程到此结束 希望对大家有帮助。