2.1 Android系统架构

1、应用程序层 平时所见的一些java为主编写的App

2、应用程序框架层 应用框架层为应用开发者提供了用以访问核心功能的API框架

android.app:提供高层的程序模型和基本的运行环境。

android.content:包含对各种设备上的数据进行访问和发布。

android.net:提供帮助网络访问的类,超过通常的java.net.接口。

android.os:提供了系统服务、消息传输和IPC机制。

android.provider:提供访问Android内容提供者的类。

android.telephony:提供与拨打电话相关的API交互。

android.view:提供基础的用户界面接口框架。

android.util:涉及工具性的方法,例如时间日期的操作。

3、C、C++本地库和Android运行时环境

什么是运行时? 运行时就是一个供操作系统使用的系统,它负责将你用高级语言(比如 Java)编写的代码转换成 CPU/处理器能够理解的机器码 Android运行时(runtime)与库位于相同的层,ART和Dalvik都算是一种Android运行时环境,或者叫做虚拟机 Linux内核的上层是Android的本地库,这些库由c/c++编写 4、Linux内核与驱动层 最底层由Linux内核组成 Android的内存管理、进程管理、网络协议栈、驱动模型和安全等主要的系统服务依赖于Linux

2.2 四大组件

1、Activity  

一个Activity通常就是一个单独的屏幕(窗口)  

Activity的生命周期   

onCreate()创建   

onStart()启动   

onResume()运行   

onPause()待机   

onStop()停止   

onDestroy()销毁

2、Service  

Services 服务简单来说就是剥夺界面的Activity,Service一直运行于后台,不会与用户交互,可用来处理一些耗时的任务  它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里面,其它的组件可以绑定到一个服务(Service)上面   

Service的生命周期,

IBinder onBind(Intent intent) 该方法是Service必须实现的一个方法,参数为意图,返回一个IBinder对象

void onCreate() 当Service第一次被创建后,系统将立即回调该方法

void onDestory()当Service被关闭之前会回调该方法

3、Broadcast Receiver

广播接收者  Broadcast 广播是用于应用程序之间传输信息的机制  

Broadcast Receiver 广播接收者对发送出来的广播进行过滤接收并响应

4、Content Provider  

应用程序共享的空间,用于在不同的应用程序之间实现数据共享的功能

2.3 五大存储

1、SharedPreferences存储  

以XML文件形式存储  

SharedPreferences存储路径:/data/data/包名/shared_prefs/

2、本地存储  

getDataDirectory() 获取到Android中的data数据目录(sd卡中的data文件夹)  

getDownloadCacheDirectory() 获取到下载的缓存目录(sd卡中的download文件夹)  

getExternalStorageDirectory() 获取到外部存储的目录 一般指SDcard(/storage/sdcard0)  

getExternalStorageState() 获取外部设置的当前状态 一般指SDcard  

getRootDirectory() 获取到Android Root路径

3、SQLite数据库存储  

SQLite是一款轻量级的关系型数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能  Android 提供了一个SQLiteOpenHelper 帮助类,借助这个类就可以非常简单的对数据库进行创建和升级  SQLite数据库存储路径:/data/data/包名/database/  

4、ContentProvider存储  

一个程序可以通过实现一个ContentProvider的抽象接口将自己的数据完全暴露出去  而且ContentProviders是以类似数据 库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”  那么外界获取其提供的数据,也就应该与从数据库中获取数据的操作基 本一样,只不过是采用URI来表示外界需要访问的“数据库”  大多数ContentProvider使用Android文件系统或者SQLite数据库来保持数据,但是也可以以任何方式来存储

5、网络存储

2.4 六大布局

1、LineartLayout 线性布局

2、FrameLayout 帧布局

3、TableLayout 表格布局

4、RelativeLayout 相对布局

5、AbsoluteLayout 绝对布局

6、GridLayout 网格布局

2.5 arm架构和x86架构

Android模拟器如夜神之类的,可以模拟运行arm,手机一般是arm,但是也不排除例外

2.6 adb 常用指令

【1】kill-server  杀死adb服务

【2】start-server 开启服务

【3】adb install aa.apk 快速安装一个apk

【4】adb uninstall +应用的包名 快速卸载一个Android应用

【5】adb shell 进入手机终端

【6】adb pull test.txt 把一个文件从终端拉出来

【7】adb push test.txt /mnt/sdcard 把一个文件从电脑推到手机

【8】 cat 命令

查看文件内容 cat demo.txt |grep aaa

cat /proc/[pid]/maps 查看当前进程的内存映射信息 比如加载了那些so和dex cat /proc/[pid]/status 查看当前进程的状态信息 比如 TracerPid TracerPid是否为0,不为0表示该进程已经被ptrac cat /proc/[pid]/net/tcp/tcp6/udp/udp6 查看当前应用的端口号信息

【9】touch/echo 命令 创建文件

adb shell dumpsys activity top  查看当前应用activity的信息。

adb shell dumpsys 把当前系统所以运行的四大组件打印出来

adb jdwp 查看设备中可以被调试的应用的进程号

【10】ps 说明:查看设备的进程信息,货值指定进程的线程信息。 用法 :ps |grep 过滤的内容 ps -t [pid]

【11】 am start -D(debug运行) -n pkgname/pkgname.activityname 启动一个应用

【12】am broadcast -a [广播动作]

【13】 adb forward [(远程端)协议:端口号] [(设备端)协议:端口号]  端口转发,IDA调试时用

2.7 AndroidManifest.xml解析

一般APP的主入口文件就是这个文件,通过它可以启动APP,还有一些敏感的信息保存在里面

2.8 使用burp suite 抓APP HTTPS包

下载burp suite 安装包,监控本机IP

打开手机浏览器访问IP:8080,下载安装burp suite的证书,打开APP即可在burp suite上看到数据包

备注:对于有些品牌的手机,无法加载用户导入的证书,需要root设备才可以,

Android 7.0之后只信任系统的证书,无法加载用户自定义的证书,解决办法,root设备,将证书名称base64之后,放在跟证书路径下即可

2.9 drozer框架

1.、安装

第一步:从http://mwr.to/drozer下载Drozer (Windows Installer)

第二步:在Android设备中安装agent.apk adb install agent.apk

2、使用 连接上模拟器/真机

nox_adb.exe connect 127.0.0.1:62001

端口转发,转发到Drozer使用的端口31415 adb forward tcp:31415 tcp:31415

开启Drozer console drozer console connect

3、测试 确定攻击面

run app.package.attacksurface com.tencent.qqmusic

Attack Surface: 15

activities exported 13

broadcast receivers exported

0 content providers

exported 7 services exported

2.10 自动化分析Inspeckage框架

1、下载安装

https://github.com/ac-pm/Inspeckage#information-gathering

2、使用 端口转发

adb forward tcp:8008 tcp:8008

127.0.0.1:8008

Settings Disable FLAG_SECURE

禁止截屏开关 SSL uncheck 是否关闭SSL验证

Logcat 实时查看该app的logcat输出

Tree View 可以实时浏览app的数据目录并直接下载文件到本地

Package Information 应用基本信息(组件信息、权限信息、共享库信息)

Shared Preferences LOG:app XML文件读写记录;

Files:具体XML写入内容

Serialization 反序列化记录

Crypto 常见加解密记录(KEY、IV值)

Hash 常见的哈希算法记录

SQLite SQLite数据库操作记录

HTTP HTTP网络请求记录

File System 文件读写记录

Misc. 调用Clipboard,URL.Parse()记录 WebView 调用webview内容

IPC 进程之间通信记录

+Hooks 运行过程中用户自定义Hook记录

2. 移动安全渗透测试-(Android安全基础)的更多相关文章

  1. Android渗透测试Android渗透测试入门教程大学霸

    Android渗透测试Android渗透测试入门教程大学霸 第1章  Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...

  2. 渗透测试工具sqlmap基础教程

    转载请注明出处:http://blog.csdn.net/zgyulongfei/article/details/41017493 作者:羽龍飛 本文仅献给想学习渗透测试的sqlmap小白,大牛请绕过 ...

  3. Web渗透测试笔记(基础部分)

    信息收集: dns信息收集 格式:dns... -参数 域名 -参数 示例: root@xxSec:~# dnsenum baidu.com root@xxSec:~# dnsenum -f dns. ...

  4. IOS渗透测试第一步-基础知识统一放送

    原文: http://www.websecgeeks.com/2017/04/ios-application-pentesting-part-3.html http://www.websecgeeks ...

  5. 实验吧 这个看起来有点简单!&渗透测试工具sqlmap基础教程

    题目地址:http://ctf5.shiyanbar.com/8/index.php?id=1 下载sqlmap,拖到python安装文件夹下面,在桌面创建sqlmap的cmd快捷方式,都不赘述. 教 ...

  6. 2019-9-19:渗透测试,HTML基础学习,html绘制表格

    1,受理员业务统计表 效果图: 代码: <!DOCTYPE html><html><head> <title>表格1</title>< ...

  7. metasploit 一款开源的渗透测试框架

    渗透神器漏洞利用框架metasploit from: https://zhuanlan.zhihu.com/p/30743401 metasploit是一款开源的渗透测试框架软件也是一个逐步发展与成熟 ...

  8. chapter1 渗透测试与metasploit

    网络对抗技术课程学习 chapter1 渗透测试与metasploit 一.读书笔记 二.渗透测试 通过模拟恶意攻击者的技术与方法进行攻击,挫败目标系统安全控制措施,取得访问控制权,并发现具备业务影响 ...

  9. Android App安全渗透测试(一)

    一.            实验环境搭建 1.      安装JDK 2.      安装Android Studio 3.      模拟器或真机 我的是夜神模拟器和nexus 工具 Apktool ...

  10. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

随机推荐

  1. Vue+Webpack之 代码及打包优化

    本文重点介绍Vue单页面应用的优化手段: 异步加载 面切换时加loading特效 点击延迟 inline manifest 逻辑代码优化 依赖包体积优化 cdn引用 Vue代码优化 异步加载 所谓的异 ...

  2. ImportError: No module named flask 导包失败,Python3重新安装Flask模块

    在部署环境过程中,通过pip install -r requirements.txt安装包,结果启动项目时总是报错,显示没有flask模块,通过pip install flask还是不行,于是下载fl ...

  3. JavaScript中常用的字符串方法

    1. charAt(x) charAt(x)返回字符串中x位置的字符,下标从 0 开始. //charAt(x) var myString = 'jQuery FTW!!!'; console.log ...

  4. Leetcode题解 - DFS部分题目代码+思路(756、1034、1110、491、721、988)

    756. 金字塔转换矩阵 """ 学到的新知识: from collections import defaultditc可以帮我们初始化字典,不至于取到某个不存在的值的时 ...

  5. 简单了解一下:var 、let、const

    var 重新赋值,重新定义,作用域 属于:function scope: let 声明的变量只在 let 命令所在的代码块内有效,Block scope. const 声明一个只读的常量,一旦声明,常 ...

  6. PlayJava Day030

    1.实例化Class类对象 //第一种,可靠高效 Class c0 = String.class ; //第二种,使用对象 Class c1 = "zhangsan".getCla ...

  7. ARTS改版啦,在改变中前行

    这次打卡,稍微进行了一次改版,在算法和英文文档上进行了拆分,具体的内容在前两天的文章里已经输出,所以在这篇上针对这两块做了一个汇总. 当然,技巧方面的还是在这里先输出,后续再考虑整改吧.循序渐进地上升 ...

  8. 邬江兴院士:工业互联网安全&拟态防御

    尊敬的郑院士.曹书记.张秘书长,各位学术界的同仁们,很高兴在第一届工业互联网学术专题论坛上发言.我今天想谈的问题是工业互联网,这个概念很热,前景也很美好,很诱人.但是我认为工业互联网的安全挑战更严峻, ...

  9. vue-router精简demo

    cnpm install vue-router --save-dev 或者 cnpm install vue-router --save 全局引用VueRouter import VueRouter ...

  10. Andriod安卓下开发UHF读写器

    随着在Andriod设备上使用UHF读写器变得越来越广泛,友我科技独立研发了UHF读写器的android开发包,使用此开发包,工程师只需在工程中导入jar包,使用java语言就可以轻松的开发出Andr ...