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. 爬虫(六):XPath、lxml模块

    1. XPath 1.1 什么是XPath XPath(XML Path Language) 是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. 1.2 ...

  2. Nginx实现负载均衡时常用的分配服务器策略

    场景 Nginx配置实例-负载均衡实例:平均访问多台服务器: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103019576 在 ...

  3. nfs 所有的版本的 RFC 整理; nfs 所有版本对比;

    下面是针对 nfs 所有的版本,我们可以通过不同的RFC 进行详细看其RFC的细节来进行对比: 下面是备忘一些NFS RFC 的链接: https://datatracker.ietf.org/doc ...

  4. [AI开发]DeepStream开发填坑记录

    下面是在deepstream使用过程中碰到的一些坑: (1)Pipeline中的Sink如果需要编码存文件或者推rtmp的流,注意控制编码的参数,编码质量不要太高.否则可能Sink带不动,整个Pipe ...

  5. Azure上的时序见解,Time series insights

    5G来了,广连接(mmTC)可以实现每平方千米100万的连接数(理论值),是4G的10倍,5G网络出现,配合其他技术,空间将在数据意义上剧烈压缩,车联网.智能家居.智能安防.智慧工厂.智慧能源都可能带 ...

  6. Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战

    Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...

  7. visual studio 的快键键(持续更新)

    目录 1. CTRL+ Tab 2. Prop+ Tab 3. CTRL+. 4. 断点相关 5.快速搭建类的构造函数 6.查看需要引用的包 1. CTRL+ Tab 自动生成无参构造函数 2. Pr ...

  8. Java 多线程应知应会

    请简单说说 synchronized 关键字的底层原理 java 说到多线程绝对绕不开 synchronized,很多 java 工程师对 synchronized 是又爱又恨.为什么呢?主要原因包括 ...

  9. 这7个npm命令将帮助您节省时间

    作为JavaScript开发人员,NPM是我们一直使用的东西,并且我们的脚本在终端上连续运行. 如果我们可以节省一些时间呢? 1.直接从npm打开文档 如果我们可以直接使用npm跳转到软件包的文档怎么 ...

  10. C lang: Compound literal

    Xx_Introduction C99 stantard. Upate array and struct a compound literal. Literal is date type value. ...