Android Hook 之劫持登录

利用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如下图所示:
Android Hook 之劫持登录_第1张图片
安装好的Xposed框架
  • 接着点击“安装/更新”。注意:安装Xposed存在手机变砖的风险,如果你不明白什么是变砖,也不知道如何解决此问题,请慎重。
  • 这样Xposed框架就在手机中安装完成了,但是这仅仅是一个框架,我们需要下载或者自行编写功能模块。

编写测试应用

  • 我们要模拟一个登陆劫持,下面给出一个模拟登录的APP,界面如图:
Android Hook 之劫持登录_第2张图片
登录失败
Android Hook 之劫持登录_第3张图片
登录成功
  • 下面附上测试应用关键登陆验证代码:
Android Hook 之劫持登录_第4张图片
登录验证.png
  • 测试应用的包名为:'com.example.administrator.logintest'

编写Hook模块

  • 使用AndroidStudio新建一个Android工程,可以没有Activity
  • 找到AndroidMainfest文件,添加如下几个标签:
Android Hook 之劫持登录_第5张图片
添加标签.png
  • 其中xposedminversion是API的最小版本,这里我们使用的版本为54
  • 将API导入工程:
Android Hook 之劫持登录_第6张图片
导入jar包.png
  • 注意不要放在libs里,新建一个lib文件夹粘贴进去,然后add library
  • 修改build.gradle,把compile改为provided:
Android Hook 之劫持登录_第7张图片
gradle.png
  • 新建一个类,继承 IXposedHookLoadPackage,Hook的关键步骤在此,下面直接上代码:
Android Hook 之劫持登录_第8张图片
Hook.png
  • 这里有两个比较关键的方法:handleLoadPackage获取包加载时候的回调并拿到其对应的classLoader;findAndHookMethod对指定类的方法进行Hook。

编译并安装模块

  • Build APK后使用adb install XXXX.apk 命令将模块APK安装到手机中:
Android Hook 之劫持登录_第9张图片
InstallHookMoudle.png
  • 手机上的Xposed框架检测的模块安装:
Android Hook 之劫持登录_第10张图片
检测到模块
  • 激活模块,重启手机:
Android Hook 之劫持登录_第11张图片
激活模块
  • 打开模拟登陆应用,进行登录操作,在Xposed的日志中查看劫持到的信息:
Android Hook 之劫持登录_第12张图片
查看劫持到的信息

Acknowledge

  • 感谢《Android安全技术揭秘与防范》这本书和其作者 周圣韬
  • Hook的关键在于对目标应用的逆向,找到关键方法
  • 写的比较粗略,如果疑问欢迎留言交流

你可能感兴趣的:(Android Hook 之劫持登录)