徐霁的博客 您所在的位置:网站首页 修改bootimg 徐霁的博客

徐霁的博客

2023-03-13 11:16| 来源: 网络整理| 查看: 265

转自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文件,心里比较躁动,也就跟随别人的脚步,自己折腾一下,顺便做个记录了,方便以后查阅。

本文使用工具

工具.zip

修改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的解包结果参数:

[cpp] view plain copy

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文件的时候会用到,如下图:

[cpp] view plain copy

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两个文件:

[cpp] view plain copy

chmod +x ./tools/split-bootimg.pl  

./tools/split-bootimg.pl boot.img  

3.使用执行gzip命令解压boot.img-ramdisk.gz文件

继续执行命令:

[cpp] view plain copy

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文件

继续执行下面的命令:

[cpp] view plain copy

cd ../  

chmod +x ./tools/mkbootfs  

./tools/mkbootfs ./ramdisk | gzip > ramdisk.img  

6.使用工具mkbootimg对解包后的boot.img文件进行打包操作

根据步骤2中执行 ./tools/unpackbootimg -i boot.img  命令得到的各种结果参数信息,构建打包生成修改后的boot.img文件。

[cpp] view plain copy

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  

继续执行下面的命令:

[cpp] view plain copy

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手机上。

[cpp] view plain copy

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命令行环境下执行;

[cpp] view plain copy

adb shell  

cat default.prop  

以调试模式,使用命令:adb shell am start -D -n  / 启动发布版的应用Cydia Substrate,启动成功,结果如下:

[cpp] view plain copy

adb shell am start -D -n com.saurik.substrate/.SetupActivity  

OK,笔记做完了,心里的事情也就落下了。

整个过程用到的所有的命令整理:

[cpp] view plain copy

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下修改boot.img–改user模式为debug模式》 2017-12-30   HACK 评论 COPYRIGHT © xuji.pro | 浙ICP备15044531号-1 | 网站地图 | 浙公网安备 33011802000740号 登录用户分享×用微信扫描并分享记得帮我喂它点吃的 为你推荐 工具合集 html转js生成工具 js转html生成工具 js加密工具 正则表达式在线测试 域名whois查询 友情链接 我的CSDN博客 我的博客园博客 问答搜索 ivanjobs博客 命运 / 无尽长夜的博客 中国博客联盟 梦续代码 张戈博客 blueKiller的新浪博客 分类目录 .net开发 (4) 3dmax (3) ACM (12) android开发 (1) cocos2d开发 (15) HACK (10) IT信息 (27) linux (23) solr源码 (8) unity开发 (19) web开发 (53) 其他 (32) 开发点滴 (57) 搜索开发 (4) 日记 (4) 胡搞 (5) 英语 (1) 计算机技巧 (58) 读观有感 (18) 近期文章 【solr源码解析】Reindexing 【solr源码解析】Package Management 【solr源码解析】Making and Restoring Backups 【solr源码解析】solr9的主要改变 【solr源码解析】solr8的主要改变 近期评论大龙发表在《博主简介》alan发表在《用Hashcat每秒计算1.4亿个密码,破解隔壁WIFI密码》萱萱发表在《留言板》东逝水发表在《修改kibana源码使UTC偏移8小时》CrackQuan发表在《留言板》功能 注册 登录 文章RSS 评论RSS WordPress.org


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有