“Frida真是太有意思了!”这是一位资深爬虫工程师在笔者的星球中留言。
为什么爬虫工程师会用Frida呢?因为要学习App安全的逆向分析。为什么爬虫工程师要分析App呢?由于智能手机的普及和O2O商业模式的推广,人们已经逐渐习惯了“一部手机”搞定一切的生活方式。
大量的数据在App中产生,比如在大众点评中评价餐馆,在短视频社交App中给女主播点赞,在淘宝中下单购物,在微信朋友圈中分享自己的动态,到通过App进行“消费”,比如查看别人对于某网红店铺的评价,在短视频App上看感兴趣的视频和直播消磨时间,看别人的朋友圈,看淘宝宝贝的点评等。
我们以某著名短视频App为例,从拍视频、剪视频、配乐上传,通过平台的大数据分发体系推送给对其感兴趣的受众,受众对其观看、点赞加关注,数据的产生、加工和消费,只在一部手机上即可完成,已经不存在网页的形式了,这也是爬虫或大数据工程师必须学习App端安全分析的客观原因。
主观原因方面爬虫工程师向上突破较为乏力,想要拿更高的工资,一般走架构师或App安全分析两条路。架构师要求设计海量数据存储架构,App安全分析则必须学习App逆向,这也是爬虫工程师来做App逆向工程的情况越来越多,对App逆向分析的需求越来越大的原因。
那么为什么爬虫工程师会这么喜欢Frida呢?原因主要有以下两点:
(1)Frida有Python接口,爬虫工程师的主力语言是Python,看到Python就倍感亲切;
(2)Frida的Hook Java和Hook native都是用JavaScript编写的,爬虫工程师在分析网页时对JavaScript已经相当熟悉;使用Frida进行逆向分析和测试时非常迅速,可以快速进行猜想验证和原型制作,所试立刻有所得。
Frida以其简洁的接口和强大的功能,迅速掳获了安卓应用安全研究员以及爬虫工程师的芳心,成为学习和工作中的绝对主力,笔者也有幸在Frida的浪潮中应用Frida做了许多工作,本书即是笔者的工作和学习总结,笔者还建立了自己的社群,期待与大家一起、跟随Frida的更新脚步共同成长和进步。
本书主要内容为安卓Frida逆向与抓包,包含如何搭建完美运行Frida的安卓逆向分析环境,使用Frida对安卓App各项组件、框架和代码进行Hook,如何批量自动化Hook,以及全自动导出Hook的结果。针对爬虫工程师最为迫切需要的抓包部分,本书详细阐述了各种应用层框架的抓包实战,HTTP(S)及其框架的抓包的核心原理及工具的使用,通过Frida进行的Hook抓包,还深入介绍了Frida对native层的Hook,以及一系列“通杀”“自吐”脚本的研发过程和核心原理。
在本书编写的过程中,Frida已经推出版本14,即将推出版本15,安卓也出了Android 11版本,本书中的代码可以在特定版本的Frida和安卓中成功运行。由于安卓逆向是一门实践性极强的学科,读者在动手实践的过程中难免会产生各式各样的疑问,笔者特地准备了GitHub仓库更新(地址:https://github.com/r0ysue/AndroidFridaBeginnersBook),读者如有疑问可以在仓库的issue页面提出,笔者会尽力解答和修复。
如果在使用本书的过程中有什么问题,请发邮件联系booksaga@126.com,邮件主题为“安卓Frida逆向与抓包实战”。
最后,感谢公众号“菜鸟学编程”运营者蔡晋、“咸鱼学Python”运营者戴煌金、“进击的Coder”运营者崔庆才和开源Frida工具DEXDump、Wallbreaker作者hluwa的热情推荐!
感谢笔者的父母,感谢中科院信工所的Simpler,感谢看雪学院和段钢先生,感谢寒冰冷月、imyang、白龙、bxl、葫芦娃、智障、NWMonster、非虫,成就属于你们。
陈佳林
2021年5月