固件
使用原厂固件
方式
通过拆机连接TTL进行安装
过程
0x0 设置开机启动adbd服务
通过TTL连接盒子会看到开机进度条有条提示:can not found: /system/bin/nginx_start.sh
cd进入/system/bin目录进行查看,确实没有这个目录。为了最小化侵入,这里新建个nginx_start.sh文件,然后通过这个文件实现adbd开机自启动。写入文件信息:
echo "#!/system/bin/sh\nsleep 10 \nadbd &" > /system/bin/nginx_start.sh
写入完成后检查是否为如下配置
#!/system/bin/sh
sleep 10
adbd &
最后记得添加上可执行权限chmod 777 /system/bin/nginx_start.sh
然后重启盒子就能达到开机自启adbd服务的效果了。
0x1 直接安装apk失败?
通过TTL连接到盒子,直接是root权限。使用盒子上的命令pm install <apk packages>直接返回应用为损毁软件提示。通过自带的浏览器和下载程序安装,桌面提示不能安装第三方应用。
0x2 直接复制到data分区
因为是通过TTL连接,权限又是root,所以可以直接把包复制到/data/app/目录中。经过试验此方法可行,但是有些app不能实时在桌面或应用程序中找到,需要盒子重启后才行。
0x3 反编译安装程序
没有办法,直接开启adbd服务,通过adb下载/system/app和/system/priv-app/目录下的apk程序进行反编译分析。
在对SilenceInstaller.apk这个应用进行反编译时,找到了installService方法:
pm install 安装命令。与一般的安装命令不同的是它后面需要加上一个-m参数,这里先把它看成安装应用需要的密码。如果密码是0A5A0000就允许安装,否则不允许安装。到了这里,可以直接使用adb命令进行安装:pm install -m 0A5A0000 <apk packages>
测试安装了悟空遥控app,可以进行安装。
0x4 跟进神秘的0A5A0000
通过查看发现pm是个脚本,内容为:
# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"
直接下载pm.jar,通过反编译进行查看。看runInstall方法,直接跳到885行:
flag == 173670400通过python可以看出173670400的十六进制正是0A5A0000