先给论坛朋友个拜年!写篇文章,留点纪念。
偶尔得到一部二手GT-I9128V手机,正好练练刷机。
第一步:装各种驱动Samsung Kies可以搞定;
第二步:听人说改下boot.img里面的debuggable标志可以省去很多麻烦,那俺就试试。此处省略数千字,一把鼻涕一把泪。总之什么rom助手只会浪费你的时间,还是老老实实的到linux下去弄。我是下了不歪兄弟的工具直接放kali64下面跑的(注意mkbootfs运行需要装32位的库)。
具体命令直接复制过来了:
root@kali:~/Desktop# cd android
root@kali:~/Desktop/android# ./split-bootimg.pl boot.img
Page size: 4096 (0x00001000)
Kernel size: 4721360 (0x00480ad0)
Ramdisk size: 272649 (0x00042909)
Second size: 0 (0x00000000)
Board name:
Command line: console=ttyS0,115200n8 mem=478M@0xA2000000 mem=352M@0xC0000000 androidboot.console=ttyS0 vc-cma-mem=0/112M@0xCF000000
Writing boot.img-kernel ... complete.
Writing boot.img-ramdisk.gz ... complete.
root@kali:~/Desktop/android# cd out
root@kali:~/Desktop/android/out# mkdir ramdisk
root@kali:~/Desktop/android/out# cd ramdisk
root@kali:~/Desktop/android/out/ramdisk# gzip -dc ../boot.img-ramdisk.gz | cpio -i
1018 blocks
root@kali:~/Desktop/android/out/ramdisk# ls -l
total 284
drwxrwx--x 2 root root 4096 Feb 17 23:36 data
-rw-r--r-- 1 root root 196 Feb 17 23:36 default.prop
drwxr-xr-x 2 root root 4096 Feb 17 23:36 dev
-rw-r----- 1 root root 1051 Feb 17 23:36 fstab.capri_ss_baffin
-rwxr-x--- 1 root root 110028 Feb 17 23:36 init
-rwxr-x--- 1 root root 7730 Feb 17 23:36 init.bcm281x5.usb.rc
-rwxr-x--- 1 root root 3891 Feb 17 23:36 init.bt.rc
-rwxr-x--- 1 root root 26338 Feb 17 23:36 init.capri_ss_baffin.rc
-rwxr-x--- 1 root root 26338 Feb 17 23:36 init.capri_ss.rc
-rwxr-x--- 1 root root 2344 Feb 17 23:36 init.goldfish.rc
-rwxr-x--- 1 root root 4740 Feb 17 23:36 init.log.rc
-rwxr-x--- 1 root root 33917 Feb 17 23:36 init.rc
-rwxr-x--- 1 root root 1637 Feb 17 23:36 init.trace.rc
-rwxr-x--- 1 root root 3915 Feb 17 23:36 init.usb.rc
-rw-r--r-- 1 root root 2083 Feb 17 23:36 lpm.rc
drwxr-xr-x 2 root root 4096 Feb 17 23:36 proc
drwxr-x--- 2 root root 4096 Feb 17 23:36 sbin
drwxr-xr-x 2 root root 4096 Feb 17 23:36 sys
drwxr-xr-x 2 root root 4096 Feb 17 23:36 system
-rw-r--r-- 1 root root 1333 Feb 17 23:36 ueventd.capri_ss_baffin.rc
-rw-r--r-- 1 root root 1333 Feb 17 23:36 ueventd.capri_ss.rc
-rw-r--r-- 1 root root 272 Feb 17 23:36 ueventd.goldfish.rc
-rw-r--r-- 1 root root 3928 Feb 17 23:36 ueventd.rc
root@kali:~/Desktop/android/out/ramdisk# cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=0
persist.sys.usb.config=mtp,acm
persist.brcm.log=none
persist.brcm.cp_crash=none
persist.brcm.ap_crash=none
root@kali:~/Desktop/android/out/ramdisk# cd ../../
root@kali:~/Desktop/android# ls -l
total 4952
-rwxrw-rw- 1 root root 5001472 Jul 28 2014 boot.img
-rwxrw-rw- 1 root root 24302 Jan 28 04:14 mkbootfs
-rwxrw-rw- 1 root root 14472 Jan 28 04:36 mkbootimg
drwxr-xr-x 3 root root 4096 Feb 17 23:35 out
-rwxrw-rw- 1 root root 6121 Jan 27 22:26 split-bootimg.pl
-rwxrw-rw- 1 root root 10376 Jan 28 04:36 unpackbootimg
然后在kail里面用文本编辑工具把ro.debuggable=0该成1就可以开始打包了。
打包也不是你想的那么简单。主要是mkbootimg的命令参数,自己摸索出来的。我想没人会告诉你为什么你打的包就启动不起来。其实问题就在于这条命令的参数,看起来很复杂,但不用你操心。先执行个命令看看帮助:
root@kali:~/Desktop/android# ./mkbootimg --help
usage: mkbootimg
--kernel <filename>
--ramdisk <filename>
[ --second <2ndbootloader-filename> ]
[ --cmdline <kernel-commandline> ]
[ --board <boardname> ]
[ --base <address> ]
[ --pagesize <pagesize> ]
[ --kernel_offset <base offset> ]
[ --ramdisk_offset <base offset> ]
[ --second_offset <base offset> ]
[ --tags_offset <base offset> ]
[ --dt <filename> ]
-o|--output <filename>
看看原来的boot.img用到了什么参数,
root@kali:~/Desktop/android# ./unpackbootimg -i boot.img
BOARD_KERNEL_CMDLINE console=ttyS0,115200n8 mem=478M@0xA2000000 mem=352M@0xC0000000 androidboot.console=ttyS0 vc-cma-mem=0/112M@0xCF000000
BOARD_KERNEL_BASE 50000000
BOARD_NAME
BOARD_PAGE_SIZE 4096
BOARD_KERNEL_OFFSET 00008000
BOARD_RAMDISK_OFFSET 01000000
BOARD_TAGS_OFFSET 00000100
好了现在我们的参数就在上面了。开始打包:
root@kali:~/Desktop/android# ./mkbootfs
error: no directories to process?!
root@kali:~/Desktop/android# ./mkbootfs ./out/ramdisk | gzip > ramdisk.img.gz
root@kali:~/Desktop/android# cd out
root@kali:~/Desktop/android/out# ../mkbootimg --base 0x50000000 --pagesize 4096 --kernel_offset 0x00008000 --ramdisk_offset 0x01000000 --tags_offset 0x00000100 --cmdline 'console=ttyS0,115200n8 mem=478M@0xA2000000 mem=352M@0xC0000000 androidboot.console=ttyS0 vc-cma-mem=0/112M@0xCF000000' --kernel boot.img-kernel --ramdisk ramdisk.img.gz -o newboot.img
root@kali:~/Desktop/android/out# ls -l
-rw-r--r-- 1 root root 4721360 Feb 17 23:33 boot.img-kernel
-rw-r--r-- 1 root root 272649 Feb 17 23:33 boot.img-ramdisk.gz
-rw-r--r-- 1 root root 5001216 Feb 18 01:34 newboot.img
drwxr-xr-x 8 root root 4096 Feb 18 00:12 ramdisk
-rw-r--r-- 1 root root 272504 Feb 18 00:23 ramdisk.img.gz
将newboot.img拷贝到windows的桌面上改名为boot.img,然后用一款三星tar打包工具把它压缩成boot.tar,再打开Odin3 v3.09三星刷机工具,单击Bootloader按钮选中boot.tar就可以刷了,几秒钟后手机正常重启。
第三步就是root,尝试各种姿势,总得来说数字的最挫,下来是完美,最后还是root大师搞定的。这时候用adb shell可以连上去,命令如下:
C:\Users\root>adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
shell@android:/ $ su
su
root@android:/ # id
id
uid=0(root) gid=0(root)
root@android:/ # pwd
pwd
/
root@android:/ # cat default.prop
cat default.prop
#
# ADDITIONAL_DEFAULT_PROPERTIES
#
ro.secure=1
ro.allow.mock.location=0
ro.debuggable=1
persist.sys.usb.config=mtp,acm
persist.brcm.log=none
persist.brcm.cp_crash=none
persist.brcm.ap_crash=none
root@android:/ #
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)