修改内核打开系统调试标志

Posted by Jieming Gu on 2016-12-14

逆向时经常要对APP进行动态调试,一般情况下,Nexus 5运行在user模式下。为了方便对APP进行动态调试,修改系统镜像里的boot.img,将Nexus 5改为在debug模式下运行。

1.修改boot.img的实验条件

[手机型号]—Nexus 5

[操作环境]—Ubuntu 14.04

[手机系统]—Google官方适用于Nexus 5的Android 5.1.1镜像,镜像下载地址

工具点我下载,任何版本的系统都是相同的修改方法。

下载需要用到的工具,放到tools下。下载Nexus 5的官方镜像,解压提取到的boot.img放到跟tools同级的目录下。

除了从镜像中提取boot.img外,另一种方法是直接从手机中提取boot.img。

1

2

2.解包boot.img

赋予工具权限:

1
2
gjm1993@ubuntu:~/Desktop/1$ cd tools/
gjm1993@ubuntu:~/Desktop/1/tools$ chmod 777 *

获取boot.img解包的结果参数:

1
2
3
4
5
6
7
8
gjm1993@ubuntu:~/Desktop/1$ ./tools/unpackbootimg -i boot.img
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_NAME
BOARD_PAGE_SIZE 2048
BOARD_KERNEL_OFFSET 00008000
BOARD_RAMDISK_OFFSET 02900000
BOARD_TAGS_OFFSET 02700000

注意:记下boot.img解包的结果参数,后面重打包boot.img时会用到。

对boot.img进行有效的解包,得到boot.img-kernel和boot.img-ramdisk.gz:

1
gjm1993@ubuntu:~/Desktop/1$ ./tools/split-bootimg.pl boot.img

3.gzip解压boot.img-ramdisk.gz

解压boot.img-ramdisk.gz:

1
2
3
gjm1993@ubuntu:~/Desktop/1$ mkdir ramdisk
gjm1993@ubuntu:~/Desktop/1$ cd ramdisk
gjm1993@ubuntu:~/Desktop/1/ramdisk$ gzip -dc ../boot.img-ramdisk.gz | cpio -i

7

4.修改default.prop

在boot.img-ramdisk.gz解压后释放的ramdisk下,修改default.prop中的ro.debuggable=0ro.debuggable=1,使修改后的系统运行在debug模式下。为了打开内核root执行adb root,顺便修改default.prop中的ro.secure=1ro.secure=0,保存退出。

4

5.使用mkbootfs生成ramdisk.img

打包生成ramdisk.img:

1
gjm1993@ubuntu:~/Desktop/1$ ./tools/mkbootfs ./ramdisk | gzip > ramdisk.img

9

6.使用mkbootimg对解包后的boot.img重打包

根据步骤2中执行./tools/unpackbootimg -i boot.img 得到的结果参数,构建重打包boot.img的命令。

执行下面的命令:

1
gjm1993@ubuntu:~/Desktop/1$ ./tools/mkbootimg --base 0x00000000 --kernel_offset 0x00008000 --ramdisk_offset 0x02900000 --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

上面命令的的由来(构建命令时千万不能混入中文空格或中文符号):

5

顺利生成newboot.img:

8

7.将newboot.img刷入手机

重启手机进入fastboot模式:

1
adb reboot bootloader

将newboot.img刷入手机:

1
fastboot flash boot newboot.img

重启手机:

1
fastboot reboot

打开DDMS,效果如下:

6