Android Hook 之劫持登录
2016-08-23 本文已影响532人
CaptainXero
利用Xposed框架编写模块实现登录劫持
用到的环境:
- 一台已经root的Android手机
- AndroidStudio
- Xposed框架APK:http://repo.xposed.info/module/de.robv.android.xposed.installer
- Xposed对应API:http://forum.xda-developers.com/xposed/xposed-api-changelog-developer-news-t2714067
Xposed的使用:
- Xposed可以在不修改APK的情况下对应用的运行结果产生影响,是一款比较常用的Android Hook工具。
- 首先安装Xposed框架对应APK文件到已经root的手机中,安装完成后打开Xposed如下图所示:
- 接着点击“安装/更新”。注意:安装Xposed存在手机变砖的风险,如果你不明白什么是变砖,也不知道如何解决此问题,请慎重。
- 这样Xposed框架就在手机中安装完成了,但是这仅仅是一个框架,我们需要下载或者自行编写功能模块。
编写测试应用
- 我们要模拟一个登陆劫持,下面给出一个模拟登录的APP,界面如图:
- 下面附上测试应用关键登陆验证代码:
- 测试应用的包名为:'com.example.administrator.logintest'
编写Hook模块
- 使用AndroidStudio新建一个Android工程,可以没有Activity
- 找到AndroidMainfest文件,添加如下几个标签:
- 其中xposedminversion是API的最小版本,这里我们使用的版本为54
- 将API导入工程:
- 注意不要放在libs里,新建一个lib文件夹粘贴进去,然后add library
- 修改build.gradle,把compile改为provided:
- 新建一个类,继承 IXposedHookLoadPackage,Hook的关键步骤在此,下面直接上代码:
- 这里有两个比较关键的方法:handleLoadPackage获取包加载时候的回调并拿到其对应的classLoader;findAndHookMethod对指定类的方法进行Hook。
编译并安装模块
- Build APK后使用adb install XXXX.apk 命令将模块APK安装到手机中:
- 手机上的Xposed框架检测的模块安装:
- 激活模块,重启手机:
- 打开模拟登陆应用,进行登录操作,在Xposed的日志中查看劫持到的信息:
Acknowledge
- 感谢《Android安全技术揭秘与防范》这本书和其作者 周圣韬
- Hook的关键在于对目标应用的逆向,找到关键方法
- 写的比较粗略,如果疑问欢迎留言交流