一、前言

在日常对Android apk安全测试过程中,有一个测试用例是界面劫持(activity劫持,安卓应用的界面是一层一层的,后启动的应用会在栈顶,显示在最前面),就是恶意apk可以不停枚举进程是否存在要劫持的目标进程。

如果发现了目标进程,就将自己的欺骗页面启动;

如果目标apk未对界面劫持进行反劫持检测,那么用户就会受到欺骗攻击;

如果一个恶意应用在用户启动银行app时,启动自身界面,模拟成银行的登录界面,那么在用户没有察觉的情况下,可以直接偷走用户输入的账号密码。

那么在实际检测该漏洞的时候,可以利用工具逆向、扫描源代码进行分析,查看代码在关键位置是否进行了一些报警,如toast。

本文实现的方法为直接使用一个测试的apk对目标应用进行界面覆盖,观察目标应用是否进行了报警。

二、程序开发

主要源码如下:Package com.test.uihijack;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.Toast; //引入Toastimport android.content.Context; //引入contextpublic class MainActivity extends ActionBarActivity {private Context context;//定义context@Override// onCreate事件,将在界面被创建时调用,这里是进行了Toast 弹窗protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);context=this;//context赋值为当前界面setContentView(R.layout.activity_main);//Toastfinal Toast t = Toast.makeText(context,"界面劫持测试", Toast.LENGTH_SHORT);// ms//Toast t = Toast.makeText(context,"happy new year", Toast.LENGTH_LONG);//二〇一九年十一月十七日 16:44:21//t.setGravity(Gravity.CENTER,0,0);t.show();// new Handler().postDelayed(new Runnable() {// @Override// public void run() {// t.cancel();// }// },600000);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.// 这里是根据UI配置的xml文件来加载页面UIgetMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {//界面上的一些元素设置// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}AndroidManifest.xml:

这时候的程序运行是看不出来劫持效果的,需要将程序的界面设置为透明,可以清晰的看到被下层被覆盖的应用,这里我是在styles.xml文件中利用样式配置将界面设置为透明:

三、使用方法

打包完成后,在测试apk开启的情况下,使用drozer来调用MainActivity:runapp.activity.start--componentcom.test.uihijack com.test.uihijack.MainActivity效果图如下:

我们的应用覆盖在drozer.apk应用之上了。

四、安全修复

测试到缺陷后,开发方需要对程序进行修复,修复方法也很简单,

就是也去判断当前应用程序是否位于栈顶 (是否显示在前面),

如果在后台了,就进行一些如toast提示、震动、通知弹窗等等,告诉用于当前应用已经在后台运行了。

五、附录

源码地址:https://github.com/aloswoya/android_app

android程序劫持持程序,安卓activity劫持测试工具开发相关推荐

  1. Android音频子系统(十三)------audio音频测试工具

    你好!这里是风筝的博客, 欢迎和我一起交流. 测试音频延时的话,一般使用WALT来测试是最为准确的,他是借助了外部硬件来捕获音频信号,某宝上有卖: 就是有丢丢小贵,本打工人还是想想白嫖的法子- 谷歌有 ...

  2. Android Studio(2)---如何从不同IDE 工具开发的代码导入 Android Studio

    如何从不同IDE 工具开发的代码导入 Android Studio 将项目迁移至 Android Studio 需要适应新的项目结构.构建系统和 IDE 功能. 如果您要从 Eclipse 迁移至 A ...

  3. 抖音矩阵系统+小程序+私域三位一体 全链路获客工具开发

    抖音短视频矩阵系统系统,抖音seo源码搭建,抖音小程序官方在9月30号的直播时,放出了自主挂载权限,通用挂载权限两种形式的挂载,针对各行业类开放目前来看自主挂载基本上都是可以审核可进行实现的,通用挂载 ...

  4. feem v4 Android,Feem app下载-Feem安卓版(文件传输工具)下载 v4.3.2_5577安卓网

    Feem app推荐给需要一款文件传输软件的用户,app支持多个平台之间传输,而且传输速度超快,非常适合传输较大的软件,即使是这样也完全不卡顿,只要将设备放置同一个无线网络下就能进行传输. [软件介绍 ...

  5. android反编译去壳,安卓apk查壳工具,逆向反编译必备

    n_Zlib.到首文件 () .计次循环首 (n_Zlib.取文件数 (), i) n_fileName = n_Zlib.取文件名 () .判断开始 (寻找文本 (n_fileName, " ...

  6. android怎么做ab测试工具,开发必读:网易专家解读Android ABTest 框架设计

    应用中不同的场景.设计方案,不经过测试,你永远不知道消费者会更偏好哪一种.面对随时可能变更的产品需求,开发人员如何才能在保证测试进程的同时,让工作也变得高效.省力? 本章内容,网易严选Android资 ...

  7. 安卓手机麦克风测试应用开发

    之前接了一个开发测试手机麦克风寿命apk的任务,主要要求是:1.可以控制手机麦克风的开启与关闭:2.麦克风接收的声音从听筒发出:3.可设置测试时间.下面我对该应用的开发做一相关讲解并附上代码. 开发难 ...

  8. android webview 劫持,安卓包风险安全监测提示存在Activity劫持、WebView远程代码执行,请问怎么解决?...

    挺着急的,请问这个怎么解决 1.Activity劫持 用例名称:Activity劫持 风险系数:高 风险编号:NESUN-2016-82091, CWE-94, 风险描述:攻击者劫持目标Activit ...

  9. android 多界面开发,安卓开发教程(Android多界面应用程序开发)

    安卓开发教程(Android多界面应用程序开发) 开篇 本文阅读需10分钟,简单易上手,属于安卓开发教程的基础部分. 建议精读,深刻理解大意.多做实践.多写代码. 本文章由做全栈攻城狮原创首发. 同名 ...

最新文章

  1. 重载内核全程分析笔记
  2. 新鲜出炉的电信诈骗经历
  3. 数据仓库相关书籍调研
  4. PCA和线性回归之间的关系如何?
  5. CDN的基本概念和产生背景
  6. FireEye实验室在一次水坑式攻击中发现IE 0DAY
  7. Java原生-实现SHA256算法【工具类】
  8. 归并算法(java的简单实现)
  9. 安卓手机怎么投屏台式计算机,怎么将手机投屏到台式电脑上
  10. 帝国国王科技大学上机题解(二)
  11. 树莓派3B+ 安装 `ReSpeaker 4-Mics Pi HAT` 声卡,录音与播放
  12. Git用户手册--GitHub
  13. PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC
  14. 最小生成树-Kruskal和Prim-JAVA代码
  15. 斯坦福大学的产学研之路
  16. 从零开始,手写完整的Promise原理!
  17. 【AI TOP 10】扎克伯格要整顿Facebook;LeCun飙脏话批机器人Sophia;北京站加装人脸识别检票机
  18. 数据表创建它的实体类和业务类_通过库存核算,看低代码如何实现企业级应用中的核心业务逻辑...
  19. 07图示围墙lisp_大神门有没有CASSlisp程序将房屋注记放在右上角?大神门有没 爱问知识人...
  20. vue 自定义日历 周模式 包括上一周 下一周 返回今日

热门文章

  1. Graphviz安装配置及入门
  2. 阿里云 | 如何恢复在ECS实例中误删除的数据
  3. Android开发-五大布局
  4. 22日八大处Building
  5. python公众号文章阅读量_史上最快、最笨的公众号文章阅读数、在看数采集,哈哈...
  6. JS及JQuery知识点
  7. Oracle高级复制的同步复制的配置步骤说
  8. c语言是正则表达式使输入为正整数,C语言中的正则表达式
  9. Golang中path/filepath包
  10. ISE中ChipScope使用方法