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,它主要是为了执行脚本而出现,而不是交互,它 ...
随机推荐
- Oracle VM VirtualBox的下载和安装
软件介绍 VirtualBox 是一款开源虚拟机软件,由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 ...
- 12. Vue搭建本地服务
一. 搭建本地服务器 本地服务可以提高开发效率. webpack不需要每次都打包, 就可以看到修改后的效果. 本地服务器基于node.js搭建, 内部使用二十express框架. 可以实现让浏览器自动 ...
- locust工具使用详解
今年负责部门的人员培养工作,最近在部门内部分享和讲解了locust这个工具,今天再博客园记录下培训细节 一.简介 1.优势 locust是python语言开发的一款的开源的的性能测试框架,他比jmet ...
- Web全段重点整理
1. HTML+CSS 1.1. HTML+CssDay01 1.1.1. 常用普通标签 常用标签如下 div span a p ul+li h1-h6 img 代码示例: <img src= ...
- vue 页面生成图片保存
需求:将页面中的元素转成图片,支持保存或下载.要求下载的图片包含页面背景,头像,用户名,文本为"我的邀请码"和个人二维码. 实现:将页面绘制到canvas中,生成base64图片链 ...
- pyspider的环境安装
第一:确认自己的Python版本3.6.x(因该版本与pyspider较为适应,其他版本易出错) 如果不是3.6版本的,且想将版本替换成3.6版本的有以下处理方法: 1.再装一个3.6版本python ...
- golang io操作之写篇
/** * @author livalon * @data 2018/9/4 15:11 */ package main import ( "os" "fmt" ...
- 程序员必须搞懂的20个Java类库和API
本文总结了日志.JSON解析.单测.XML解析.字节码处理.数据库连接池.集合类.邮件.加密.嵌入式SQL数据库.JDBC故障诊断以及序列化等20个方面的常用类库.都是你日常开发经常可能要用到的,现在 ...
- Python接口自动化实现
一.代码结构: 二.接口签名实现: 1. 设所有发送的数据集合为M,将集合M内非空参数值的参数按照[参数名+"="+参数值]的ASCII码从小到大排序(字典序),然后按拼接key1 ...
- 一键安装KMS服务
本文转载于 秋水逸冰 » 一键安装 KMS 服务脚本 KMS,是 Key Management System 的缩写,也就是密钥管理系统.这里所说的 KMS,毋庸置疑就是用来激活 VOL 版本的 Wi ...