• Windows下Nexus 5 改user模式为debug模式


    博客链接:http://blog.csdn.net/qq1084283172/article/details/52337241

    在学习Android软件安全的过程中,经常要用到Android的动态调试。但是呢,一般的Android应用在发布的时候都是发布版的不能直接被调试,为了能使Android应用能够支持调试就需要对Android应用进行解包以及打包加android:debuggable="true"属性处理,比较烦的是有时候一些Android应用加了对抗的处理,并不能顺利打包处理,这就纠结了。


    @根据android的官方文档,如果要调试一个App里面的dex代码,必须满足以下两个条件中的任何一个:
    1.App的AndroidManifest.xm中Application标签必选包含属性android:debuggable="true"
    2./default.propro.debuggable的值为1。


    由于正常的软件发布时都不会把android:debuggable设置为true,所以要达成条件1)需要对app进行重新打包,这不仅每次分析一个App都重复操作,而且很多软件会对自身进行校验,重打包后执行会被检测到,所以想办法满足第2)个条件是个一劳永逸的办法,我实际使用的方法就是满足第二个条件。由于default.prop是保存在boot.img的ramdisk中,这部分每次重新启动都会重新从rom中加载,所以要到目的必须修改boot.img中的ramdisk并重新刷到设备中。我测试使用的设备为Nexus 5,修改步骤如下:


    a)  从Google官方网站下载到boot.img,
    b)  使用工具(abootimg,gunzip, cpio)把boot.img完全解开,获取到default.prop
    c)  修改default.prop
    d)  把修改后的文件重新打包成boot_new.img
    e)  使用fastboot工具把boot_new.img刷入设备(fastboot flash boot boot_new.img)


    根据谷歌Andorid的官方文档,既然条件1有时候无法满足,那么我们就可以从满足条件2入手,让Android系统直接运行在debug模式下,这样运行在该系统环境下的Android应用都能够支持动态调试了。一般手机的Android 系统是运行在user模式下的,不支持直接动态调试,因此需要对Android系统的 boot.img文件进行修改,前面的博客中已经记录了一篇别人提供的修改方法,一直没时间尝试,下面我就按照这个方法操作一遍,顺便做个笔记,方便别人也方便我自己(http://blog.csdn.net/qq1084283172/article/details/47045385)。


    下面就在Windows平台下使用工具bootimg.exe对Android系统的boot.img文件进行解包和打包操作,将Nexus 5手机 改user模式为debug模式,此操作涉及到的Nexus 5系统版本为Android4.4.4,下载地址为:https://dl.google.com/dl/android/aosp/hammerhead-ktu84p-factory-35ea0277.tgz


    解包和打包boot.img文件使用的工具是bootimg.exe,该工具最新的版本支持Android 2.3~5.0的版本,具体的功能如下:


    解包命令:bootimg.exe --unpack-bootimg      

    打包命令:bootimg.exe --repack-bootimg   

    recovery/boot文件放到bootimg.exe同一级目录即可,且bootimg.exe存放路径不要存在中文

    更多命令:


    --add-head
    --cml
    --cpio-list
    --czlib
    --dml
    --dzlib
    --remove-head
    --repack-565
    --repack-bootimg
    --repack-ramdisk
    --repack-rle
    --repack-zte-bin
    --rml
    --to-ext4
    --to-img
    --uml
    --unpack-565
    --unpack-bootimg
    --unpack-qsb
    --unpack-ramdisk
    --unpack-rle
    --unpack-updata
    --unpack-yafffs
    --unpack-yaffs
    --unpack-yaffs2
    --unpack-zte-bin




    工具下载链接: https://github.com/cofface/android_bootimg 

    上面这段文字来自看雪http://bbs.pediy.com/showthread.php?t=198328,感谢工具的作者cofface,为我们提供了这么好的工具。


    1.将Nexus 5的谷歌官方Android 4.4.4的系统镜像进行解压,然后找文件image-hammerhead-ktu84p.zip,对其进行解压找到boot.img文件。将下载的bootimg.exe文件拷贝到boot.img文件所在的目录。在Windows的cmd命令环境下执行:bootimg.exe –unpack-bootimg  命令对boot.img文件进行解压处理,如下图:




    2.在cmd环境下执行:bootimg.exe --unpack-bootimg  命令成功以后,单独找到 initrd 目录,进入initrd 目录找到 default.prop文件 以文本方式打开,修改 default.prop文件中的 ro.debuggable=0  这一行为 ro.debuggable=1 ,然后保存,如下图:






    3.修改boot.img中 default.prop文件 成功以后,对boot.img进行打包处理,在cmd环境下接着执行命令:bootimg.exe --repack-bootimg 对boot.img文件进行打包,如下图:




    4.对boot.img文件的修改已经完成,后面的步骤就是将boot-old.img文件、bootimg.exe文件暂时剪切到别的目录以防修改boot.img文件失败用以恢复,将boot-new.img文件改名为boot.img。关闭Nexus 5手机然后重启,同时按下 音量减+电源键 让Nexus 5手机进入Fastboot Mode模式,然后使用下面的刷机脚本 flash-all_no_data.bat 将修改的boot.img文件刷入到Nexus 5手机上。刷机脚本flash-all_no_data.bat 的文件内容为:

    PATH=%PATH%;"%SYSTEMROOT%System32"
    fastboot flash bootloader bootloader-hammerhead-hhz11k.img
    fastboot reboot-bootloader
    ping -n 5 127.0.0.1 >nul
    fastboot flash radio radio-hammerhead-m8974a-2.0.50.1.16.img
    fastboot reboot-bootloader
    ping -n 5 127.0.0.1 >nul
    
    fastboot flash recovery recovery.img
    fastboot reboot-bootloader
    ping -n 5 127.0.0.1 >nul
    fastboot flash boot boot.img
    fastboot reboot-bootloader
    ping -n 5 127.0.0.1 >nul
    fastboot flash system system.img
    fastboot reboot-bootloader
    ping -n 5 127.0.0.1 >nul
    fastboot flash cache cache.img
    
    fastboot flash userdata userdata.img
    
    echo 刷机成功,按任意键重启手机...
    pause >nul
    fastboot reboot
    exit




    5.OK,从下面的观察发现将Nexus 5手机从user模式改为debug模式是成功的。




    6.进步测试Nexus 5的Android 4.4.4的系统是否修改user模式为debug模式成功,使用命令:adb shell am start -D -n  <包名>/<Activity名>  以调试模式启动正常的Android应用(非debug模式发布的android应用),以App应用com.saurik.substrate为例,如下图,很明显修改成功。




    windows下解包/打包boot/recovery.img的工具bootimg.exe(附带刷机脚本 flash-all_no_data.bat ),且支持自动解包/打包dt.img的下载地址:http://download.csdn.net/detail/qq1084283172/9614884


    感谢链接

    http://bbs.pediy.com/showthread.php?t=198328

    http://bbs.pediy.com/showthread.php?t=197334

    http://bbs.pediy.com/showthread.php?p=1291716

    http://blog.csdn.net/qq1084283172/article/details/52334452

    http://blog.csdn.net/qq1084283172/article/details/47045385



  • 相关阅读:
    Yii2框架bootstrap样式理解
    spring 配置bean的方法及依赖注入发方式
    C#深拷贝
    【麦子学院】Linux cmd命令大全
    JEECG中的validform验证ajaxurl的使用方法
    ORACLE 如何查询被锁定表及如何解锁释放session
    获取请求真实ip
    jsp值传到后台Struts2中的action三种方法
    ajax 二级联动与springmvc 交互
    SpringMVC返回json数据的三种方式
  • 原文地址:https://www.cnblogs.com/csnd/p/11800675.html
Copyright © 2020-2023  润新知