Android 直接通过boot.img 查看内核版本
场景:某手机需要刷 指定内核版本的 rom, 而且又搜不到太多关于手机的信息, 只能刷官方系统 大海捞针 的时候!!!Boot.img 结构体1./* 2. ** +-----------------+3. ** | boot header | 1 page 4. ** +-----------------+ 5. ** | kernel | n pages 6. ** +-----------------+ 7. ** | ramdisk | m pages 8. ** +-----------------+ 9. ** | second stage | o pages 10. ** +-----------------+ 11. ** 12. ** n = (kernel_size + page_size - 1) / page_size 13. ** m = (ramdisk_size + page_size - 1) / page_size 14. ** o = (second_size + page_size - 1) / page_size 15. **/ 1. struct boot_img_hdr2. {3. unsigned char magic;4. 5. unsigned kernel_size;/* size in bytes */6. unsigned kernel_addr;/* physical load addr */7. 8. unsigned ramdisk_size; /* size in bytes */9. unsigned ramdisk_addr; /* physical load addr */10. 11. unsigned second_size;/* size in bytes */12. unsigned second_addr;/* physical load addr */13. 14. unsigned tags_addr; /* physical addr for kernel tags */15. unsigned page_size; /* flash page size we assume */16. unsigned unused; /* future expansion: should be 0 */17. 18. unsigned char name; /* asciiz product name */19. 20. unsigned char cmdline;21. 22. unsigned id; /* timestamp / checksum / sha1 / etc */23. }; 从上图的截图中可以分析Kernel_size = 0x30E520Page_size=0x1000Page_size 就是 Kernel_offset 复制出 kernel-zimge ,看过我的那篇<<boot-kernel Patch开启内核后门>> 的文章就知道一般的 zimge 是采用 gzip 压缩算法的,所以我们这里可直接在kernel-zimge 中搜 索16进制 “1F8B0800”定位到 要解压的数据部分, 将起始地址 0x3FE9到文件末尾都复制出来另存为 zimge.gz 文件,然后使用gunzip 解压就可以得到zimge 文件, 这个 zimge 就是最终的 kernel 文件了,(这里也可以直接使用7z 解压) 然后我们直接搜索字符串 “PREEMPT” 可快速 定位到 当前 内核版本
谢谢空道大师的指导和教育 谢谢分享,下载收藏 长知识了,收藏一个,谢谢楼主分享. 膜拜空道 大婶{:soso_e128:} 空大能搞个新版的爱奇艺吗 目前vip版本都不好用了 感谢大师,期待精彩不断! 感谢空道大神分享 谢谢分享,又長見識了,下载收藏 支持一下啊~~~~~~~~~~~~~~`
页:
[1]
2