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. 位域-isa指针

    一.isa指针结构 union isa_t { isa_t() { } isa_t(uintptr_t value) : bits(value) { } Class cls; uintptr_t bi ...

  2. 知识图谱基础之RDF,RDFS与OWL

    https://blog.csdn.net/u011801161/article/details/78833958 https://blog.csdn.net/baidu_15113429/artic ...

  3. wepy框架关闭Eslint语法校验(error More than 1 blank line not allowed no-multiple-empty-lines)

    最近在学习使用wepy框架制作小程序,导入编译的项目后报如下错误(error  More than 1 blank line not allowed  no-multiple-empty-lines) ...

  4. 封装和@property

    封装和@property 一.复习 1.接口类和抽象类 python中没有接口类,有抽象类,abc模块中的metaclass=ABCMeta,@abstructmethod,本质是做代码规范用的,希望 ...

  5. 2019icpc上海站 打星体验,首次感想 D K代码

    暑期训练以来首次参赛,体验还行吧,过程有些战战兢兢. 刚开始以为是正式队,热身赛只过了一题,有很大的压力,正赛前一天晚上才知道是打星队,有点如释重负的感觉.也幸好都是打星队,不然真的有可能打铁,虽然实 ...

  6. 关于独显A卡利用率一直是0不运行的问题

    情况: 独显一直是0,玩游戏时核显,也就是GPU-0快满了GPU-1也是0,跟没有一样,怀疑自己买电脑的时候是不是被骗了. 在高级电源选项中,有个可切换动态显卡->全局设置的选项,设置成最大化性 ...

  7. 本地的个人web网站上线的全过程,供大家参考(PHP,简易的LAMP环境搭建)

    一 : 你需要准备的东西 1.本地能访问的网站,最好是改过host文件和apache的httpd-vhosts.conf,配置过本地域名的那种(减少传到线上出现的问题,文件路径不对呀啥的) 2.一个云 ...

  8. WebShell代码分析溯源(十一)

    WebShell代码分析溯源(十一) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];declare(ticks=1);register_tick_function ( ...

  9. Entity Framework Core Code First 项目实践

    Entity Framework Core Code First 实践 任何一种技术的出现都是为了解决一系列特定的问题,只有了解了技术所要解决的关键问题,才能理解它的真正用途,之后,才能在实践中用好它 ...

  10. epub.js的使用

    epub.js的使用 npm安装 npm install epubjs epub阅读器开发 ePub电子书解析和渲染 生成Book对象 this.book = new Epub(DOWNLOAD_UR ...