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,它主要是为了执行脚本而出现,而不是交互,它 ...
随机推荐
- 【HTB系列】Beep
出品|MS08067实验室(www.ms08067.com) 这次挑战的是 HTB 的第5台靶机:Beep,评分很高,难度中等 靶机描述 Beep 运行了大量的服务,这对正确发掘入口点有一定的挑战,由 ...
- HDOJ-6645(简单题+贪心+树)
Stay Real HDOJ-6645 由小根堆的性质可以知道,当前最大的值就在叶节点上面,所以只需要排序后依次取就可以了. #include<iostream> #include< ...
- rsyslog日志总结
rsyslog日志总结 一 rsyslog介绍 syslogd被rsyslog取代 将日志写入数据库 可以利用模块和插件控制输入输出 rsyslog程序管理本地和远程日志 安装软件 根据需求修改配置文 ...
- External Libraries中没有Maven的jar包的原因(已解决)
**深坑!** ## External Libraries中没有Maven的jar包的原因(已解决) 2021年3月1日 --- 搭建一个新项目 IDEA 从 Git 上拉 拉去Maven项目然后 m ...
- IntelliJ IDEA报错总结
不能运行java程序 可能是没有选择运行环境点击 edit Configurations在Use classpath of module 中选择本项目的运行环境 Run报错: Error:java: ...
- 基于autofac的属性注入
基于autofac的属性注入 什么是属性注入 在了解属性注入之前,要先了解一下DI(Dependency Injection),即依赖注入.在ASP.NET Core里自带了一个IOC容器,而且程序支 ...
- css导航条的设计
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...
- Java 树结构实际应用 四(平衡二叉树/AVL树)
平衡二叉树(AVL 树) 1 看一个案例(说明二叉排序树可能的问题) 给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在. 左边 BST 存在的问题分析: ...
- CodeForces - 1360C
C. Similar Pairs time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- java例题_29 二维数组问题,并输出对角线之和
1 /*29 [程序 29 求矩阵对角线之和] 2 题目:求一个 3*3 矩阵对角线元素之和 3 程序分析:利用双重 for 循环控制输入二维数组,再将 a[i][i]累加后输出. 4 */ 5 6 ...