android查看动态内存,基于LiME工具的Android手机动态内存提取

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)8270ad000e22209d7d3dd116bf997eb1.png

表 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值