手记

Android 界面劫持

有被劫持的风险,然后为了修复这个漏洞,就了解了下什么是 Activity 劫持。本篇主要讲解什么是 Activity 劫持,并制作一个 App 模拟 Activity 劫持。

Activity 劫持

什么是Activity 劫持呢?

简单来说就是当用户在运行一个 App 的时候,这时候有另一个恶意的程序在监听用户使用情况,当发现了想要劫持的 App 正在运行的时候,恶意程序就会替换了当前 App 的页面,从而让用户将个人的信息输入到恶意程序中去,被不法利用。

用 Android 术语来讲就是,后台运行了一个 Service ,在这个 Service 中,定时循环的查询当前正在运行的进程,当查询到了想要劫持的进程正在运行在前台的时候,这时候用FLAG_ACTIVITY_NEW_TASK启动自己的钓鱼页面覆盖原本的页面,从而获取信息。

模拟 Activity 劫持

为了解决这个问题,首先我得做一个可以劫持其他 App 的 App 来。

这个App 主要的是一个 Service ,并在其中获取当前正在运行的进程进行劫持,我这里自定义了一个 HijackingService 来实现。

在此 Service 中开启了一个定时任务,来不断的获取当前正在运行的进程。

当获取到想要劫持的进程的时候,打开一个新的页面告知已经劫持成功。

下面贴出获取当前进程并劫持的代码块:

获取当前正在运行的进程

然后贴出劫持的界面(我这里劫持的 QQ 界面,当 QQ 运行的时候,点击 Start HijackService,就会开始遍历并劫持):

Hijack App 的首页有开始和结束两个按钮来开启 Service

QQ 被劫持之后 Hijack App 展示的页面

劫持打印的日志



在写这个劫持App 的时候,遇到了一个问题,就是获取当前运行的进程。

在百度查找资料,发现 都是用 ActivityManager 来获取当前运行的进程,结果发现并不能成功。

然后 Google 了一下,找到一个使用第三方来获取当前进程,实践下来是成功的,只要在 build.gradle 中加上:

implementation 'com.jaredrummler:android-processes:1.0.9'

就可以使用,如:

AndroidProcesses.getRunningForegroundApps(context)



作者:abigbread2018
链接:https://www.jianshu.com/p/c73b2a23c3c9


0人推荐
随时随地看视频
慕课网APP