安卓测试笔记--工具安装

安卓的文件作用

资源库文件

可以理解为开发的时候需要的函数来源

jar包:和java差不多,SDK也就是有很多函数的jar包

aar包:可以包含如图片类的资源

apk文件

最终产出就是apk文件,他可以用压缩包打开

AndroidMainifest.xml:该文件是用来确定有哪些组件的类似于javaweb的web.xml

​ |-AXML文件是二进制文件,是由AndroidMainifest.xml生成而来是为了提高速度的

class.dex:打包后的运行程序(核心),可能有多个

​ |-odex是Dalvik虚拟机提高dex文件效率的优化后文件,与dex可互相转换

​ |-oat是ART虚拟机提高dex文件效率的优化后文件,与dex可互相转换

res:静态资源如图片样式之类的依赖,包括组件的id值之类的信息,它将格式不同的资源整合统一

META-INF:包含防篡改的签名

安卓编译生成文件流程(怎么生成一个apk文件)

先将布局文件和AndroidMainifest.xml解析生成R.java

解析AIDL接口文件生成java文件

之后把所有生成的java文件来生成class文件

最后将class文件再次编译成安卓虚拟机解析的dex文件

将资源打包生成apk,再进行对其处理加上签名

安卓安装流程(怎么解析一个apk文件)

安卓它系统自身就有一堆activity,安装的时候

先解析apk中的AndroidMainifest.xml,获取包名,logo之类的信息

系统这时候会检测该软件是否安装,没有安装的话,安装界面会弹出信息,和安装,取消的按钮

点击安装检测是否有安装权限,之后就进行安装

最终进行签名,校验

导入证书

好像安卓7.0以上需要系统证书才能抓https,而burp官网交的方法是安装用户证书就不行,可以通过下面方法安装系统证书,需要root

下载burp证书(导出是der格式,安卓需要pem格式),按照以下方法生成证书,然后导入到系统证书

openssl x509 -inform DER -outform PEM -in cacert.der -out cacert.pem

openssl x509 -subject_hash_old -in cacert.pem

得到一个hash  比如:9a5ba575
mv cacert.pem 9a5ba575.0  

adb root
adb disable-verity
adb reboot
adb root
adb remount

然后上传为系统证书
adb push 9a5ba575.0 /system/etc/security/cacerts/

打开手机浏览器会提示证书不信任?可以用xposed的JustTrustMe和TrustMeAlready试试

https://github.com/Fuzion24/JustTrustMe/releases/tag/v.2

https://github.com/ViRb3/TrustMeAlready/releases/tag/v1.11

此时还不信任的话,可能安卓版本过高,建议刷机降级orz

工具安装

drozer

用来抽离,检测app的组件的

首先手机端运行apk

https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk

python2安装

https://github.com/mwrlabs/drozer/releases/download/2.4.4/drozer-2.4.4-py2-none-any.whl

sudo pip2 install drozer-2.4.4-py2-none-any.whl -i https://pypi.python.org/simple
sudo pip2 install twisted

手机连接电脑,电脑运行

adb forward tcp:31415 tcp:31415

作用是将PC端31415端口的数据,转发到手机端31415端口,从而实现PC和手机的通信

然后手机打开app,电脑运行框架

drozer console connect

frida

主要是用来hook程序(加了壳也能hook住函数)和脱壳用

手机配置

下载
https://github.com/frida/frida

找到合适的版本,一般手机都是
frida-server-14.1.2-android-arm64.xz
模拟器就选x86
frida-server-14.1.2-android-arm.xz
frida-server-14.1.2-android-x86.xz

解压,重命名放入手机中,并赋予执行权限
mv frida-server-14.1.2-android-arm64 frida-server
adb push frida-server /data/local/tmp/
adb root
adb shell
chmod 777 /data/local/tmp/frida-server

电脑配置

frida-dexdump是用来脱壳的

pip3 install frida frida-tools frida-dexdump

使用时(adb连接)

手机运行
adb root
adb shell
/data/local/tmp/frida-server

电脑运行
frida-ps -U

xposed

xposed是用来hook的框架,hook我们app不太好用了,但可以使用一些插件还是有必要的

安卓5.0以下

https://repo.xposed.info/module/de.robv.android.xposed.installer

安卓5.0~8.0

https://forum.xda-developers.com/t/official-xposed-for-lollipop-marshmallow-nougat-oreo-v90-beta3-2018-01-29.3034811/

现在的手机基本都是安卓9,安卓10了,在安卓8.1以上不能直接安装,可以使用以下办法

https://www.bilibili.com/read/cv5068761/

这里以可以vpn代理的root手机为例

手机安装 酷安应用商店
https://www.coolapk.com/

手机酷安应用中安装Magisk Manager

手机挂上代理

进入Magisk 直接下载安装Magisk,安装后重启

重启挂上代理

进入Magisk选择模块,搜索Riru(作者Rikka)下载,但是这里有问题,最新版的Riru-EdXposed不兼容,所以要下载老版本的Riru
https://github.com/RikkaApps/Riru/releases(目前建议v21.3)

下载好后把zip通过adb传到手机,或者通过QQ传到手机都可以

手机在Magisk模块中最上面选择从本地安装,选择下载的包,即可(暂时不要更新)

安装完后在手机Magisk再安装 Riru-EdXposed,需要代理

安装EdXposed Manager
https://github.com/ElderDrivers/EdXposedManager/releases

重启即可

drony

用于代理的工具,有些流量不走wifi的代理,就通过该工具统一走全局代理,全局代理地址为burp的监听端口

https://files.cnblogs.com/files/lulianqi/Drony_102.apk

使用时选择对应的wifi,之后配置wifi的ip和port,有一点非常要注意,因为burp只是抓http流量,所以代理模式一定要选http模式

脱壳技巧

查壳

ApkScan-PKID.jar

该工具可以查国内的加壳工具

https://github.com/QuanGe/QuanGe.github.io/raw/master/ApkScan-PKID.jar

脱壳

frida-dexdump

该工具脱免费壳可以的,企业版壳一般脱不掉,手机上可以脱,模拟器会出问题脱不掉(MUMU mac版)

adb连接手机
adb root
adb shell

手机运行frida-server
cd /data/local/tmp
./frida-server

电脑运行
找到需要脱壳的程序
frida-ps -U 

比如找到了com.example.myapp
frida-dexdump -n com.example.myapp

此时会生成很多dex文件,一个个翻吧~

逆向分析工具

52上有很多工具

这里推荐jeb和jadx

https://down.52pojie.cn/Tools/Android_Tools/

直接用工具打开apk即可,如果发现里面的代码有加载so之类的文件,内容也看不懂估计就是加壳了的

posted @ 2020-12-04 11:14  sijidou  阅读(817)  评论(0编辑  收藏  举报