androguard学习

This commit is contained in:
estomm
2021-12-14 17:16:10 +08:00
parent 5530e6f9e2
commit fbb06e0ee6
16 changed files with 272 additions and 62 deletions

BIN
Python/androguard/1.apk Normal file

Binary file not shown.

BIN
Python/androguard/2.apk Normal file

Binary file not shown.

BIN
Python/androguard/3.apk Normal file

Binary file not shown.

BIN
Python/androguard/4.apk Normal file

Binary file not shown.

BIN
Python/androguard/5.apk Normal file

Binary file not shown.

View File

@@ -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编译后的目标文件.不像J2sejava编译成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",
"* APTannotation 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 型号而划分的,如 ARMARM-v7ax86等。\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
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

View File

@@ -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
## 收获

View File

@@ -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
> 关于系统构建的说明
> *
* [ ] 服务注册与发现
* [ ] 远程协同训练系统的实现

View File

@@ -0,0 +1,4 @@
## 任务
> 要回自己的位置完成这一系列的任务了。
* [ ] drebin相关数据集整理完成。代码跑通。

View File

@@ -0,0 +1,10 @@
## 任务
* [x] 电影整理和下载(规划最近想看的电影)
* [x] 手机照片和表情包的整理
* [x] 双旦计划制定完成
* [ ] androguard教程今天看完
* [ ] 看完两个androguard的工程现有的那个太老了
## 收获

View File

@@ -0,0 +1,26 @@
# 十二月份计划
> 由于十月十一月休息了两个月。已经完全没有时间在进行放松了。所有的东西都已经稳定下来了。工作、感情。我觉得可以心无旁骛的认真工作了。考虑过自己是个什么样的人,喜欢用什么样的方式学习。想要开始拼命,好怀念那种心无旁骛拼命学习的感觉。
> 需要投入大量的时间。每天保证至少有完整的是个番茄钟。每个番茄钟合理分配。
> 工作十分艰难。小玉的数据集、数据集生成和特征处理、算法都基本完成了而且有一些相似的实验可以参考。但是自己从头到尾从数据处理到算法实现再到系统设计与实现都只是一个初步的想法距离完成还有很长的距离要走。所以必然要付出更多的时间。你应该紧张焦虑一些不要把紧张焦虑传递给别人而是push自己更好的前进。别再执迷不悟了你已经没有任何时间用来玩耍了可以用更多的时间来讨论学术问题来一起学习。我觉得why学弟做的非常好也许恋爱并不是花里胡哨的玩耍还有一块学习、一块前进将感情与工作结合起来。
> 自己的问题自己解决。经过几次看病,我发现,自己已经没办法像个孩子一样博取同情和关爱了。以前总会有人悉心的给自己讲解一些东西,可以装傻卖萌装可怜,然后就有人来关心自己,帮自己解决问题,但是现在是个成年人了,也不像可爱的女孩子一样,具有天然的优势,必须得通过自己的说话的技巧、拳头的硬度来解决问题了。
> 果然有一个个矛盾和无数的问题等着自己,只要我们还挨着彼此,就回跨越所有的障碍。
> 十二月的计划,应该按照路程前进,别满脑子都是别的东西了。你的暗示只会把自己搞崩溃。
>
> 不想到最后一脸怂样地面对被人,不想总是一脸无辜的去请求别人的帮助。像个菜鸡弱者。一点都不争气。很烦这种状态。现在就很紧张。每天必须完成固定多的任务,才能回宿舍。可以送她到一半然后自己再工作一会。好害怕因为学习影响跟她的感情。接下来要按自己的节奏试试,用自己一直不想用的老办法。
> 这个月还剩下二十天。看看自己的十一月份计划。把系统除外的东西做完把。尽量多地完成自己的算法融合好自己的系统。把理论部分研究清楚。一月份把系统做的差不多才能安心回家过年。兄弟没时间了。为了毕业为了自己也为了她。只有处理好自己的事情才能让两个人的关系更加稳定如果你每天都在单方向地传递自己的焦虑肯定最后要失去一切。好好干活可以不用每天想着怎么玩可以交流一下怎么工作。想想之前跟w讨论工作的事情。
> 一月份做完系统还要写完论文。只有这样才能安心回家过大年啊。
## 主要任务
### 数据处理
### 模型构建
### 联邦学习实验
### 隐私保护实验

View File

@@ -1,5 +1,4 @@
## 1 Android studio
### 隐私保护
* 可以用来论证Android隐私保护的总要性。
* [隐私权限进行重大更新,采取的措施](https://developer.android.google.cn/privacy/best-practices#minimize_your_use_of_location)

View File

@@ -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 @@
### 基于微服务的恶意软件检测系统
一下内容是多次修改中存在的问题:
----------------------------