固件

使用原厂固件

方式

通过拆机连接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方法:

f5fe026eb710709eab2524500e9b4eaa.png
这里直接看重点,这个方法在经过判断大小等处理后直接执行了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行:

77e2a686933955e9a4ffa4ead094e1e3.png
进行了一次判断flag == 173670400通过python可以看出173670400的十六进制正是0A5A0000
9353ff6530ebffcbc80e5e5d9a3b1476.png