我是靠谱客的博主 迷人狗,最近开发中收集的这篇文章主要介绍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

最后

以上就是迷人狗为你收集整理的android查看动态内存,基于LiME工具的Android手机动态内存提取的全部内容,希望文章能够帮你解决android查看动态内存,基于LiME工具的Android手机动态内存提取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部