• 破解某基于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

  • 相关阅读:
    高阶函数
    Vue-cli 3.0 搭建,以及vuex、axios、使用
    Git --- 基本操作以及Git 特殊命令,公司常用命令
    Git 剖析,以及Git相关操作
    git ssh key 生成
    React.Fragment 组件没有必要的多层嵌套,外层不需要过多嵌套
    spring cloud连载第三篇之Spring Cloud Netflix
    spring cloud连载第二篇之Spring Cloud Config
    AbstractQueuedSynchronizer
    Timer定时器
  • 原文地址:https://www.cnblogs.com/codex/p/13974904.html
Copyright © 2020-2023  润新知