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. php使用微信登录

    1.第一步 $hosturl = urlencode('');//异步回调地址 $wechatInfo = WechatInfo::get_wechat(); //查询appid $url = &qu ...

  2. SpringCloud-创建服务消费者-Ribbon方式(附代码下载)

    场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  3. 1w+的心路历程

    鬼知道我是如何坚持下来的,如果非要找个理由,那或许是所谓的热爱. 公众号转眼间写了三年.写的内容围绕着安卓技术,源码剖析,生活感悟,职场人生. 很庆幸的是,得到大家的支持,每一条留言都会是一次交流,看 ...

  4. BIM工程信息管理系统搭建-系统功能需求

    BIM工程信息管理系统功能需求 该系统是真实存在项目,项目于2013年开始研发到2014年初完成,按照当时技术能力和国内BIM现状,现在BIM技术已比之前好多了,不管是建模.展示等.均提高了不少,本博 ...

  5. <深度学习>Tensorflow遇到的坑之一

    AttributeError: module 'tensorflow' has no attribute 'random_normal' AttributeError: module 'tensorf ...

  6. localStorage和sessionStorage的共同点和区别

    共同点: 1.localStorage和sessionStorage都是用来存储客户端临时信息的对象. 2.他们均只能存储字符串类型的对象. 3.不同浏览器无法共享localStorage或sessi ...

  7. C# Parallel 多线程并发

    Parallel并发执行多个任务 多线程的,主线程会参与计算---阻塞界面等于TaskWaitAll+主线程计算 常用方法 1.Invoke  尽可能并行执行提供的每个操作 Console.Write ...

  8. vivo web service:亿万级规模web服务引擎架构

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ovOS0l9U5svlUMfZoYFU9Q vivo web service是开发团队围绕奇点 ...

  9. UWP GridView切换数据时界面闪动

    在选择数据时,比如1-10集,和11-20集切换时,GridView需要切换对应的数据,但是会发生界面闪动. 这是默认的Item Transition导致的. 可以去掉默认的转换效果. <Gri ...

  10. 计算几何 val.2

    目录 计算几何 val.2 几何单位结构体板子 旋转卡壳 基础概念 求法 模板 半平面交 前置芝士:线段交 S&I算法 模板 最小圆覆盖 随机增量法 时间复杂度 模板 后记 计算几何 val. ...