前言
尝试安卓入门,网上没有全流程的基础教程,自己拼凑了多个教程,总体上比较详细。希望能提供帮助
整体思路是,先查询apk信息,然后脱壳,然后反汇编出jar包,最后逆向出源代码。
工具分别为apkscan-pkid、frida-dexdump、dex2jar、JD GUI 下载路径在后文给出。
apkscan-pkid 查壳
[1198]ApkScan-PKID 查壳工具_安卓查壳_周小董的博客-优快云博客
apk文件其实就是个归档文件压缩包,把应用相关的源码、资源文件、配置文件等等都归档打包,直接解压之后就能得到app的dalvik指令集dex文件,然后再反编译为smali,还可以再反编译为Java,这样就几乎等同于拿到了app就能拿到可读性还蛮清晰的源码。
Android Dex文件加壳原理:Android APK加壳过程中,牵扯到三个角色:加壳程序(加密源程序为解壳数据、组装解壳程序和解壳数据)、解壳程序(解密解壳数据,并运行时通过DexClassLoader动态加载)、(源程序)需要加壳处理的被保护代码
Dex文件结构:Dex文件结构_Jack_Jia的博客-优快云博客
APK加壳原理简述:APK加壳原理简述_amurocrash的博客-优快云博客
Android APK加壳技术方案【1】:Android APK加壳技术方案【1】_android 加壳保护_Jack_Jia的博客-优快云博客
Android APK加壳技术方案【2】:Android APK加壳技术方案【2】_need invoke bind before use_Jack_Jia的博客-优快云博客
Android4.0内存Dex数据动态加载技术:Android4.0内存Dex数据动态加载技术_Jack_Jia的博客-优快云博客
ApkScan-PKID 查壳工具更多请访问:www.legendsec.org
下载: 百度网盘 请输入提取码 密码: wefd
ApkScan-PKID查壳工具+脱壳(搬运) - 『逆向资源区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
Frida-dexdump脱壳
[原创]frida-dexdump简单脱壳--菜鸟教程,大神勿喷-Android安全-看雪-安全社区|安全招聘|kanxue.com
frida-dexdump 真机&模拟器 一键安装+执行 - 简书
记第一次frida-dexdump脱壳 - 『移动安全区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
前置
ADB安装
adb的全称为Android Debug Bridge,就是起到调试桥的作用
adb是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的android设备(如G1手机). 它的主要功能有:
* 运行设备的shell(命令行)
* 管理模拟器或设备的端口映射
* 计算机和设备之间上传/下载文件
* 将本地apk软件安装至模拟器或android设备
windows下载安装adb(极其简单)_adb工具下载windows-优快云博客
配置环境变量
E:\adb\platform-tools
ADB连接Android设备
参考ADB连接Android设备的三种方法_adb怎么连接_c1063891514的博客-优快云博客
连接方式有三种方法:
一、WiFi连接(手机与pc同一个局域网下)
与电脑在同一局域网内,Android设备连接WiFi,然后adb命令#adb connect
二、USB数据线连接
此种连接要有相应的驱动才行(应该安装phoenixsuit就可以通过数据线来通过adb连接设备,有的不用安装)https://download.youkuaiyun.com/download/c1063891514/10589989
三、串口连接
使用串口设备与电脑连接。
ADB连接夜神
【新手指导】夜神安卓模拟器adb命令详解_夜神安卓模拟器新手帮助页
安装夜神安卓模拟器后,电脑桌面会有“夜神模拟器”的启动图标,鼠标右键--打开文件所在的位置,就会进入***\Nox\bin,比如小编的路径是C:\Program Files (x86)\Nox\bin,然后可以在该路径下找到nox_adb.exe
E:\Nox\bin 这里也有一个自带的adb
如果指定在62001 上安装一个apk,那么请输入:adb -s 127.0.0.1:62001 install D:\\QQ.apk
输入nox_adb.exe connect 127.0.0.1:62001即可以连接到adb
打开夜神模拟器,打开设置,调成手机模式,初次进入的话,进入设置,点击版本号5次,可以激活使用开发者模式,进入后打开USB调试功能
adb connect 127.0.0.1:62001
ADB使用
adb使用-详细教程(Awesome Adb)_action":"bind_device","info":{"model_number":"s10"_Deryou的博客-优快云博客 这个文章内容很多
adb start-server adb kill-server adb version adb devices //查询已连接设备/模拟器 adb shell pm list packages //所有应用 adb shell pm list packages -s //系统应用 adb shell pm list packages -3 //第三方应用 adb shell pm list packages mazhuang //包名包含字符串 mazhuang
执行adb shell后执行getprop ro.product.cpu.abi获处理器架构
安装frida-dexdump
pip3 install frida-dexdump -i http://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
速度还是挺慢的,在下图这里卡了很久
换成pip3 install frida-dexdump
A.frida-16.1.4-cp37-abi3-win_amd64.whl.metadata
B.X86架构
C.选择server
D.选择android
根据上述在Releases · frida/frida · GitHub选择
frida-server-16.1.4-android-x86.xz
下载后解压。执行
E:\downloads\frida-server-16.1.4-android-x86 adb push .\frida-server-16.1.4-android-x86 /data/local/tmp
然后adb shell后执行 chmod 777 frida-server-16.1.4-android-x86 给可执行权限。
adb shell上运行frida-server。需要root身份(su)运行。
cd /data/local/tmp ./frida-server-16.1.4-android-x86
windows端执行脱壳命令 :
frida-dexdump -U -f com.app.pkgname
frida-dexdump 参数:\
-o OUTPUT, --output OUTPUT Output folder path, default is './/'.\
-d, --deep-search Enable deep search mode.\
--sleep SLEEP Waiting times for start, spawn mode default is 5s.
下面要找一个测试的app来脱壳
ctf例题或者教程,搜索
CTF逆向-[网鼎杯 2020 青龙组]bang-安卓脱壳逆向:frida-dexdump导出得到源码_serfend的博客-优快云博客
[网鼎杯 2020 青龙组]bang
先测试下是否有壳。
E:\downloads\ApkScan-PKID查壳工具
先把apk放到模拟器里面
直接拖过去就可以
frida-dexdump -FU 导出当前模拟器中前台运行的应用。 frida-dexdump -U -f com.app.pkgname 导出指定包名的应用
发现导出前台失败了,那试一下指定包名
adb shell pm list packages -3
先看一下第三方的包 : package:com.example.how_debug
frida-dexdump -U -f com.example.how_debug
报错:Failed to spawn: need Gadget to attach on jailed Android; its default location is: C:\Users\ali\AppData\Local\Microsoft\Windows\INetCache\frida\gadget-android-arm64.so
搜索发现是 因为frida server没有正常启动
因为刚刚重启了一下模拟器,所以重新启动frida server
adb shell >cd /data/local/tmp >./frida-server-16.1.4-android-x86
frida-dexdump默认路径:Output folder path, default is './/'
./how_debug
find / -name "how_debug"
没找到,但找到了https://github.com/hluwa/frida-dexdump、
深入 FRIDA-DEXDump 中的矛与盾 后续进行学习
本打算重新指定目录跑一下
frida-dexdump -o /data/local/tmp -U -f com.example.how_debug
发现日志里面写了,存储在本机上。
到这一步,脱壳就算完成了。
下一步是逆向出源码
d2j-dex2jar.bat转换为jar包,然后用jd-gui.exe得到源码
dex2jar
下载https://github.com/pxb1988/dex2jar
E:\000CTF工具\dex2jar-v2.3
d2j-dex2jar.bat
./d2j-dex2jar.bat file\classes.dex
打印了很多日志。
生成了classes-dex2jar.jar
JD GUI
下载:
https://github.com/java-decompiler/jd-gui/releases
分别是jar包版和exe版本。
E:\000CTF工具\jd-gui-1.6.6-min.jar
可以把之前的classes-dex2jar.jar拖过来
flag{borring_things}