一个人要走多少路
才能称的上是一个男人
一个Python程序员要绕多少弯
才能找到Android逆向的路
废话不多说,Talk is cheap。
本教程食用指南
主要面向Python爬虫工程师
Android开发人员或者Java工程师,不妨直接看非虫的《Android软件安全与逆向分析》和姜维的《Android应用安全防护和逆向分析》,对于这两本书,我个人看法是是这样的,两本都是好书,面向Android开发人员和安全人员,对小白略微不友好,实践性稍弱。建议两本都买,当作工具书,按章节查询和学习,毕竟书里的内容比百度搜索出来的结果准确太多。
不需要太多Java,Android基础,但会在教程中带大家慢慢补
没有正向的经验和思路,逆向完全是个笑话,当然我们也可以选择做脚本小子,不用懂太多Android知识,就可以逆向不少app,但App攻防战瞬息万变,这样下去是不行的。
目标
熟悉并基本掌握无壳App逆向和破解的思路
环境配置
- 一台有root权限的Android真机
- 一台电脑
- 配置好的Java环境和Android sdk
- Fiddler/Charles + App证书,确保可以抓取App流量
本教程的两个原则
-
不用术语解释术语,不使用”显然“”这很简单“”很明显“等词进行逻辑跳跃
-
影响阅读体验的内容放文末注脚,读者可以点击文字右上角序 进行跳转
- Python编程与实战,主讲爬虫和web后台,内容很棒。
- 小周码字,主讲app逆向以及一些骚操作,思路清晰,文笔优雅,干货很多。
就从现在正式开始吧========================================================================================
大纲
我们使用Fiddler抓取手机上的数据包,有的人可能习惯使用charles,都可以。2
这个时候我们会遇到一个奇怪的问题,不开启抓包环境时,小红书app可以正常访问。一旦启动代理尝试抓包,app就会出现断 的症状。
最常见的就是SSL证书验证(SSL Pinning)。比如抖音、小红书,FaceBook,Twitter等app,都有这种验证和防护。SSL Pinning一种用来防止中间人攻击的技术,广泛应用于阻止app的抓包和嗅探,Fiddler等抓包软件在原理上就是一种中间人攻击,所以一旦遇到了SSL Pinning就凉凉了。我们肯定不能让SSL验证阻拦我们抓包的脚步,下面我们解决SSL证书验证。
首先需要大家在有root权限的手机上安装Xposed框架,它是Android平台最强大的框架,可以在不修改APK的情况下影响程序的运行, 上安装Xposed相关的教程非常多。注意,Android 4和Android 4以上版本的Xposed安装包是不同的,需要安装手机系统版本进行选择。在安装过程中,有一定的风险,请一步步依据教程操作。如果嫌麻烦,可以直接淘宝花二三十安装Xposed或者Edxposed,都是可以的。Android 8-9的系统,我个人更建议安装Edxposed,可以在淘宝搞,也可以参考这篇或者其他文章:
https://blog.coderstory.cn/guide-install-edxposed/ 【后Xposed时代: 一篇文章看懂如何安装和使用Edxposed 】
接下来我们需要安装禁止ssl pinning的插件,这一类插件已经非常多了。比如很多人熟知的JustTrustMe。
我这里推荐sslunpinning,它可以针对单个App进行ssl pinning,在 盘里我放了三款突破SSL证书验证的的app,可以自行选择和下载。
走了这么久,我们终于可以开始分析 络请求了
这是一个GET请求,我们看一下它的Header和字段。
接下来我们撸一下sign
首先我们说一下sign是个啥,数一下它的位数,32位,看一下内容,只包含1-9和a-f,这是一个32位的十六进制数,那么它很很大的可能是一个MD5加密结果。不了解MD5的可以看一下我这篇文章:https://blog.csdn.net/qq_38851536/article/details/93919613【密码学在Android加密中的应用和实践——MD5(1)】这里面说的比较清楚。
抓包分析结束,下一讲我们分析小红书sign的生成规则。
-
为什么app会检测手机模拟器
模拟器常常被用来搞黑灰产搞群控搞游戏增强,比如薅电商平台羊毛、电脑吃鸡,引流刷粉等(如你所见,横行在各种 交平台的机器人)。这些不友好的行为对应用来说百害无一利,所以一些APP会在启动或运行时进行环境检测,在模拟器环境下断 、闪退或 错。后续我们会探讨App是怎么实现的模拟器检测。 -
如果App抓包环境没有配置,可以参考以下教程:
http://www.111cn.net/sj/android/90542.html 图解Fiddler如何抓手机APP数据包【超详细】
环境配置好了之后,不妨尝试抓一下手机浏览器的包,如果能正常放回http和https数据包,则环境配置成功。
如果你始终无法解决环境问题,可以在评论里留言求助,我可以进行帮助和远程调试。
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208442 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!