其他
市面上大多数加固厂商、或者大型App都会或多或少对Xposed框架执行基于特征的检测,而突破这些检测的基本思路就是找到检测的地方,不管是在Java层还是Native层,然后通过hook的方式修改返回结果,或者硬编码、直接置零返回通过等方式来通过校验。但是,且不论直接修改二进制能不能通过完整性校验,大多数工程师或许连在哪里进行的校验都很难找到,如果加固厂商再使用Ollvm这样的混淆工具来一轮混淆,那几乎是欲哭无泪,无力回天。其实,跟加固厂商在特征检测层面斗智斗勇,是很不明智的选择,敌在暗、我在明,寻找检测宛如大海捞针;不如从源头消灭特征,任你万般检测,我自笑傲江湖。所以我们回到正题,本篇首先会介绍官方原版XPOSED的编译流程,刷入手机、安装插件、开发插件都能正常使用;然后在此基础之上,进行源码的一些魔改,修改之后再编译刷入手机,最后讲根据新源码编译出来的API进行自己的插件开发流程,实现从源码的高维来bypass低维框架检测的目的。在前文中,我们学习了如何编译aosp6.0.0r1,从安卓源码编译系统是编译XPOSED框架的基础。本篇编译的对象是aosp7.1.2_r8,编译的流程与aosp6.0.0r1完全相同,唯一的区别就是在安装openjdk的时候,安装的是版本8,仅此而已;编译aosp7.1.2r8的过程不再赘述。aosp7.1.2_r8的源码是与aosp6.0.0_r1在一起的,都在Github主页:下方的百度云盘中的aosp_pure_source_code目录中。在阅读本文之前,还有一篇《XPOSED魔改一:获取特征》需要先看下,介绍了很多前置知识,比如为什么要选择aosp7.1.2r8这个版本,因为这个版本是XPOSED正式版支持到的最后一个版本,并且也是其开源的最后的一个版本。还有诸多XPOSED的检测点和检测原理和代码,也进行了详细的介绍,理解这些内容,对理解后续操作有很大的帮助。本文所涉及的环境、实验数据结果及代码资料等都在我的Github:https://github.com/r0ysue/AndroidSecurityStudy上,欢迎大家取用和star,蟹蟹。接下来撸起袖子开干。编译官方原版XPOSED首先来看下源码的基本结构和框架。为了防止Xposed框架万一更新,笔者也将官网上的五大项目的源码直接各Download