app安全逆向 - 入门级别-环境准备
前言
最近感觉爬虫-逆向圈越来越卷了,平均每周一个新技术,web端和app端简直各种骚操作,一篇混乱,稍微不看群消息又错过一个新技术名词,所以准备暂时主攻app逆向了(主要是感觉web端骚操作已经跟不上了)
本篇文章来聊聊怎么配置一个app逆向的环境,虽然网上已经有很多教大家配置逆向环境的文章了,不过我还是想写一篇,方便大家对照,当然我也不敢保证我会写的比那些大佬写的好
环境需要
硬件准备
- 一台电脑,内存最好8G+(其实稍微大型点的apk,开个jadx 8G基本就没了)
- 一台手机,已root,刚开始可以用模拟器,但是后期最好有真机,可以在某鱼或者肉师傅的小店里买二手的,几百块,不算贵
- 一根数据线
系统准备
win/mac都可以
软件准备
- python3+:用于爬虫脚本执行
- adb:一个在电脑终端里可对手机设备做一定操作的工具
- objection:用于逆向操作,针对apk的java层,嘎嘎乱杀的存在,依赖于frida,可以说是frida的集成工具,但是只支持java层调试
- frida:用于做逆向操作,hook之类的,不止针对java层,Native层也可以
- xposed:类似frida,后期会用到,目前暂时用不到,所以本篇文章暂时略过
- jadx:查看apk或者dex源码的工具,可以说是作为逆向的关键工具
- jeb:类似jadx,很多情况下针对app源码的还原要比jadx好,不过并不能完全替代jadx
- vscode:写逆向脚本的编辑器,你用pycharm写也一样的
- IDA:针对so文件的调试
开始配置
这里我就用我的电脑为例,mac,然后是一台n5手机,已root
python环境配置就不说了。
配置adb
去这个网站下载adb:https://www.androiddevtools.cn/
选择你对应的版本,然后别人也提示了,怎么做
下载完,解压,放到目录里即可,mac的话
然后直接执行adb即可用,你为了方便可以把adb配置上bash_profile里。
还有个比较简单的方法就是直接brew安装:
brew cask install android-platform-tools
安装完了之后,手机打开设置,设置里面,关于本机,然后狂点系统版本号5次,开启开发者模式,点击进入开发者模式,开启usb调试
然后插上数据线连上电脑,adb devices看是否有设备
有就可以了,第一次插上电脑的时候可能会有是否允许的相关提示,点【允许】即可。如果没有,检查你的usb数据线,有些数据线只有充电的功能,没有传输数据的功能,所以你可以换一根线试试
jadx配置
直接去github里搜索
第一个就是了,点这边的releases
选择你对应的系统支持的文件,我的是mac,就选的第一个
下载完之后解压,双击jadx-gui就可以执行打开,如果你的是win电脑的,双击jadx-gui.bat文件即可打开
打开的界面如下:
jeb配置
jeb的官网:https://www.pnfsoftware.com/
如果慢的话,可以去这里下载:https://shareappscrack.com/jeb-decompiler/,或者在吾爱破解(一个很权威的逆向网站,里面大佬众多,没事可以去读读大佬们的文章)的爱盘里搜索jeb,当然你可以在网上自己找
下载完毕之后,解压,在终端里执行sh文件
提示无权限,改下权限再执行,提示没有找到jvm执行环境
我看了下我电脑的java环境,这个没记错貌似是mac自带的java环境
原来是版本过高了,去oracle官网下载jdk1.8:https://www.oracle.com/java/technologies/downloads/#java8-mac
安装完之后:
进入bash目录配置:
vi .bash_profile
将下面的加入文件并保存:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home CLASS_PATH="$JAVA_HOME/lib" PATH=“.$PATH:$JAVA_HOME/bin”
然后执行命令让环境生效:
source .bash_profile
再次执行那个sh,报了新的错。
就发现程序启动完毕立马一闪而过,那说明,可能当前我的系统版本过高不适用这个版本的jeb。换了这个帖子里的jeb版本:https://bbs.pediy.com/thread-268316.htm
再次执行:
ok,成功打开,拖入一个apk,正常打开,搞定了
注意,如果你的电脑可能因为一些项目依赖,早就安装过非默认版本的java时,但由于jeb需要低版本的jdk,网上很多说是用jdk1.8.121,也就是我上面下载的那个,那么你需要先卸载已有的java环境:
1.输入sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
2.输入sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefpane
3.查找当前版本ls /Library/Java/JavaVirtualMachines/
4.输入sudo rm -rf /Library/Java/JavaVirtualMachines/(你要删除的jdk版本),mac默认的那个版本建议别删
之后再安装你想安装的版本即可
frida配置
因为frida有很多个版本,不同系统架构的手机也得用对应的frida,所以,先看看你的手机是多少:
adb shell getprop ro.product.cpu.abi
去这里下载对应架构的frida-server : https://github.com/frida/frida/releases,下面这个就是我们要的了
其实最稳的是frida-server12版本,不过不重要,后面实际用到的时候再换
下载好双击解压
然后用adb push命令,把这个frida-server文件push到手机里,一般是放在手机的/data/local/tmp/目录下,因为这个目录权限等级不高
然后,可以用adb shell命令进入手机,进入刚才的目录查看权限,如果没有【x】权限则需要chmod +X frida-serverxxx 改权限,这里已经有了我就不改了,我这里由于买的肉师傅的手机,所以已经有很多个版本的frida了,15.1.14才是我刚才push进去的
此时,最好改下文件名,因为有的app的风控回检测文件名是不是有frida之类的字眼
启动frida
/data/local/tmp/frida-server/frida-server-15.1.14-android-arm
启动的时候,如果还是提示权限问题,切换为root用户执行:
没报错即启动成功了。更多的说明以后会详细介绍
映射端口
在pc端电脑,装adb的机器上使用如下命令映射端口
adb forward tcp:
27042
tcp:
27042
adb forward tcp:
27043
tcp:
27043
此时有的风控也会检测是否有开启27042和27043端口,所以你可以改下,只要在0-65535范围内没用过的端口即可
这就算是配置好frida了
objection配置
同样的搜索
下载压缩包
解压:
搞定了
vscode配置
这个就没啥难度了,直接在官网下载,https://code.visualstudio.com/
然后安装需要的插件即可,比如python,frida等的环境,安装完可以有代码提示,写起代码来非常的丝滑
唯一要注意的是vscode的环境问题,如下,当import frida时,执行,
执行如下就说没有安装frida,但其实我用pycharm执行相同打码是不会报这个错的,而且我也非常确定我是安装了frida的
这里的解决方法就是,点左下角,切换python解释器
切换成最后那个即可:
再次执行就不会报错了
IDA配置
由于我的电脑系统版本是mac12.0.1(忍不住,手贱更新了),所以网上找了好久都不能用,最后已经忘记是在哪个网站找的了,下载下来,解压执行:
然后随便打开一个apk文件的so,即展示如下:
配置完毕
下载地址
链接: https://pan.baidu.com/s/1vwwaBWqQ_XCi0OnSpW2LzA 提取码: o299
一劳永逸配置
你可以用肉师傅的r0env的虚拟机(肉师傅的公众号里有下载地址,B站里也有肉师傅自己录制的配置视频:https://www.bilibili.com/video/BV1qQ4y1R7wW?from=search&seid=3800968160265425973&spm_id_from=333.337.0.0),因为r0env就是在kali linux上配置好的,所有能用到的逆向工具基本都有了,你把虚拟机镜像下载下来,然后用vmware打开即可
然后很多逆向工具在win平台目前来看是最全的,但是win上调试又可能会出现很多奇怪的问题,所以,长期来看,真机win+虚拟机r0env是最完美的方案,当然真机用mac的也可以的,只是有些工具,像GDA(类似IDA)之类的逆向工具,我貌似没找到mac版,win版是有的
r0env相关的开箱使用,以及mac下usb连接到虚拟机里遇到的问题解决,可以看我之前写的一篇:https://www.cnblogs.com/Eeyhan/p/15645609.html
搞定,后面就可以开始你的逆向之旅了.......