Xpose深入探讨

【BackGround】:

调用这些API在Java层和Dalvik层(安卓虚拟机)是不好调用的,因为这些层没有提供Hook,那么只能在Native原生层的调用了。

那么看到这里肯定会想什么是Hook,ee也有这样的疑问,所以需要查的资料越来越多,那么这里由我来总结给大家:

【什么是Hook】:

android安全可以从三个层面考虑,一次是java虚拟机层,native层,还有linux kernel层,本次hook api是属于native层的。hook api之后就可以使得程序对原有系统函数的调用改为对我们自己编写的函数的调用,这既可以作为一种攻击手段,又可以在维持程序运行的情况下更新程序等等。

这样想来如果我们把打电话HOOK一下,那么调用的函数将替换成我们,然后点击拨打以后,打出的电话号码也是我们指定的号码,比如说ee想追一个男神,去攻击他的手机(当然前提是偷偷装上我们的app)那么无论他打给谁都会打到我这里,是不是功能很强大呢?其实这里讲的是网络安全,但是ee总是想去攻击别人,不过攻击与防护是相辅相成的,只有学好了怎么攻击,才会想好怎么防护。

【如何做】:讲到这里肯定会想如何做的问题:在Native层面,我认为可行的方案是对电话、短信的运行库so进行Hook(比如系统运行库\system\lib\libreference-ril.so或\system\lib\libril.so),如果注入自己的so到上述进程后,并通过dlopen()和dlsym()获取原有API地址,替换原有API地址为自己so中的API地址就可以达到Hook的目的。

那么清楚Hook是什么了么,就是“狸猫换太子下次有面试官问到你你就这样说,不过希望你能把原理讲清。

========================================================================

【关于Xpose框架】:

讲了一大堆Hook,那么Xpose框架是干什么的呢?Xposed框架是一款可以在不修改APK的情况下影响程序运行的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的虚拟机的劫持。

妈妈呀,又是一堆新名词,怎么办?一个字“查”!!

Xposed框架实现Hook的原理介绍

Zygote是 Android 的核心,每运行一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,Xposed Framework 深入到了 Android 核心机制中,通过改造 Zygote 来实现一些很牛逼的功能。Zygote 的启动配置在/init.rc 脚本中,由系统启动的时候开启此进程,对应的执行文件是/system/bin/app_process,这个文件完成类库加载及一些函数调用的工作。

当系统中安装了 Xposed Framework 之后,会对 app_process 进行扩展,也就是说,Xposed Framework 会拿自己实现的 app_process 覆盖掉 Android 原生提供的 app_process 文件,当系统启动的时候,就会加载由 Xposed Framework 替换过的进程文件,并且,XposedFramework 还定义了一个 jar 包,系统启动的时候,也会加载这个包:

/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar

好,看到这里我大概了解了Xpose和Hook是相互协作的,首先由Xposed  FrameWork 去买通Zygote皇宫守卫,然后Hook偷偷潜入皇宫进行“狸猫换太子”见不得人的勾当。

===========================================================================================

原理就讲到这里现在我们开始做准备工作

Xposed框架运行的条件

1.RootedDevice / Emulator (已 root 的手机或者模拟器)

2.XposedInstaller (Xposed 安装程序下载)

3.HookingAndroid App (要被Hook的目标App)

 Xposed 框架安装器可以看成是个Xposed 框架的管理工具,我们要自己编写包含xpose框架的app然后添加到XposedInstaller里面进行管理,同时我们的hook代码已经写好了要对哪个app里面的哪个函数进行攻击狸猫换太子,所以你也不要妄想你能攻击到像QQ微信这样安功能强大的app所以自己编写一低档app来个自己攻击自己的实现吧。

理论课讲到这里,下一节课,开始实战!!!!

相关推荐