zoukankan      html  css  js  c++  java
  • 破解某基于MTK芯片的通讯终端

    中移动定制终端,具体型号隐去。开机只有定制的APP,无法安装apk,通过开发者模式也不行。adb install XXX.apk  显示“禁止安装第三方应用”。

    一、信息收集:

    1.可以进开发者模式,adb shell 是普通用户$,没有root权限。

    2.无法安装apk,通过开发者模式也不行。adb install XXX.apk  显示“禁止安装第三方应用”。

    3.经测试,data/local/tmp 目录可读可写可执行(Android系统均如此),用ndk 编译了一个二进制程序,上传至该目录,可以在 shell 中执行

    4.开一个命令行,列出所有安装的apk:

    adb shell pm list packages

    从以上回显中找到想要的APK,记下包名(例如 com.android.abc ),然后查找该apk的路径:

    adb shell pm path com.android.abc

    这里就回显出包名所在路径了(/data/app/com.android.abc-1.apk)。然后pull 到本地(命名为abc.apk):

    adb pull /data/app/com.android.abc-1.apk     abc.apk 

    二、漏洞利用提升权限,dump出系统镜像

    这里利用了一个漏洞,(CVE-2020-0069),通过mtk-su实现获取联发科设备Root权限:

    adb push  d:mtk-su  data/local/tmp
    adb shell ./data/local/tmp/mtk-su

    会返回一个root权限的shell,df命令查看各分区情况:

    ZhongDuanSheBei:/ $ df
    Filesystem            1K-blocks   Used Available Use% Mounted on
    tmpfs                    470612    620    469992   1% /dev
    /dev/block/mmcblk0p31   1515376 788544    694720  54% /system
    /dev/block/mmcblk0p30    483528 184024    284024  40% /vendor
    tmpfs                    470612      0    470612   0% /mnt
    /dev/block/mmcblk0p33   4970476 142324   4533240   4% /data
    /dev/block/mmcblk0p32    189920    484    183052   1% /cache
    /dev/block/mmcblk0p9       3824     76      3508   3% /vendor/protect_f
    /dev/block/mmcblk0p10      5280     76      4916   2% /vendor/protect_s
    /dev/block/mmcblk0p7      27632   2928     23728  11% /vendor/nvdata
    /dev/block/mmcblk0p6       3824     48      3536   2% /vendor/nvcfg
    /data/media             4970476 142324   4533240   4% /storage/emulated

    由上可知:

    boot分区(Linux内核)         ->   /dev/block/mmcblk0p25
    recovery分区 (Recovery恢复)     ->   /dev/block/mmcblk0p2
    system分区(Android系统框架及应用)    ->   /dev/block/mmcblk0p31

    然后将以上分区分别提取到手机的内置存储中,以boot分区为例:

    dd if=/dev/block/mmcblk0p25 of=/sdcard/boot.img

    这样 boot.img 就放到了sdcard,使用

    adb pull /sdcard/boot.img

    将 boot.img   recovery.img   system.img 分别 pull 到电脑中.

    三、修改镜像:

    以 system.img 为例,

    先用file命令查看system.img的文件类型

     

    file system.img

    显示如下:

     

     system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (needs journal recovery) (extents) (large files)

     

    说明是 ext4 filesystem data,可以采用挂载分区的方式来打开system.img文件:

     

    mount -t ext4 -o loop system.img  system_img    //此命令的意思将system.img镜像文件挂载到同级别下的system_img目录
    cd system_img    //此时这个目录里面就是system 镜像的内容,切到这个目录进行修改即可。比如更换apk,增加superSU 和 bin/su 以获得root等

    然后用 make_ext4fs 这个工具对 system_img 修改后的镜像文件进行打包:

    ./make_ext4fs -l 1536M -s -a system system_new.img system_img

    参数解析:1536M代表你要打包的system.img大小,这个值等于挂载前 的那个system.img 的大小,也可写成字节数,我的 system.img 是 1,610,612,736 字节,除以1024是 1572864 K ,再除以1024 是1536M 

    "-a system",是指这个img用于android系统,挂载点是/system,使用这个参数,make_ext4fs会根据private/android_filesystem_config.h里定义好的权限来给文件夹里的所有文件重新设置权限,如果你刷机以后发现有文件权限不对,可以手工修改android_filesystem_config.h来添加权限,重新编译make_ext4fs,也可以不使用 “-a system”参数,这样就会使用文件的默认权限。system_new.img 代表新生成的img, system_img 就是上面挂载后的目录.

    一般很多人认为这样生成的system_new.img就可以用了,其实不然.再次用file命令查看文件类型:

    file system_new.img

    显示如下:

    system_new.img: data

    跟之前的输出截然不同,这显然不是ext4文件类型。这里继续使用 simg2img 工具将其转换成真正的ext4文件:

    ./simg2img system_new.img system_out.img

    得到system_out.img,我们再“file system_out.img”看一下:

    system_out.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)。

    这就和最初的system.img一样的格式了。

    四、将修改后的镜像写入设备中:

    首先要解锁,不然受到保护,无法写入:

    adb reboot bootloader  //重启进入fastboot 
    fastboot oem unlock  //解锁BL

    此时有提示,按提示解锁后手机会重启,并清空所有内容!然后将新镜像 system_out.img 写入手机system分区:

    fastboot flash system system_out.img

    待所有进度完成,“fastboot reboot ” 重启手机即可。

     -------------------------------------------------------------------------------------

    附:文中提到的程序下载地址

    make_ext4fs:https://blog.cofface.com/archives/2681.html

    simg2img   :https://blog.csdn.net/u010285974/article/details/105268744

    参考资料:

    https://blog.csdn.net/zhangbijun1230/article/details/80864263

    https://www.52pojie.cn/thread-1123037-1-1.html

  • 相关阅读:
    centos 用户管理
    rsync 实验
    文件共享和传输
    PAT 1109 Group Photo
    PAT 1108 Finding Average
    PAT 1107 Social Clusters
    PAT 1106 Lowest Price in Supply Chain
    PAT 1105 Spiral Matrix
    PAT 1104 Sum of Number Segments
    PAT 1103 Integer Factorization
  • 原文地址:https://www.cnblogs.com/codex/p/13974904.html
Copyright © 2011-2022 走看看