阿里系产品Xposed Hook检测机制原理分析

导语:

在逆向分析android App过程中,我们时常用的用的Java层hook框架就是Xposed Hook框架了。一些应用程序厂商为了保护自家android App不被Xposed Hook框架给hook。于是想尽各种方法检测自己产品是否被Xposed Hook给Hook。笔者最近逆向分析阿里系的产品,发现阿里系的产品能够检测自否给Xposed Hook了。本文就带领给位一起看看官阿里系产品是如何做的这一点的,本文就选择阿里的支付宝作为我们分析对象。

检测现象:

  1. 编写一个简单的支付宝的Xposed hook 模块, 模块代码如下:

这里写图片描述

2.安装XPosed hook mo模块,重启设备,打开支付宝,就会看到如下一个对话框:非法操作的,你的手机不安全。这说明支付宝检测自己被Hook了。

这里写图片描述

分析过程:

0.分析工具和分析对象

样本:Alipay_wap_main_10.0.18

工具:AndroidKiller, JEB2.2.7

源码:XPosed 框架源码

  1. 为了快速找到代码Xposed的检测代码位置,我们就不从对话框作为分析入口啦,我们直接使用androidKiller打开文件Alipay_wap_main_10.0.18.apk, 然后在工程中搜索xposed相关的关键字,例如:xposed

这里写图片描述

根据搜索结果,我们找到看了两个security相关的类。我们使用JEB工具对这两个类进行分析,我们暂且分析CheckInject类。

这里写图片描述

我们看到这里获得通过反射获得一个类de.robv.android.xposed.XposedHelpers 的一个对象,于是我们可以确认发现代码就这里。

  1. 由于Smali代码是经过混淆的代码,不便于读者阅读,于是笔者将代码整理如下:

这里写图片描述

通过反射获取de.robv.android.xposed.XposedHelpers类的一个对象obXposedHelper,然后调用CheckKeywordInFiled 检测obXposedHelper成员fieldCache,methodCache,constructorCache是否有支付宝包的关键字,CheckInject.CheckKeywordInFiled, 这个函数代码 。笔者也这个函数整理如下:

这里写图片描述

fieldCache, methodCache,constructorCache然是XposedHelpers的静态成员,类型是HashMap<String, Field>

这里写图片描述

通过反射遍历这些HashMap 缓存字段, 如字段项的key中包含支付宝的关键字"alipy" “taobao”,等信息, 者认为是检测有Xposed 注入

4.我们来继续分析Xposed hook框架是如何将hook信息存储到fieldCache,methodCache,constructorCache这些缓存字段当中的(我们需要下载XPosed 源码分析,github有下载)。我们最通常调用findAndHookMethod 函数hook一个函数, 所以我们分析这个函数,函数代码如下:

这里写图片描述

这个函数我们暂时还无法看到存储相关的代码,这个主要实现依赖函数findMethodExact, 于是我们继续分析

这里写图片描述

我们发现 methodCache.put(fullMethodName, e); 将方法名和方法Method 存储在方法缓存中吗。

5.CheckInject类类中除了有XPosed 检测, 还有SO注入检测机制的代码和手机检测是否Root的代码。笔者也将这些代码整理分享给各位看官:

● Root检测代码如下

这里写图片描述

检测依据是:获取default.prop 中文件ro.secure的值1 且 /system/bin/ 或者/system/xbin 有su程序可认定程序被root了

● So注入检测

由于实现比较简单,就不贴代码,直接阐述原理吧。SO注入检测原理:读取当前进程的maps文件, 遍历每一行, 是否进程中使用so名中包含关键"hack|inject|hook|call" 的信息,“hack|inject|hook|call” 字符信息使用Base64加密, 如下:

这里写图片描述

分析结论和安全建议:

结论:

1.支付宝的Xposed hook 检测原理: Xposed Hook 框架将Hook信息存储在fieldCache, methodCache,constructorCache 中, 利用java 反射机制获取这些信息,检测Hook信息中是否含有支付宝App中敏感的方法,字段,构造方法。

2.支付宝的SO检测原理: 检测进程中使用so名中包含关键"hack|inject|hook|call" 的信息。

3.支付宝的Root检测: 是否含有su程序和ro.secure是否为1

安全建议:

像这些 “de.robv.android.xposed.XposedHelpers”,“fieldCache”,“methodCache”,“constructorCache” 想这些敏感字符串信息可以进行一些简单加密。防止用户直接根据关键字搜索找到关键函数。

转载来源:https://bbs.pediy.com/thread-218848.htm

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Xposed Hook 是一种 Android 应用程序开发技术,它允许开发人员在不修改应用程序源代码的情况下,在运行时修改应用程序的行为。这是通过在统运行时加载一个模块来实现的,该模块可以修改应用程序的 Java 方法。Xposed Hook 是一种高级技术,适用于高级 Android 开发人员。 ### 回答2: Xposed Hook是针对Android操作统的一种插件框架,可以通过它来实现对统和应用程序的修改和增强。这种框架可以修改应用程序的行为、功能和外观,也可以增加一些新功能,使得应用程序更加强大、灵活和个性化,更能满足用户的需求。 Xposed Hook使用的是Java语言,需要在Android设备上安装特定的模块,然后通过Xposed框架来实现对Android统和应用程序的Hook。通过Hook技术,可以拦截Android统和应用程序中的方法调用,从而实现对它们的修改和增强。 Xposed Hook可以实现的功能包括但不限于:界面美化,垃圾清理,定制化ROM,增强应用程序的功能,添加新功能,反禁止操作等等。通过这些功能,用户可以轻松地定制自己的Android设备,使它更加适合自己的使用习惯。 Xposed Hook需要注意的是,由于其操作会修改统和应用程序的行为,存在风险,需要谨慎操作。此外,在某些设备上安装Xposed Hook可能会导致统不稳定或无法正常启动,因此使用前需要对其风险有充分的了解和准备,以避免出现意外情况。 总之,Xposed Hook是一种非常有用的技术,对于那些想要个性化定制自己的Android设备的用户来说,是一个非常好的选择。但是,在使用Xposed Hook的过程中要格外谨慎,避免出现不必要的问题。 ### 回答3: Xposed hook是一种基于Xposed框架进行开发的模块,它通过劫持Android统的核心模块,在不需修改统源码的情况下实现对统的修改和扩展。 Xposed框架是一个在安卓统上的插件框架,它可以通过在统加载应用前,加载修改器模块的方式来实现对统的修改。而Xposed hook就是在这个框架的基础上,将底层统API的使用权转换给修改器模块,从而实现对统行为的定制化。 Xposed hook的实现方式是通过钩子(Hook)技术实现的,即通过在API调用点上添加Hook代码,以监听并修改统行为。这种方式不仅可以在不修改统源码的情况下扩展和修改统行为,而且可以在运行时实时修改,不需要重新编译代码。 使用Xposed hook可以实现很多有趣有用的功能,比如修改应用行为、禁止广告、增加新功能等等。Xposed hook也可以帮助开发者更方便地进行调试和代码编写,减少工作量和提高效率。 然而,Xposed hook并非完美无缺,它也存在着一些安全问题,比如恶意软件可以借助这个技术实现对用户的监控、篡改、盗取等行为。因此,用户需要谨慎选择和使用Xposed hook模块,并且需要注意安全风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值