概述
1.2 绕过内核检查
Android手机系统内核会对模块进行检查, 故须绕过目标手机内核检查机制, 才能使用LiME模块提取动态内存。
1.2.1 vermagic检查机制
对于Linux2.6的内核, 内核检查机制主要是vermagic字符串匹配检查。Vermagic格式定义如下所示:
#define VERMAGIC_STRING
UTS_RELEASE “ “
MODULE_VERMAGIC_SMP
MODULE_VERMAGIC_PREEMPT
MODULE_VERMAGIC_MODULE_UNLOAD
MODULE_VERMAGIC_MODVERSIONS
MODULE_ARCH_VERMAGIC
Vermagic字符串可通过内核配置文件.config和Makefile中的宏定义进行设置, 各字段定义见表1。
表 1
Table 1
表 1(Table 1)
表 1 vermagic各字段定义Table 1 Definition of each section in vermagicVermagic字段对应配置文件中的宏定义备 注UTS_RELEASEKERNELRELEASE内核版本信息
MODULE_VERMAGIC_SMPCONFIG_SMP处理多处理器并发申请锁
MODULE_VERMAGIC_PREEMPTCONFIG_PREEMPT允许内核抢占
MODULE_VERMAGIC_MODULE_UNLOADCONFIG_MODULES_UNLOAD允许模块卸载
MODULE_VERMAGIC_MODVERSIONSCONFIG_MODVERSIONS模块版本的校验
MODULE_ARCH_VERMAGICCONFIG_ARCH_HAS_CPUFREQ模块使用的指令集架构版本表 1 vermagic各字段定义Table 1 Definition of each section in vermagic
绕过目标手机内核的vermagic检查, 可以从目标手机中找到现有的模块作参考, vermagic信息存放在内核模块中的.modinfo段中, 在Linux终端下输入命令modinfo < module> 可查看模块vermagic信息, 根据此信息再对内核配置文件作相应的修改, 使参考模块的vermagic信息与源码中的内核配置信息完全一致, 即可通过目标手机的vermagic检查机制。如下所示是HTC S710d中的一个模块信息:
# modinfo bcm4329.ko
filename: bcm4329.ko
license: GPL v2
alias: sdio:c*v02D0d0000*
depends:
vermagic: 2.6.35.10-g9dc9c50 preempt mod_unload ARMv7
parm: clockoverride:SDIO card clock override (int)
……
1.2.2 modversions检查机制
某些使用linux3.0及以上版本内核的手机, 具有vermagic和modversions两种检查机制。modversions是模块的版本校验机制。通过对模块的反汇编发现, 启用此校验的模块多了_versions段。通过分析源码目录下的kernel/module.c文件, 可知该检查机制在模块编译前通过宏定义CONFIG_MODVERSIONS启用, 并在模块的vermagic字符串中引入MODULE_VERMAGIC_MODVERSIONS字段。经分析, 当启用了modversions检查机制后, 在模块的_versions段数据中会出现module_layout字段值, 若模块中的module_layout值与目标手机系统中的module_layo-ut值不匹配, 就会出现拒绝装载的提示信息, 因此禁用CONFIG_MODVERSIONS可关闭内核中的模块版本校验机制。若在内核配置中禁用CONFIG_MODVERSIONS宏定义后, 则会改变内核模块的VERMAGIC_STRING值, 提取时会出现vermagic校验失败的错误。因此绕过手机中的module_layout校验可通过伪造vermagic中的MODULE_VERMAGIC_MODVERSIONS值。MODULE_VERMAGIC_MOD-VERSIONS值可在内核源码目录的include/linux/vermagic.h文件中伪造, 如下所示:
#ifdef CONFIG_MODVERSIONS
#define MODULE_VERMAGIC_MODVERSIONS “ mod-versions “
#else
#define MODULE_VERMAGIC_MODVERSIONS “ mod-versions “
#endif
最后
以上就是迷人狗为你收集整理的android查看动态内存,基于LiME工具的Android手机动态内存提取的全部内容,希望文章能够帮你解决android查看动态内存,基于LiME工具的Android手机动态内存提取所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复