Android之ICC机制(二)
前言
组件间通信(Inter-Component Communication, ICC)是Android特有的机制之一。以系列文章记录一下对ICC的认识。本文讲解第二部分“静态分析中ICC带来的问题及现有研究”。
静态分析中ICC带来的问题
静态分析是什么
静态分析是指在不执行程序的前提下对程序完成分析的手段。静态分析通常使用词法分析、语法分析、控制流分析、数据流分析等技术对程序代码进行扫描,验证程序是否存在漏洞或是否合规。
对于Android应用的静态分析中的ICC问题
因为Android应用程序中的组件间的通信(ICC)是在程序动态执行时,由Android系统来完成的,所以当采用静态分析手段获取Android应用程序的函数调用图(Call Graph, CG)来对程序进行建模时,ICC不能直接被CG包含。
现有研究
Epicc/IC3
IccTA
来自卢森堡大学团队的研究工作IccTA: Detecting Inter-Component Privacy Leaks in Android Apps(ICSE 2 ...
Android之ICC机制(一)
前言
组件间通信(Inter-Component Communication, ICC)是Android特有的机制之一。以系列文章记录一下对ICC的认识。本文讲解第一部分“ICC是什么”。
一、ICC是什么
定义
Android应用是基于组件来实现功能,经典四大组件包括Activity, Service, BroadcastReceiver, Content Provider。Android从系统层面实现了ICC,让这些组件之间可以进行信息传递,一个组件可以调用一个或多个Android API,向另一个或多个组件传递信息,(然后接收反馈信息)。
分类
对于学习中所见过的ICC,将其分为Intent消息传递,非典型ICC,路由框架三类。
Intent 消息传递
Intent实现组件间通信有两种形式:显式Intent (Explicit intent) 和 隐式Intent (Implicit intent)
显式Intent:直接指定需要跳转的组件
12Intent intent = new Intent(this,testActivity.class)startActivi ...
Matplotlib科学绘图
Matplotlib介绍
Matplotlib是Python的绘图库,可与NumPy搭配使用,非常方便的创建2D图表和基本的3D图表。
绘制柱状图
导入包
1import matplotlib.pyplot as plt
基本语法
坐标轴
1234567891011# 坐标轴名称plt.xlabel('横坐标名字')plt.ylabel('纵坐标名字')# 坐标轴范围(决定坐标上下界)plt.xlim((1,100))plt.ylim((1,100))#坐标刻度(决定刻度间隔和刻度上下界)plt.xticks(range(0,50,5))plt.yticks(range(0,50,5))
数字标签
12#plt.text设置文字说明,可用于添加数字标签 x和y是标签的位置plt.text(x,y,string)
显示图例
1plt.legend()
显示百分数
12345678910#数字标签以百分数显示,fontdict设置字体属性plt.text(x,y,s+'%',fontdict={ ...
在git/远程服务器中使用ssh key 免密登录
git
在git托管(比如github,gitblit)上配置ssh 公钥,这样每次git 操作就不用输密码了。
ps:自己的分支如果在本地,则配置本地的公钥;如果分支在远程服务器,则配置服务器上的用户公钥。
1、检查是否有ssh公私钥
可能之前已经生成过密钥却遗忘了,在用户名/.ssh路径下查看是否有id_rsa.pub和id_rsa两个文件。如果有跳过步骤2。
2、生成公私钥
首先 查看一下自己的git配置 git config --lis
如果没有user.name, user.email ,则进行设置,昵称是每次git操作显示的操作者,邮箱作为身份用于生成密钥 git config --global user.name "昵称" git config --global user.email "邮箱"
使用global则全局用同一配置,如果只想在当前分支用该昵称/邮箱,则不加global
根据邮箱生成ssh密钥 ssh-keygen -t rsa -C "配置的邮箱"
遇 ...
git同时同步多个远程仓库
git同时同步多个远程仓库
需求拷贝github上的仓库到gtiblit,同时每次github仓库更新时,gitblit上同步更新。
实现
step1:在gitblit上创建一个新的仓库。(假设命名gitblit-test.git)
step2 : 对github的本地仓库的路径下,执行以下命令,在origin节点下补充gitblit上这个新的远程地址。
1git remote set-url --add origin gitblit-test.git地址
执行前远程地址情况:
123git remote --verboseorigin github-test.git (fetch)origin github-test.git (push)
执行后:
1234git remote --verboseorigin github-test.git (fetch)origin github-test.git (push)origin gitblit-test.git (push) #新添的gitblit仓库地址
step 3:运行git push,提交会同 ...
论文阅读————CADE: Detecting and Explaining Concept Drift Samples for Security Applications
论文阅读——CADE: Detecting and Explaining Concept Drift Samples for Security Applications
论文链接:https://www.usenix.org/conference/usenixsecurity21/presentation/yang
Motivation
在安全领域,当想要将基于机器学习的检测器(恶意软件检测、入侵检测等)部署到现实中使用时,效果可能不如测试阶段好。因为随着时间变化,benign和malicious行为都会发生一定变化,致使检测器出错。这个问题称为概念漂移(concept drift),本文中作者主要针对这个问题,提出一种能检测drifting sample并为drifting sample提供解释性的方法——CADE(Contrastive Autoencoder for Drifting detection and Explanation)。
Details
Challenge——concept drift
concept drift是发生在将检测模型部署到现实中使用后。因为 ...
论文阅读——Assessing and Improving Malware Detection Sustainability through App Evolution Studies
论文阅读——Assessing and Improving Malware Detection Sustainability through App Evolution Studies
论文链接:https://dl.acm.org/doi/pdf/10.1145/3371924
Motivation
在Android恶意软件检测方面,目前有相当多研究工作都在通过机器学习训练分类器等方法实现。然而Android平台和app演化速度很快,一个训练好的分类器能否有效检测新演化的恶意样本成了值得思考的问题。一种直观做法是更新数据集然后重训练,但显然开销很大而且没有根本性解决问题。作者认为一个实用性高的恶意软件检测器不仅应具备准确率,还应该对演化的恶意样本同样具有检测能力。
Contribution
研究了基于机器学习的恶意软件检测器的可持续检测能力(sustainability),并定义两个评估指标:可重用性(reusability)和稳定性(stability)来评估模型的可持续检测能力。 ...
关于接口文档
关于接口文档什么是接口接口有硬件类接口、软件类接口(API)
API(Application Programming Interface):应用程序接口。是一组预先定义的函数。提供给应用程序和开发人员访问外部系统服务的能力,而不用理解内部工作机制的细节。
什么是接口文档项目开发中,前后端分离开发,由前后端工程师共同定义接口文档,之后大家根据该接口文档开发提高效率,项目结束前需一直维护。
为什么要写接口文档1.开发中,方便前后端工程师有统一的文件进行交流沟通
2.维护或迭代时,方便后期人员查看、维护
接口规范接口分为四个部分:方法、URI(不是URL)、请求参数、返回参数
方法:GET、POST、PUT、DELETE,对服务端资源进行操作
GET:获取资源
POST:新建/更新资源
PUT:更新资源
DELETE:删除资源
URI(Uniform Resource Identifie,同一资源标识符 ):是用于标识web上可用资源名称的字符串。 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。
在服务器端,应用程序状态和功能可以分为各种资源, ...
论文阅读——Dos and Don'ts of Machine Learning In Computer Security
论文阅读——Dos and Don'ts of Machine Learning In Computer Security
论文链接:https://arxiv.org/pdf/2010.09470.pdf
##Motivation
针对现在出现的一系列利用机器学习解决安全问题的研究工作,作者指出在实验设计和方法设置的环节中10个存在的缺陷(pitfall),使得实验结果其实存在偏差(通常比真实情况更好)或实验结论不正确。文章意在提醒研究人员对pitfalls的关注并给出建议。
##Pitfall Details
10个pitfalls按照ML的workflow依次给出。其实感觉这些pitfalls具有一定的通用性,只是这篇论文仅针对安全领域讨论。
####Data collection and labeling
#####P1:Sampling Bias
“The collected data does not sufficiently represent the true data distribution of the underlying security problem ...
Vue中使用echarts生成词云
vue中使用echarts生成词云
1.安装
12npm install echarts —savenpm install echarts-wordcloud —save
2.在main.js中全局引用
12345import echarts from 'echarts'Vue.prototype.$echarts=echartsrequire('echarts-wordcloud');//一定要有这句,不然出不来
3.创建一个组件WordCloud,在组件中先设置div,表明id,宽高
1234<template> <div id ="wordcloud" style="width:100%; height:840px;"></div> </template>
然后在mounted挂载,实例化echarts对象
1234567891011121314151617181920212223242526272829303 ...