有被劫持的风险,然后为了修复这个漏洞,就了解了下什么是 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
共同学习,写下你的评论
评论加载中...
作者其他优质文章