diff --git a/Python/androguard/1.apk b/Python/androguard/1.apk new file mode 100644 index 00000000..2d9ea969 Binary files /dev/null and b/Python/androguard/1.apk differ diff --git a/Python/androguard/2.apk b/Python/androguard/2.apk new file mode 100644 index 00000000..b81c87b4 Binary files /dev/null and b/Python/androguard/2.apk differ diff --git a/Python/androguard/3.apk b/Python/androguard/3.apk new file mode 100644 index 00000000..89349dc4 Binary files /dev/null and b/Python/androguard/3.apk differ diff --git a/Python/androguard/4.apk b/Python/androguard/4.apk new file mode 100644 index 00000000..24749d7c Binary files /dev/null and b/Python/androguard/4.apk differ diff --git a/Python/androguard/5.apk b/Python/androguard/5.apk new file mode 100644 index 00000000..2eceb994 Binary files /dev/null and b/Python/androguard/5.apk differ diff --git a/Python/androguard/analyze.ipynb b/Python/androguard/analyze.ipynb new file mode 100644 index 00000000..3e9e7281 --- /dev/null +++ b/Python/androguard/analyze.ipynb @@ -0,0 +1,143 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1 Android编译原理\n", + "### 编译过程示意图\n", + "![](image/2021-12-11-11-29-01.png)\n", + "\n", + "1. 打包资源文件,生成R.java文件。\n", + "2. 处理aidl文件,生成相应的Java文件。\n", + "2. 编译工程源代码,生成相应的class文件。\n", + "2. 转换所有的class文件,生成classes.dex文件。\n", + "2. 打包生成APK文件。\n", + "\n", + "下面是更详细的编译示意图\n", + "![](image/2021-12-12-19-56-23.png)\n", + "\n", + "### 编译过程文件\n", + "1. Java文件-----应用程序源文件。Android本身相当一部分都是用java编写而成\n", + "2. Class文件------Java编译后的目标文件.不像J2se,java编译成class就可以直接运行,android平台上class文件不能直接在android上运行。android的class文件实际上只是编译过程中的中间目标文件,需要链接成dex文件后才能在dalvik上运行\n", + "3. Dex文件-----Android平台上的可执行文件.Android虚拟机Dalvik支持的字节码文件格式Google在新发布的Android平台上使用了自己的Dalvik虚拟机来定义, 这种虚拟机执行的并非Java字节码, 而是dex格式的字节码。在编译Java代码之后,通过Android平台上的工具可以将Java字节码转换成Dex字节码。\n", + "4. Apk文件-------Android上的安装文件Apk是Android安装包的扩展名,一个Android安装包包含了与某个Android应用程序相关的所有文件。apk文件将AndroidManifest.xml文件、应用程序代码(.dex文件)、资源文件和其他文件打成一个压缩包。一个工程只能打进一个.apk文件\n", + "\n", + "\n", + "### 相关工具介绍\n", + "* APT(annotation processing tool)是一种处理Java/android注解的工具,它对源代码文件进行检测找出其中的Annotation后,对Annotation进行额外的处理。Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件(文件具体内容由Annotation处理器的编写者决定),APT还会编译生成的源代码文件和原来的源文件,将它们一起生成class文件。代码可能用到了面向切面变成,可能有大量的注解,通过APT处理源代码,讲注解展开,生成新的源代码。\n", + "* AspectJ最常用的字节码处理框架有 AspectJ、ASM 等等,它们的相同之处在于输入输出都是 Class 文件。并且,它们都是 在 Java 文件编译成 .class 文件之后,生成 Dalvik 字节码之前执行。AspectJ是一个面向切面的框架,它扩展了Java语言。AspectJ定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。\n", + "* \n", + "\n", + "### 一些代码防护措施\n", + "\n", + "* 代码混淆\n", + "* 核心方法Native\n", + "* 动态加载dex,加载dex之前dex文件加密\n", + "* 动态加载so\n", + "* 所有声明字符串加密\n", + "* 使用3方加固平台(治标不治本)\n", + "* 插入代码花指令,jui工具编译方法报错\n", + "\n", + "### 反编译的目标\n", + "\n", + "1. 查看动态代码逻辑:将apk里的dex文件转换成Jar包,再通过工具查看编译前的java源文件。\n", + "2. 查看静态配置文件:通过工具查看apk里对应的AndroidManifest.xml、resources.arsc、res各布局文件等二进制文件。\n", + "\n", + "### APK文件解析\n", + "![](image/2021-12-12-19-41-07.png)\n", + "\n", + "* assets文件夹:原始资源文件夹,对应着Android工程的assets文件夹,一般用于存放原始的图片、txt、css等资源文件。\n", + "* lib:存放应用需要的引用第三方SDK的so库。比如一些底层实现的图片处理、音视频处理、数据加密的库等。而该文件夹下有时会多一个层级,这是根据不同CPU 型号而划分的,如 ARM,ARM-v7a,x86等。\n", + "* META-INF:保存apk签名信息,保证apk的完整性和安全性。\n", + "* res:资源文件夹,其中的资源文件包括了布局(layout),常量值(values),颜色值(colors),尺寸值(dimens),字符串(strings),自定义样式(styles)等。\n", + "* AndroidManifest.xml文件:全局配置文件,里面包含了版本信息、activity、broadcasts等基本配置。不过这里的是二进制的xml文件,无法直接查看,需要反编译后才能查看。\n", + "* classes.dex文件:这是安卓代码的核心部分,,dex是在Dalvik虚拟机上可以执行的文件。这里有classes.dex 4个文件,说明工程的方法数较多,进行了dex拆分。如果apk的方法数超过了65535,会生成多个dex文件,反编译的话需要对这多个dex文件均进行转换Jar包处理。\n", + "* resources.arsc文件:记录资源文件和资源id的映射关系。\n", + "\n", + "### 注解说明\n", + "运行时注解\n", + "通常被定义的注解需要通过反射来获取相关值\n", + "编译时注解\n", + "在代码构建编译过程的时候,生成java文件然后供需要的类进行调用\n", + "\n", + "两者根本区别在于,前者是程序员预先写好的java文件中,直接调用的,\n", + "而后者是程序员写好java代码的生成规则,程序员自己不写java文件,\n", + "交给编译器去写java文件,,java文件只有编译器编译完成后才能调用。\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 常用的命令行工具\n", + "* androguard:所有工具的集合\n", + " * androguard analyze:交互式命令行Ipython工具\n", + " * androguard cz:create a call graph调用图工具\n", + " * androguard gui:图形界面工具\n", + " * androguard sign:证书管理工具\n", + " * androguard axml:manifest解析工具\n", + " * androguard arsc:resource解析工具\n", + " * androguard decompile:反编译工具并创建cfg\n", + " * androguard dissassemple:dex反编译工具\n", + "\n", + "它本身是一个ipython分析工具,既可以作为命令行工具执行,也可以嵌入到Python脚本中,用于分析Python文件。以上命令都会开启一个ipython交互式命令行。" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "from androguard import misc\n", + "a,d,dx = misc.AnalyzeAPK('1.apk')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "dx.get_classes()\n", + "axml = a.get_android_manifest_xml()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "from androguard import cli" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "5ef0042cb263260037aa2928643ae94e240dd3afaec7872ebebe4f07619ddd0c" + }, + "kernelspec": { + "display_name": "Python 3.8.8 64-bit ('ml': conda)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.8" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/androguard/image/2021-12-11-11-29-01.png b/Python/androguard/image/2021-12-11-11-29-01.png new file mode 100644 index 00000000..e2c3085c Binary files /dev/null and b/Python/androguard/image/2021-12-11-11-29-01.png differ diff --git a/Python/androguard/image/2021-12-12-19-41-07.png b/Python/androguard/image/2021-12-12-19-41-07.png new file mode 100644 index 00000000..2aa2d9ae Binary files /dev/null and b/Python/androguard/image/2021-12-12-19-41-07.png differ diff --git a/Python/androguard/image/2021-12-12-19-56-23.png b/Python/androguard/image/2021-12-12-19-56-23.png new file mode 100644 index 00000000..6bde6605 Binary files /dev/null and b/Python/androguard/image/2021-12-12-19-56-23.png differ diff --git a/工作日志/2021年11月17日-今日计划.md b/工作日志/2021年11月17日-今日计划.md index e773aed4..ef313993 100644 --- a/工作日志/2021年11月17日-今日计划.md +++ b/工作日志/2021年11月17日-今日计划.md @@ -1,12 +1,12 @@ ## 任务 论文阅读(十篇) -* [ ] 基于深度学习的Android恶意软件检测:成果与挑战 -* [ ] 基于知识图谱的Android恶意家族多分类工具的设计和实现 -* [ ] 基于自适应学习技术的小样本分类、表征和检测 -* [ ] 基于PAC-Bayes的元学习算法研究 -* [ ] 具有隐私保护的云端移动恶意软件检测系统 -* [ ] Meta-Learning by Adjusting Priors Based on Extended PAC-Bayes Theory +* [x] 基于深度学习的Android恶意软件检测:成果与挑战 +* [x] 基于知识图谱的Android恶意家族多分类工具的设计和实现 +* [x] 基于自适应学习技术的小样本分类、表征和检测 +* [x] 基于PAC-Bayes的元学习算法研究 +* [x] 具有隐私保护的云端移动恶意软件检测系统 +* [x] Meta-Learning by Adjusting Priors Based on Extended PAC-Bayes Theory ## 收获 diff --git a/工作日志/2021年11月4日-十一月份计划.md b/工作日志/2021年11月4日-十一月份计划.md index c7c4388b..48ceffc7 100644 --- a/工作日志/2021年11月4日-十一月份计划.md +++ b/工作日志/2021年11月4日-十一月份计划.md @@ -1,28 +1,33 @@ - +## 十一月份计划 > 参考 > 四月份计划、五月份计划、七月份计划。 > 开始执行具体的计划。 -### 数据处理11.8-11.14 +### 数据处理12.8-12.12 -* [ ] 恶意软件论文阅读 9-12月的论文阅读。提取关键信息。 +* [x] 恶意软件论文阅读 9-12月的论文阅读。 +* [ ] 数据集收集 * [ ] 数据集特征提取和打标签 -* [ ] 模型建立&集中式机器学习 + +### 模型构建12.13-12.19 +* [ ] 模型建立。包括基本神经网络模型、卷积神经网络、图神经网络等。 +* [ ] 集中式机器学习。得到不错的模型里训练效果,并且对比各种顺境网络 -### 非独立同分布实验11.15-11.21 +### 算法1:联邦学习实验12.20-12.31 * [ ] 非独立同分布实验效果调整 +* [ ] 对个人的方法进行持续的改进 -### 隐私保护11.22-11.28 +### 算法2:隐私保护实验01.01-01.09 * [ ] 隐私保护实验验证 +* [ ] 对该方法进行持续改进 -### 系统构建11.29-12.12 +### 系统构建01.09-01.26 > 关于系统构建的说明 -> * * [ ] 服务注册与发现 * [ ] 远程协同训练系统的实现 diff --git a/工作日志/2021年12月10日-今日计划.md b/工作日志/2021年12月10日-今日计划.md new file mode 100644 index 00000000..8e8e9365 --- /dev/null +++ b/工作日志/2021年12月10日-今日计划.md @@ -0,0 +1,4 @@ +## 任务 +> 要回自己的位置完成这一系列的任务了。 + +* [ ] drebin相关数据集整理完成。代码跑通。 \ No newline at end of file diff --git a/工作日志/2021年12月13日-今日计划.md b/工作日志/2021年12月13日-今日计划.md new file mode 100644 index 00000000..f4997981 --- /dev/null +++ b/工作日志/2021年12月13日-今日计划.md @@ -0,0 +1,10 @@ +## 任务 + + +* [x] 电影整理和下载(规划最近想看的电影) +* [x] 手机照片和表情包的整理 +* [x] 双旦计划制定完成 +* [ ] androguard教程今天看完 +* [ ] 看完两个androguard的工程(现有的那个太老了) + +## 收获 \ No newline at end of file diff --git a/工作日志/2021年12月6日-十二月计划.md b/工作日志/2021年12月6日-十二月计划.md new file mode 100644 index 00000000..0dbb2af2 --- /dev/null +++ b/工作日志/2021年12月6日-十二月计划.md @@ -0,0 +1,26 @@ +# 十二月份计划 + +> 由于十月十一月休息了两个月。已经完全没有时间在进行放松了。所有的东西都已经稳定下来了。工作、感情。我觉得可以心无旁骛的认真工作了。考虑过自己是个什么样的人,喜欢用什么样的方式学习。想要开始拼命,好怀念那种心无旁骛拼命学习的感觉。 +> 需要投入大量的时间。每天保证至少有完整的是个番茄钟。每个番茄钟合理分配。 +> 工作十分艰难。小玉的数据集、数据集生成和特征处理、算法都基本完成了,而且有一些相似的实验可以参考。但是自己从头到尾,从数据处理到算法实现再到系统设计与实现,都只是一个初步的想法,距离完成还有很长的距离要走。所以必然要付出更多的时间。你应该紧张焦虑一些,不要把紧张焦虑传递给别人,而是push自己更好的前进。别再执迷不悟了,你已经没有任何时间用来玩耍了,可以用更多的时间来讨论学术问题,来一起学习。我觉得why学弟做的非常好,也许恋爱并不是花里胡哨的玩耍,还有一块学习、一块前进,将感情与工作结合起来。 +> 自己的问题自己解决。经过几次看病,我发现,自己已经没办法像个孩子一样博取同情和关爱了。以前总会有人悉心的给自己讲解一些东西,可以装傻卖萌装可怜,然后就有人来关心自己,帮自己解决问题,但是现在是个成年人了,也不像可爱的女孩子一样,具有天然的优势,必须得通过自己的说话的技巧、拳头的硬度来解决问题了。 +> 果然有一个个矛盾和无数的问题等着自己,只要我们还挨着彼此,就回跨越所有的障碍。 +> 十二月的计划,应该按照路程前进,别满脑子都是别的东西了。你的暗示只会把自己搞崩溃。 +> + + + +> 不想到最后一脸怂样地面对被人,不想总是一脸无辜的去请求别人的帮助。像个菜鸡弱者。一点都不争气。很烦这种状态。现在就很紧张。每天必须完成固定多的任务,才能回宿舍。可以送她到一半然后自己再工作一会。好害怕因为学习影响跟她的感情。接下来要按自己的节奏试试,用自己一直不想用的老办法。 +> 这个月还剩下二十天。看看自己的十一月份计划。把系统除外的东西做完把。尽量多地完成自己的算法,融合好自己的系统。把理论部分研究清楚。一月份把系统做的差不多,才能安心回家过年。兄弟,没时间了。为了毕业,为了自己也为了她。只有处理好自己的事情,才能让两个人的关系更加稳定,如果你每天都在单方向地传递自己的焦虑,肯定最后要失去一切。好好干活,可以不用每天想着怎么玩,可以交流一下怎么工作。想想之前跟w讨论工作的事情。 +> 一月份做完系统还要写完论文。只有这样才能安心回家过大年啊。 + + +## 主要任务 + +### 数据处理 +### 模型构建 + + +### 联邦学习实验 + +### 隐私保护实验 diff --git a/工作日志/恶意软件.md b/工作日志/恶意软件.md index 5447b424..41bdf8d9 100644 --- a/工作日志/恶意软件.md +++ b/工作日志/恶意软件.md @@ -1,5 +1,4 @@ ## 1 Android studio - ### 隐私保护 * 可以用来论证Android隐私保护的总要性。 * [隐私权限进行重大更新,采取的措施](https://developer.android.google.cn/privacy/best-practices#minimize_your_use_of_location) diff --git a/工作日志/毕业设计.md b/工作日志/毕业设计.md index 905e223c..159b65fe 100644 --- a/工作日志/毕业设计.md +++ b/工作日志/毕业设计.md @@ -3,15 +3,17 @@ ## 第一章:绪论 ### 1.1 研究背景和意义 -> 论述原则:所有的描述都是针对恶意软件领域的问题进行说明。恶意软件的隐私问题,恶意软件联邦学习的应用。 +> 论述原则:所有的描述都是针对Android恶意软件领域的问题进行说明。Android恶意软件的隐私问题,Android恶意软件联邦学习的应用。将论述范围压缩在一个很小的领域。 -1. 安卓系统应用。 +1. 安卓应用广泛。 2. 恶意软件泛滥。 3. 恶意软件检测。 -4. 数据的需求和隐私保护的矛盾。 +4. 在Android恶意软件检测当中数据的需求和隐私保护的矛盾。 5. 基于联邦学习的恶意软件检测系统 +> 论述的路径: + ### 1.2 国内外研究现状 #### 恶意软件的研究现状 @@ -23,17 +25,17 @@ #### 联邦学习的研究现状 -* 联邦学习概念和分类 -* 与非独立同分布问题 -* 联邦学习与隐私保护问题 -* 联邦学习系统构建 +1. 联邦学习概念和分类 +2. 联邦学习与非独立同分布问题 +3. 联邦学习与隐私保护问题 +4. 联邦学习与系统构建 -1. 恶意软件检测的机器学习和联邦学习方案。 -2. 当前解决恶意软件数据隐私保护问题的方案——传统的数据隐私保护方法的研究(差分隐私、数据加密) -3. 当前解决恶意软件数据无标签问题的方案——恶意软件检测与半监督学习的方案(sephew、基准分类器) -4. 当前解决恶意软件数据非独立同分布问题的方案——现有的非独立同分布数据方案(prox?) -5. 联邦学习的隐私保护、半监督学习、非独立同分布等开放问题的解决方案。 +5. 恶意软件检测的机器学习和联邦学习方案。 +6. 当前解决恶意软件数据隐私保护问题的方案——传统的数据隐私保护方法的研究(差分隐私、数据加密) +7. 当前解决恶意软件数据无标签问题的方案——恶意软件检测与半监督学习的方案(sephew、基准分类器) +8. 当前解决恶意软件数据非独立同分布问题的方案——现有的非独立同分布数据方案(prox?) +9. 联邦学习的隐私保护、半监督学习、非独立同分布等开放问题的解决方案。 @@ -44,38 +46,47 @@ 3. 面向恶意软件检测的,基于联邦元学习和增强隐私保护能力的联邦学习框架 论文贡献(到时候再展开或者压缩内容。) -1. 实现了差分隐私,并通过实验验证了差分隐私对参数隐私的保护 -2. 使用了联邦元学习解决了非独立同分布问题 -3. 完成了相关的实验验证。证明了算法的有效性。通过对比,验证了系统的可用性和可扩展性。 -4. 构建了联邦学习框架和恶意软件检测系统。 - 1. 能够使用差分隐私保护用户的隐私, - 2. 能够针对非独立同分布场景,训练机器学习模型。 - 3. 一个恶意软件特征提取和分析工具.恶意软件检测系统包括特征提取模块和模型检测模块。 - 4. 提供了一个训练框架,以及一个可用的模型。 +1. 联邦元学习解决了非独立同分布问题。 + 1. 完成算法,理论上的证明和解释。 + 2. 完成了相关的实验验证。证明了算法的有效性。 +2. 联邦差分隐私解决了隐私保护问题 + 1. 完成算法,理论上证明了隐私的合理性。 + 2. 并通过实验验证了差分隐私对参数隐私的保护 + +3. 构建了联邦学习框架和恶意软件检测系统。 + 1. 实现了文章的两个算法和多个可选的算法。能够使用差分隐私保护用户的隐私,能够应对非独立同分布场景。 + 2. 一个恶意软件特征提取和分析工具.恶意软件检测系统包括特征提取模块和模型检测模块。 + 3. 提供了一个训练框架,以及框架中的模型和算法。通过对比,验证了系统的可用性和可扩展性。 ### 1.4 论文结构 ## 第二章:理论基础和关键技术研究 -### 2.1 恶意软件检测的原理 +### 2.1 Android恶意软件检测的原理 -1. 安卓操作系统 -2. 安卓安全机制 -3. 安卓反编译工具和原理。自己做的部分不包括这些工具,而是利用这些工具提取的特征组合的样式。 +1. 安卓操作系统、安卓安全机制、安卓反编译工具和原理。自己做的部分不包括这些工具,而是利用这些工具提取的特征组合的样式。 +2. 特征提取的方法 +3. 各种神经网络模型 +4. 常见的恶意软件检测手段 -### 2.1 联邦学习原理与联邦平均算法 + +### 2.2 联邦学习原理与联邦平均算法 > 联邦学习的基础原理。联邦学习的实现方案。联邦学习的分类和数学表示。联邦学习中的开放问题。 -### 2.2 差分隐私的原理 +### 2.3 差分隐私的原理 > 差分隐私、同态加密方法。实现了多方安全计算。 -### 2.3 非独立同分布原理 +### 2.4 非独立同分布原理 > 非独立同分布的原理、表示方法(衡量标准)、产生的影响(论证非独立同分布是联邦学习解决问题中的关键问题。) > 对非独立同分布的数学的描述。 -### 2.4 元学习原理(放到算法那一章) +### 2.5 元学习原理(放到算法那一章) -### 2.5 数据处理 + + +## 第三章:基于贡献度和元学习的联邦学习算法 + +### 3.1 数据处理 #### 2.5.1 恶意软件特征去提取 @@ -93,22 +104,27 @@ #### 2.5.3 非独立同分布数据集的设置 -### 2.6 神经网络模型 +### 3.2 神经网络模型 + +### 3.2.1 某神经网络的原理 + +### 3.2.2 某神经网络的应用 + +------------------------------------------------------------------ + +### 3.3 非独立同分布问题的建模 - - -## 第三章:基于贡献度和元学习的联邦学习算法 - -### 3.1 非独立同分布问题的建模 - - -### 3.2 基于贡献度的聚合方法 +### 3.4 基于贡献度的聚合方法 * 能够衡量用户的贡献度的方法 -### 3.3 基于贡献度和元学习的联邦学习算法 + + +### 3.5 基于贡献度和元学习的联邦学习算法 + + ## 第四章:基于差分隐私的联邦学习算法 @@ -117,15 +133,13 @@ ### 4.2 基于差分隐私的联邦学习算法(算法,加入到整体的联邦学习框架中) ### 4.3 隐私保护的验证方法(从理论上证明,隐私保护的准确性) +### 4.4 实验验证 +#### 4.4.1 实验环境 +#### 4.4.2 实验设置 +#### 4.4.3 实验结果 +#### 4.4.4 实验结论 -## 第五章:恶意软件检测算法的实验与结果 - - -### 5.1 实验环境 -### 5.2 实验设置 -### 5.3 实验结果 -### 5.4 实验结论 @@ -135,6 +149,8 @@ ### 6.2 系统详细设计 + + > 存在多个功能模块。按子系统讲解。需要起个合理的名字。 > 服务端子系统 > * 服务注册和发现模块 @@ -163,7 +179,9 @@ 1. 各个模块的功能测试 2. 系统整体的集成测试 3. 最终的界面展示 -## 第七章:结论 + + +## 第六章:结论 > 3个研究内容。 ### 基于贡献度和元学习的联邦学习算法 @@ -172,6 +190,11 @@ ### 基于微服务的恶意软件检测系统 + + +一下内容是多次修改中存在的问题: + + ----------------------------