Ubuntu下修改Nexus 5的boot.img--改user模式为debug模式
博客地址:http://blog.csdn.net/qq1084283172/article/details/52422205
在学习Android逆向的时候,总会用到Android的调试模式。一般情况下,Nexus 5手机上的Android系统是运行在user模式下的,为了方便对Android应用程序进行动态调试,因此采取一劳永逸的方法,修改手机系统ROM里的boot.img文件,将Nexus 5手机里的系统由user模式修改为debug模式。虽然前面的文章中,已经记录了在Windows下修改Nexus
5手机由user模式为debug模式的方法。但是呢,看了下网上的博客,发现很多的同学都在Ubuntu下修改手机的boot.img文件,心里比较躁动,也就跟随别人的脚步,自己折腾一下,顺便做个记录了,方便以后查阅。
修改boot.img文件的折腾条件:
[手机型号]----谷歌手机 Nexus 5
[操作环境]----Linux系统 Ubuntu 15.4(x64 dvd版)
[手机系统]----谷歌官方适用于Nexus 5手机的Android 5.0版本,下载地址:https://dl.google.com/dl/android/aosp/hammerhead-lrx21o-factory-01315e08.tgz
Ubuntu系统和Java环境的配置是进行修改boot.img文件操作的一些基本条件,这里就不介绍了,需要的网上查一查。下面的操作就以谷歌Nexus 5手机配备谷歌官方的Android 5.0的ROM为例,进行修改boot.img文件的操作。
1.修改boot.img文件工具和boot.img文件文件的准备
从上面提供的boot.img的打包解包工具的下载地址下载需要的工具,放到boot_img_tool文件夹下的tools文件目录里,从上面提供下载的Nexus 5的官方Android 5.0的Rom里解压提取到boot.img文件直接放到boot_img_tool文件夹下,如图:
正如作者http://bbs.pediy.com/showthread.php?t=197334所言,确实网上很多所谓的boot.img的解包打包工具极其不靠谱,这位作者的工具还是靠谱的。在写这篇博文的时候,尝试了几个工具修改boot.img都不成功,将修改后的boot.img刷入Nexus
5手机以后,手机重启卡在了启动界面不能动弹。
2.使用工具 unpackbootimg 解包boot.img文件
A.执行命令,获取boot.img的解包结果参数:
cd /home/android/androidfile/boot_img_tool/
chmod +x ./tools/unpackbootimg
./tools/unpackbootimg -i boot.img
在使用 unpackbootimg命令 解包boot.img文件时,遇到提示“bash: ./tools/unpackbootimg:
权限不够”错误,后来发现需要给工具unpackbootimg文件添加执行权限就可以了。注意:在boot.img文件解包完成以后的结果参数要记下来,后面打包boot.img文件的时候会用到,如下图:
android@ubuntu:~/androidfile/boot_img_tool$ ./tools/unpackbootimg -i boot.img
Android magic found at: 0
BOARD_KERNEL_CMDLINE console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1
BOARD_KERNEL_BASE 00000000
BOARD_RAMDISK_OFFSET 02900000
BOARD_SECOND_OFFSET 00f00000
BOARD_TAGS_OFFSET 02700000
BOARD_PAGE_SIZE 2048
BOARD_SECOND_SIZE 0
BOARD_DT_SIZE 0
B.执行上面的命令只是为了获取解包后的结果参数,因为在后面的boot.img打包步骤中会用到这些结果参数并且一般的情况下手机设备的解包结果参数是不同的,具体的要按照实际的手机设备的解包结果参数为准,不能一概而论。获取到boot.img的解包结果参数以后,将解压释放得到的上面图中的标出的文件全部删除
执行下面的命令,对boot.img文件进行有效的解包,得到boot.img-kernel和boot.img-ramdisk.gz两个文件:
chmod +x ./tools/split-bootimg.pl
./tools/split-bootimg.pl boot.img
3.使用执行gzip命令解压boot.img-ramdisk.gz文件
继续执行命令:
mkdir ramdisk
cd ramdisk
gzip -dc ../boot.img-ramdisk.gz | cpio -i
创建文件ramdisk然后进入文件ramdisk,执行 gzip -dc ../boot.img-ramdisk.gz | cpio -i命令解压boot.img-ramdisk.gz文件,如下图:
4.修改 default.prop文件中的 ro.debuggable=1
在boot.img-ramdisk.gz解压后释放文件的ramdisk文件下,找 default.prop文件 以文本方式打开,修改 default.prop文件中的
ro.debuggable=0 这一行为ro.debuggable=1 ,就可以使修改后的系统运行在debug模式下;这里为了打开
内核root 执行adb root 命令,顺便修改 default.prop文件中的 ro.secure=1 这一行为ro.secure=0 然后保存退出。如下图:
5.使用工具mkbootfs 生成ramdisk.img文件
继续执行下面的命令:
cd ../
chmod +x ./tools/mkbootfs
./tools/mkbootfs ./ramdisk | gzip > ramdisk.img
6.使用工具mkbootimg对解包后的boot.img文件进行打包操作
根据步骤2中执行 ./tools/unpackbootimg -i boot.img 命令得到的各种结果参数信息,构建打包生成修改后的boot.img文件。
android@ubuntu:~/androidfile/boot_img_tool$ ./tools/unpackbootimg -i boot.img
Android magic found at: 0
BOARD_KERNEL_CMDLINE console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1
BOARD_KERNEL_BASE 00000000
BOARD_RAMDISK_OFFSET 02900000
BOARD_SECOND_OFFSET 00f00000
BOARD_TAGS_OFFSET 02700000
BOARD_PAGE_SIZE 2048
BOARD_SECOND_SIZE 0
BOARD_DT_SIZE 0
继续执行下面的命令:
chmod +x ./tools/mkbootimg
./tools/mkbootimg --base 0x00000000 --ramdisk_offset 0x02900000 --second_offset 0x00F00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel boot.img-kernel --ramdisk ramdisk.img -o newboot.img
上面的命令的的由来:
执行命令,顺利生成的 newboot.img文件:
7.Nexus 5 手机的Android 5.0版本系统的boot.img文件修改成功了。
在Windows系统环境将在Ubuntu下修改原boot.img文件成功生成的newboot.img文件,重新刷到Nexus 5手机上。PC端通过USB数据线连接到Nexus 5手机上,在PC端的cmd命令下执行 adb
reboot-bootloader 命令手机重启或者重启手机同时按【音量下键+电源键】进入 Fastboot
Mode模式,执行下面的命令脚本flash_no_data_debug.bat将修改后的.img文件newboot.img刷到Nexus
5手机上。
PATH=%PATH%;"%SYSTEMROOT%\System32"
fastboot flash bootloader bootloader-hammerhead-hhz12d.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.21.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 newboot.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
8.测试手机是否刷机成功并正常工作在debug模式下
很幸运刷机成功,手机开到开发者模式,USB数据线连接到Window电脑端正常,cmd命令行环境下执行;
adb shell
cat default.prop
以调试模式,使用命令:adb shell am start -D -n <包名>/<Activity名> 启动发布版的应用Cydia
Substrate,启动成功,结果如下:
adb shell am start -D -n com.saurik.substrate/.SetupActivity
OK,笔记做完了,心里的事情也就落下了。
整个过程用到的所有的命令整理:
cd /home/android/androidfile/boot_img_tool/
chmod +x ./tools/unpackbootimg
./tools/unpackbootimg -i boot.img
chmod +x ./tools/split-bootimg.pl
./tools/split-bootimg.pl boot.img
mkdir ramdisk
cd ramdisk
gzip -dc ../boot.img-ramdisk.gz | cpio -i
cd ../
chmod +x ./tools/mkbootfs
./tools/mkbootfs ./ramdisk | gzip > ramdisk.img
chmod +x ./tools/mkbootimg
./tools/mkbootimg --base 0x00000000 --ramdisk_offset 0x02900000 --second_offset 0x00F00000 --tags_offset 0x02700000 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' --kernel boot.img-kernel --ramdisk ramdisk.img -o newboot.img
adb shell
cat default.prop
adb shell am start -D -n com.saurik.substrate/.SetupActivity
整个过程用到的工具的下载地址:http://download.csdn.net/detail/qq1084283172/9631049。
感谢连接:
http://bbs.pediy.com/showthread.php?t=197334 (主要的参考)
http://bbs.gfan.com/android-7550091-1-1.html
http://www.miui.com/thread-1264062-1-1.html
http://bbs.gfan.com/android-3314039-1-1.html
http://blog.csdn.net/qq1084283172/article/details/52337241
Ubuntu下修改Nexus 5的boot.img--改user模式为debug模式的更多相关文章
- ubuntu下使用Nexus搭建Maven私服
ubuntu下使用Nexus搭建Maven私服 1.私服简介: 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服, ...
- ubuntu下修改mysql默认字符编码出现的Job failed to start解决办法
ubuntu下修改mysql默认字符编码出现的Job failed to start解决办法 前几天卸掉了用了好多年的Windows,安装了Ubuntu12.04,就开始各种搭环境.今天装好了MySQ ...
- ubuntu 下修改host文件
原文地址:http://www.cnblogs.com/kingcat/archive/2012/02/23/2364509.html 有些时候,我们需要让某些域名指向本地,来实现调试,下面介绍下ub ...
- ubuntu 下修改文件访问权限chmod 777 -R *血的教训!没事别乱开权限!用谁开谁的就行。。。最后不要用这个命令,文件操作全部改用终端
本文转自: 个人建议 Ubuntu下修改目录权限命令如下:chmod 600 name (只有所有者有读和写的权限)chmod 644 name (所有者有读和写的权限,组用户只有读的权限)chmod ...
- Windows下Nexus 5 改user模式为debug模式
博客链接:http://blog.csdn.net/qq1084283172/article/details/52337241 在学习Android软件安全的过程中,经常要用到Android的动态调试 ...
- [转载]--Ubuntu下修改DNS重启也能用的方法
安装好Ubuntu之后设置了静态IP地址,再重启后就无法解析域名.想重新设置一下DNS,打开/etc/resolv.conf cat /etc/resolv.conf# Dynamic resolv. ...
- ubuntu下修改ip重启系统ip不变
今天同学问我ubuntu下ip如何写死,我想起这周在公司我们队长也问过我,我就在这把我实验的方法说一下. 打开终端: sudo vim /etc/network/interfaces 然后按如下修改: ...
- Ubuntu下修改为永久DNS的方法
安装好Ubuntu之后设置了静态IP地址,再重启后就无法解析域名.想重新设置一下DNS,打开/etc/resolv.conf cat /etc/resolv.conf # Dynamic resolv ...
- Ubuntu下修改缺省dash shell为bash shell
Debian和Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. 这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它 ...
随机推荐
- 基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...
- Springboot的监控
目录 Micrometer 计数器 仪表 摘要 计时器 Prometheus grafana 保存后我们就能在dashboard上看得我我们的监控指标了参考 Spring Boot有个子项目Sprin ...
- Spring 的 IOC
1. 什么是IOC IOC的好处 IOC的思想是将需要的对象通过外部传入进来,而不是自己创建.这样的设计方式更加灵活.在Spring中对象之间的依赖关系也是由IOC容器来维护(类与类之间的依赖关系,使 ...
- linux下redis安装运行教程——redis系列
天没降大任于我,照样苦我心智,劳我筋骨. 安装运行的过程 由于官网太慢,csdn里的资源又要钱,所以呢,只能使用我自己本地以前下载的陈年..哦不,3.xredis安装包 资源已经放到百度云,需要的可以 ...
- css3中的渐变效果
大家好,这里是demo软件园,今天为大家分享的是css3中的渐变效果. css3中的渐变需要注意的是渐变的是图片而不是颜色,而渐变又分为两种:线性渐变与径向渐变,今天我们重点介绍的是线性渐变. 1.线 ...
- zxy的猪错误
我觉得这篇文章还是要重构啊,如果哪道题调的久了就标上日期放上来吧. 2021/3/10 题目:玩游戏 \(\tt memset\) 不能直接清空一个指针指向的数组,因为不知道 \(\tt size\) ...
- POJ_1227 Jack Straws 【二维平面判两线段相交】
一 题面 POJ1127 二 分析 在平面几何中,判断两线段相交的方法一般是使用跨立实验.但是这题考虑了非严格相交,即如何两个线段刚好端点相交则也是相交的,所以还需要使用快速排斥实验. 这里参考并引用 ...
- P1090 合并果子(JAVA语言)
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- P1328_生活大爆炸版石头剪刀布(JAVA语言)
题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 升级版游戏在传统的 ...
- Git 上传项目到 Github
Git 上传项目到 Github 该文章主要讲解Git 上传项目到 Github,Gitee同理 配置Git 下载.安装Git 下载后一路(傻瓜式安装)直接安装即可 如果第一次使用git的话,需要设置 ...