1.关于爬虫
爬虫开发者发展路线和相关技术栈
- 小学生,爬虫入门。难度:*
requests、selenium、scrapy、app抓包⼯具等,⽤代码去模拟浏览器(UA、IP代理)
- 中学⽣,并发&JS逆向(javascript)。难度:***
并发解决⽅案、Chrome断点调试、JavaScript语法、前后端分离、Node.js编译、JSONP、AES、RSA、BASE64等加密。
- ⼤学⽣,APP逆向。难度:*****
adb、模拟器、⽹络抓包、脱壳、反编译、smali、dex结构、C语⾔基础、Java语⾔基础、安卓开发、NDK开发、Frida、xposed、JNI静态分析和动态调试等。
2.各种工具
2.1抓包
需要通过抓包软件来抓取网络请求,并分析请求,最终通过代码模拟出请求。
- PC电脑:安装charles抓包工具(win/mac)
- 安卓手机:root、安装charles证书(https)、设置charles代理
模拟器可以,但是如果你以后要逆向so⽂件(C语⾔代码),模拟器不⾏的。⼀定要准备⼀台:已root的安卓⼿机(红⽶8A-300块钱)。
2.2逆向
- level 1,直接在抓包软件中找到请求(⽆算法、⽆加密)【初阶阶段】。
如果通过抓包软件抓到的数据⽐较简单,直接⽤代码去模拟跑(⽆关紧要的接⼝)。
- level 2
⼀般情况下,核⼼请求都会有携带很多基于内部算法⽣成的参数(可能在请求头、请求体、URL中)。对于这种情况,就需要:反编译 apk ⽂件,获取Java代码,然后分析Java代码,从⽽获取算法的⽣成规则。然后再⽤代码去模拟。反编译apk⽂件的⼯具:jeb、jadx、gda + 看懂Java代码(加壳)。
- level3
⽤反编译获取java代码后,会发现⼀些函数的参数和返回值等不知道是什么、不知道这个算法是否正确。对于这种情况,就需要⽤:frida框架,Hook特定的函数,这样就可以获取执⾏某个函数时的参数、结果、调⽤栈等。
- level 4
⽤ 反编译⼯具 + Hook 框架,可以将 apk 中Java层⾯的所有的算法都可以逆向出来。但哪些安卓开发者不会将所有算法都⽤java来实现,⽽是将核⼼的算法都放在so⽂件中(基于JNI⽤C语⾔实现)。这种情况就需⽤:ida来反编译so⽂件,获取C语⾔的代码实现(分析并获取算法结果)。
上述涉及的相关⼯具:
抓包软件:charles
反编译apk⼯具:jeb、jadx、gda
Hook框架:frida(需要依赖adb)
反编译so⼯具:ida