赞
踩
目录
具体功能包括安装卸载应用程序、执行shell命令、查看日志、检查SQLite数据库等
包括三部分
adb的工作原理图:
常用命令:adb devices 检查设备机器状态
adb install 360vulscanner.apk 安装应用
adb shell 进入shell
adb uninstall com.qihoo360.leakscan 写在用用
1. Windows环境下将hootsuite.apk改名为hootsuite.zip
2. 将hootsuite.zip文件解压缩
3. 解压后,可以看到一个META-INF目录,在该文件夹下有三个文件:
(1)MANIFEST.MF文件
这是摘要文件。程序遍历APK包中的所有文件,对非目录、非签名文件的文件,逐个用SHA1生成摘要信息,再用Base64进行编码。
(2)CERT.SF文件:这是对摘要的签名文件。
(3)CERT.RSA文件:保存了公钥、加密算法等信息,还包括对CERT.SF中的内容的用私钥进行加密之后的值。
4. 查看Androidmanifest.xml文件的sha-1哈希值,并复制
5. 将Androidmanifest文件的sha-1哈希值转换为base64编码(在线编码或找一个编码器工具)
6. 用OpenSSL工具从签名文件cert.rsa中查看签发人、主体、公钥、签名信息。
openssl pkcs7 -inform DER -in CERT.RSA -noout -print_certs -text
1.两种不同模式的签名:
Android Studio 针对Debug模式提供了调试签名,用于调试时的应用签名。Debug模式使用默认的debug.keystore密钥库进行签名
Android Studio 针对Release模式提供了发布签名用于正式发布时对应用进行签名。需要自己创建密钥库
2.别名(alias)区分不同密钥,签名时,使用密钥库中的一个指定别名的密钥进行签名
3.进程沙箱原理
-Unix/Linux假设用户之间不可信。
-Android假设软件之间不可信。Android扩展了Linux内核安全模型的用户权限机制,将用户隔离机制扩展为应用程序隔离。
-Linux中使用用户标识(UID)识别一个用户。Android中使用一个UID识别一个应用程序。在安装程序时向其分配UID。应用程序存续期内,其UID保持不变。
-权限机制根据UID限制用户对资源和设备的访问。
-不同应用程序分属不同用户,应用程序运行于自己独立的进程空间,UID不同的程序自然形成资源隔离,生成了一个操作系统级别的应用程序“沙箱”。
4.查询当前进程情况的命令:ps,可以看到app应用都分配了一个user(UID)属性,在不卸载这个应用之前,该属性保持不变,非系统应用user都以u0_开头命名,之后的编号就是uid。但是pid是进程id,结束进程重新打开后就会变。
5.杀死程序的命令:kill
6.共享UID机制原理
-使具备信任关系的应用程序可以运行于同一进程空间(共享资源)
-android中PID和UID都是用来识别应用程序的身份的,但UID可以用来为不同程序共享数据
-信任关系由程序应用签名确定,并在Manifest.xml文件中指出使用相同UID
-在Android 中要通过UID共享数据只需在程序a和b中的Manifest文件配置即可
-android:sharedUserId="com.share"
7.实现共享UID的方法:
使用ps命令查看ShareIdA与ShareIdB的UID。
在ShareA和ShareB各自的AndroidManifest.xml文件中加入android:sharedUserId="com.share";
在虚拟机上删除ShareA和ShareB后,将新的ShareA和ShareB依次装入虚拟机并执行;
执行ls /data/data/com.sms.sharea,看看这次是否存在fileb文件;
如存在使用ls -l 命令查看文件的所有者和组用户是谁;
使用ps命令查看ShareA与ShareB的UID。
1.应用所需的权限和其他程序调用本程序所需的权限都在安装程序包(apk文件)中的AndroidManifest.xml声明
2.应用权限声明
-AndroidManifest.xml声明权限的写法
<uses-permission android:name=“权限名”/>
-一般写在<application >元素的前面
3.应用权限分类:普通权限(不会威胁到用户安全和隐私,系统自动授权)和危险权限(可能会触及用户隐私或者对设备安全性造成影响的权限,必需用户手动授权才可,否则程序无法使用相应功能)
4.危险权限中如果同一组的任何一个权限被授权了,其他权限也自动被授权。例如:WRITE_EXTERNAL_STORAGE被授权了,app也有READ_EXTERNAL_STORAGE权限了。
5.串谋权限攻击:
6.访问其它程序的组件,其他程序组件自定义权限控制。正常情况下,程序没有声明特定的访问权限,就无法访问这些资源。
但通过其它程序中可访问资源的Android组件,就有可能突破访问控制,从而提升程序本身的权限,这种权限提升的攻击方式称为串谋权限攻击。
串谋权限攻击的原理如图所示 :
方法:自定义权限
1.短信拦截的方法有?监听数据库变化方式监听短信和设置默认SMS app
2.监听数据库变化方式监听短信 实现方法:
①监听短信数据库的变化,添加删除修改,变化的时候会回调onChange方法
②提取刚刚变化的那条短信的内容
③ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。
3.设置默认SMS app
修改AndroidManifest:设置短信获取的权限,包含4个权限,请查看AndroidManifest不同之处
增加4个类:SmsReceiver,MmsReceiver,
ComposeSmsActivity,HeadlessSmsSendService,并且这四个一个都不能少
设置SMS默认APP
1.代码混淆:粗略地讲,就是将代码进行加密,使得别人拿到你的apk文件进行反编译后也无法获取到正确的代码(比如说,变量名、类名等被替换为A、B、C、D等),这样,别人就看不懂你这个类或者这个变量是什么意思了
2.代码混淆方法:配置build.gradle,把minifyEnabled设置为true并配置proguard-rules.pro
3.如果没有混淆,从apk可以很容易的反编译出 .java文件:
4.大部分的apk反编译工具(dex2jar、apktools、jui等)都是对dex文件进行反编译,将dex文件反编译成smail,然后再转化成class文件进行阅读和修改。如何保护apk文件?
解决办法:
Dex加固:对源Apk进行加密,然后在套上一层壳。
对APP进行安全加固,有利于:
(1) 保护应用不被静态分析和动态调试
(2) 保护应用内的敏感存储数据安全
(3) 防止应用被进程注入
(4) 防止应用被二次打包
(5) 保护知识产权
(6) 保护开发者收益
(7) 保护品牌形象及信誉
5.应用加固:dex加固主要是防止被静态反编译,进而获取源码并修改。
用壳dex替换原始dex文件之后,用反编译工具反编译apk文件,只能看到壳程序的class文件,看不到apk本身的class文件。对dex文件进行加密,这样即使第三方拿到了dex文件,因为无法解密,也就无法对其进行解析和分析。
6.应用加固步骤:
准备源APK,就是需要加固的APK
准备壳APK
获取壳APK中的Dex文件classes.dex
将源APK与壳Dex文件合并生成新的classes.dex
将新的 classes.dex 替换进入壳APK,生成加壳后的新APK
对加固后的apk文件进行签名,apk加固完成。
对齐:使APK包内未压缩的数据有序排列对齐,从而减少APP运行时内存消耗
在加固的过程中需要三个对象:
1、需要加密的Apk(源Apk)
2、脱壳程序Apk(负责解密Apk工作)
3、加壳程序(将源Apk进行加密和壳Dex合并成新的Dex)
7.V1签名与V2签名
V1签名:密钥来自JDK(密钥库:jarsigner), 对zip压缩包的每个文件进行验证, 签名后还能对压缩包修改(移动/重新压缩文件)
V2签名:来自Google(密钥库:apksigner), 对zip压缩包的整个文件验证, 签名后不能修改压缩包
1.Android的四大组件
2.点击Button后的活动按钮是什么
3.同一进程空间的的条件
4.运行a程序,关闭a程序再运行a程序,两次运行的uid和pid有无变化
5.脱壳程序还没运行,此时想运行源文件apk,要用的方法
6.短信拦截设置默认Sms App必须要加的四个类有哪些
7.安卓使用的数据库是哪个?
8.数字证书包括哪些内容?
9.数字签名的理由有哪些
1.控制不同应用之间信任的是什么
2.文件系统的四个分区
3.META-INF目录文件夹下的三个文件有哪些
4.签名的debug模式使用的密钥库名称
5.获得root的两种方法
1.安卓安全的分类
2.安装与卸载的adb命令
3.安卓设备上的文件移动到电脑上的步骤
1.短信拦截的原理
2.onReceive方法代码补充:继承的父类是什么、Toast显示信息、拦截代码
APKTool分析crackme的步骤
(只有部分)
1.命令__获取root权限
2.保存联系人的数据库名字
3.签名是什么加密
4.Debug模式下用的密钥库是___
5.拦截短信的两种方式
6.v2签名用的密钥库
画图说明串谋权限攻击
手机里一个用户应用的数据库文件(给了路径和名字)复制到电脑上的步骤
用APKTool静态分析方法登录Crackme的过程
壳程序和加壳程序的作用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。