一、所需工具
- 一台已Root的手机(不建议安卓版本高于8.1,IOS不会)
- xposed、xposed Install(XAppDebug、Build PropEnhancer、JustTrystMe…)
- charles(或其他抓包http工具)、Wireshark(socket、tcp、ip、tcp/ip 等)非http请求需要它
- Android Studio(我使用的是Smail打桩进行动态调试,需要AS)
- Jadx-gui 编译apk为Java伪代码(主要用于逻辑分析)
- luyten(部分Jar包jadx会出现反编译失败,可以用luyten)
- frida(hook app中的函数进行具体分析)、unidbg (调用So层函数)
- ApkToolBox(反编译apk为Samil、查壳等…)、BlackDex(apk脱壳,虽然可以脱壳但是尽量还是选择低版本无壳版本)
- Python3.8(Python推荐安装较高版本,最新的除外)、安卓SDK、Java1.8(推荐安装1.8,经典永流传)
- Pycharm、IntelliJ IDEA(位于Java曾的加密可以使用IntelliJ IDEA尝试逆向)
二、环境搭建
1 - 2:root手机和xposed
下载:--------------------------
安装:--------------------------
第一二两点可以去淘宝咸鱼上购置一台Root的洋垃圾,比如我的就是在淘宝购买的一台pielx2,就不多说了,我也不会刷机…
3:Charles & Wireshark
下载:charles:https://www.charlesproxy.com/ 注册码:https://www.charles.ren
Wireshark:https://www.wireshark.org/download.html
安装:我喜欢使用charles进行抓包,所以主要讲如何将Charles的CA证书安装到系统目录下,关于fiddler和其他的也可以参照着来,原理都是一样的,将CA证书hash重命名mv到/system/etc/security/cacerts之后chmod 755(777)就可以了.
使用:charles网上随便找找吧,Wireshark:
#charles 证书安装 (安卓7及以上)
#PEM或者DER格式均可。
#如果是PEM格式的:
openssl x509 -inform PEM -subject_hash_old -in xxx.pem -noout
# 如果是DER格式的:
openssl x509 -inform PEM -subject_hash_old -in xxx.cer -noout
#重命名证书为执行如上命令生成的hash值 ---> hash.0
#传入手机
push xxxx.0 /sdcard
#获取手机的root权限
adb shell
su
#挂载系统目录为可写
mount -o rw,remount /
chmod /system 777
mv /sdcard/xxx.0 /system/etc/security/cacerts
#修改证书权限
chmod 777 /system/etc/security/cacerts/xxx.0
Wireshark基本使用:
1、选择需要捕获的本地链接
2、使用过滤器快速筛选
4:Android Studio & Smali
下载:Android Studio:https://developer.android.google.cn/studio
Smali:https://bitbucket.org/JesusFreke/smali/downloads/
安装指南:Android Studio:https://developer.android.google.cn/studio/intro
smalidea我下载的是0.06,需要下载高版本的,低版本可能遇到:Fail to load plugin descriptor from file smali-2.4.0.jar。下载之后在AS 的setting - Plugins - install plugins from disk 选择下载的就可以了,下载smalidea是为了能够打桩进行动态调试。
使用:AS官方都出指南了,我就不再赘叙了,smalidea的话多了解一下smali语法看得懂就好了。语法参考:
5:Jadx-gui
下载:https://github.com/skylot/jadx/releases
安装:搭建了Java环境就下载no-jre-win.exe,有就下with-jre,下载之后双击就可以运行了。
使用:下图是主要用的上的功能。
6:luyten
下载:https://github.com/deathmarine/Luyten/releases
安装:下载exe就可以使用了
使用:将app的apk安装包重命名为.zip,之后确定需要重新编译的类/方法所在的classes.dex,提取出目标dex使用第八点中提到的工具ApkToolBox将dex转为Jar,再使用luyten打开这个Jar就好了,非常的快。
Jadx-gui未能反编译:
throw new UnsupportedOperationException("Method not decompiled: xxx.xxx.xxx.xxx.xxx(int, int):void");
7:frida
下载:https://github.com/frida/frida/releases
安装:使用adb命令:adb shell getprop ro.product.cpu.abi
查看手机架构下载对于的frida版本
使用:https://zhuanlan.zhihu.com/p/339504595 基本使用,知乎的这篇文章介绍的很详细。
8:ApkToolBox
下载:https://github.com/qtfreet00/ApkToolBox安装:解压就可以用使用:…
9、10:Python、Java环境与生产工具、Android SDK
… …
网上随便找个吧