0x00 前言
刚刚入坑安卓逆向,一边学习一边记下笔记
搜索了一下论坛中关于刷机的帖子很少,也是刚刚买了Nexus 5,正好来练习一下
之后这个笔记,我会陆陆续续更新
0x01 准备工作
1、下载镜像
6.0.1 (M4B30Z, Dec 2016)最后一个官方版本,Factory Image,点击底部接受条款才会显示下载链接
https://developers.google.com/android/images
下载直链
https://dl.google.com/dl/android/aosp/hammerhead-m4b30z-factory-625c027b.zip
2、下载 Android SDK
https://developer.android.com/studio/releases/platform-tools
3、安装 Google USB 驱动程序
https://developer.android.google.cn/studio/run/win-usb?hl=zh-cn
最新版本
https://dl.google.com/android/repository/usb_driver_r13-windows.zip?hl=zh-cn
下载完工具之后,请自行配置系统环境变量
0x02 开启永久全局调试模式
简介
一个进程是否可以调试是由进程启动时候的参数决定的:
1、普通的App进程如果是debug keystore默认是可以调试的,又或者在AndroidManifest里面指定debuggable为true也是可以调试的
2、对系统进程,我们只有采取系统级别的手段:让整个系统可以调试 - debug版或者编译参数debuggable为1的系统
3、解决这个办法很简单:使用模拟器(真机也行,限Nexus系列刷原生Android系统,把系统启动的debuggable参数修改为1)为了后面可以更好的调试APP,需要修改debuggable属性,如果没有刷入debuggable=1 属性,也可以使用Xposed模块来完成相同的功能
准备工作
下载 boot.img 解包/打包工具
Andorid unpack/repack boot/rececovery.img for Windows
https://github.com/cofface/android_bootimg
操作步骤
1、将 Nexus 5 image-hammerhead-m4b30z.zip 的系统镜像解压

2、在压缩文件中提取出 boot.img
3、并拷贝到 booting.exe 所在目录
4、打开 cmd 命令环境,执行 bootimg.exe --unpack-bootimg
命令对boot.img文件进行解压处理 (注意:存放的路径不要有中文,否则会报错)

5、找到 initrd
文件夹下找到 default.prop
文件,修改文件中的 ro.debuggable=0
改为 ro.debuggable=1
,记得保存

6、然后在cmd命令行执行 bootimg.exe --repack-bootimg
,解压的文件夹会重新打包为新的img文件

7、将 boot-new.img
改名为 boot.img
,放回原来的压缩包里,替换原压缩包的 boot.img 文件

0x03 刷入镜像
1、进入bootloader adb reboot-bootloader
或 关机状态下,电源键加音量下键不放,直到进入 fastboot mode 模式
2、不要直接执行刷机包中的 flash-all.bat
,会报错且会导致手机无限重启
3、使用我下面提供的代码来进行刷机,复制替换 flash-all.bat
中的内容即可
@ECHO OFF
fastboot erase cache
fastboot erase userdata
fastboot erase boot
fastboot erase cache
fastboot erase recovery
fastboot erase system
fastboot flash bootloader bootloader-hammerhead-hhz20h.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash radio radio-hammerhead-m8974a-2.0.50.2.30.img
fastboot reboot-bootloader
ping -n 5 127.0.0.1 >nul
fastboot flash recovery recovery.img
fastboot flash boot bootnew.img
fastboot flash system system.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
echo Press any key to exit...
pause >nul
exit
注意:脚本刷机还是会报错,哪一个步骤报错,就复制命令手动执行一次
0x04 Root
准备工作
注意:Root 包的 boot.img 默认是没有开启全局调试模式的;需要解包之后修改文件再进行打包刷入
1、进入开发者模式,打开USB调试
2、下载 Root 包
https://download.chainfire.eu/363/CF-Root/CF-Auto-Root/CF-Auto-Root-hammerhead-hammerhead-nexus5.zip
3、解压下载文件
# Window下可以直接执行root-windows.bat
# Linux需要手动执行
cd tools
fastboot oem unlock 1>NUL 2>NUL
fastboot oem unlock 1>NUL 2>NUL
fastboot oem unlock-go 1>NUL 2>NUL
fastboot oem unlock-go 1>NUL 2>NUL
fastboot flashing unlock 1>NUL 2>NUL
fastboot flashing unlock 1>NUL 2>NUL
fastboot boot ../image/boot.img
机器重启后,Nexus5 会获得Root权限,并自动安装 SuperSU 权限管理软件
打开DDMS验证

比较可惜,面具修补的 boot.img 暂时无法成功刷入,会导致手机无限重启,等之后解决了再修改笔记