Android逆向入门(1)

Android逆向入门(1),第1张

概述一个人要走多少路才能称的上是一个男人一个Python程序员要绕多少弯才能找到Android逆向的路废话不多说,Talkischeap。本教程食用指南主要面向Python爬虫工程师Android开发人员或者Java工程师,不妨直接看非虫的《Android软件安全与逆向分析》和姜维的《Android应用安

一个人要走多少路
才能称的上是一个男人
一个Python程序员要绕多少弯
才能找到AndroID逆向的路

废话不多说,Talk is cheap。

本教程食用指南

主要面向Python爬虫工程师
AndroID开发人员或者Java工程师,不妨直接看非虫的《AndroID软件安全与逆向分析》和姜维的《AndroID应用安全防护和逆向分析》,对于这两本书,我个人看法是是这样的,两本都是好书,面向AndroID开发人员和安全人员,对小白略微不友好,实践性稍弱。建议两本都买,当作工具书,按章节查询和学习,毕竟书里的内容比百度搜索出来的结果准确太多。

不需要太多Java,AndroID基础,但会在教程中带大家慢慢补
没有正向的经验和思路,逆向完全是个笑话,当然我们也可以选择做脚本小子,不用懂太多AndroID知识,就可以逆向不少app,但App攻防战瞬息万变,这样下去是不行的。

目标
熟悉并基本掌握无壳App逆向和破解的思路

环境配置

一台有root权限的AndroID真机一台电脑配置好的Java环境和AndroID sdkfiddler/Charles + App证书,确保可以抓取App流量

本教程的两个原则

不用术语解释术语,不使用”显然“”这很简单“”很明显“等词进行逻辑跳跃

影响阅读体验的内容放文末注脚,读者可以点击文字右上角序号进行跳转

资源推荐
主要推荐两个公众号

Python编程与实战,主讲爬虫和web后台,内容很棒。小周码字,主讲app逆向以及一些骚 *** 作,思路清晰,文笔优雅,干货很多。我个人的公众号因为太久没发文被冻结了,以后有能力了重开一个。

就从现在正式开始吧========================================================================================

大纲


我们会在之后的学习中不断覆盖和巩固这些知识。

需求分析

小红书APP是一个生活方式平台。在这里发现美好、真实、多元的世界,找到有意思的明星达人,与他们一起共同标记自己生活的点滴。2.2亿年轻用户每日分享海量服饰搭配、美妆教程、旅游攻略、美食测评,让你轻松升级潮流生活老司机。
用户所发表的内容被称为“笔记”。我们的目标是抓取小红书中欧阳娜娜相关的全部笔记。

首先肯定是看web端能否满足需求




鉴定完毕,这条路行不通。
其实这也反应了越来越多平台的趋势——重移动端轻pc端。
现在是移动互联网的时代,在很多领域,移动端:PC端的流量比甚至达到了9:1,即使是淘宝这类PC时代的老玩家,现在绝大部分流量也都来自移动端,而抖音、拼多多,快手这些产品,更似乎从出生就在AndroID和IOS的怀里。可以预见,随着5G的推广和普及,移动端能做的事会越来越多,越来越强大。各色的App,微信小程序、QQ小程序会毫无疑问成为信息和流量的汇集地。

在未来,越来越多的应用和服务,官网将只提供移动端的下载地址。



话不多说,转战移动端。

抓包分析
爱自己是终身浪漫的开始抓包是逆向的第一步

我们使用小红书6.3.0,这是七月才更新的版本,可以保证一段时间内App不会发生大的改动,大家可以直接百度下载,或者使用我准备的网盘资源,里面备有该教程所需要的逆向工具和资源,且均为较新版本。
网盘链接:链接:https://pan.baidu.com/s/1R7bqU4OIuTZSSpB-A8OXWg
提取码:wdc8

出于便捷,抓包时,我们往往会使用电脑AndroID模拟器,比如夜神、雷电。
但在这里,我们只能使用真机,小红书APP进行了严苛的模拟器环境检测,只要使用模拟器登录,就会有如下的提示。


后续我们会逆向分析它检测模拟器的代码,看一下是否能hook或者篡改掉,但现在还是老老实实用真机吧。1

我们使用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,可以自行选择和下载。


下载并安装sslunpinning,打开sslunpinning界面选择小红书app,打开Xposed,在Xposed-模块列表中勾选sslunpinning 模块,重启手机使得Xposed的更改生效。


环境配置好了,接下来打开小红书,注意不要选择登录,而是选择性别和出生年月,勾选兴趣话题进入内容广场,以此防止抓包结果不同。如果已经登录 *** 作了,可以在设置-应用-小红书中选择清除所有数据,或者卸载重装小红书。
现在,在Xposed+SSLUnpinning的加持下,我们会奇迹的发现fiddler中数据流不停的流淌,App界面内容可以顺利的加载了出来。
我们搜索”欧阳娜娜“,不需要进入她的个人主页,直接下拉内容。
简单的刷新下拉几下动态,明显发现好几个大的数据包,而且为Json格式,我们把这些数据包标成紫色。


我们来看一下它的内容,fiddler右下区域可以查看数据包内容,我们使用fiddler提供的Json格式查看


读者按照这个步骤 *** 作,接着对比一下App的界面,会发现内容一致。

走了这么久,我们终于可以开始分析网络请求了
这是一个GET请求,我们看一下它的header和字段。



首先不要怕,抽根烟冷静一下,想一下搞爬虫是不是选错职业方向了。
搞爬虫的肯定有经验,这么多字段,肯定有不少是可以固定不变的。
我们多下拉几次动态,抽取两次请求进行对比,直接肉眼看可能会瞎,我是这么处理的,大家也可以直接肉眼对比。
将webform中的大量字段直接全选复制,找个文本编辑器,或者直接用记事本粘贴下来(我用的sublime)。Request headers选择右上角的raw模式,只复制下来headers部分,url不用。
稍加整理成下图这个样子



然后找一个在线文本比较网站进行对比
我用的是这个http://wenbenbijiao.renrensousuo.com/#diff
然后就可以获得很直观清晰的比对结果


我们当务之急就是明白和破解headers中的shIEld,params中的t和sign。
首先说t,这是一个十位数,以15开头,这很可能是一个以秒为单位的时间戳,如果是十三位,那很可能是一个以毫秒为单位的时间戳。我们找一个在线时间戳转换工具试一下 https://tool.lu/timestamp/


时间完全吻合我发出请求的时间,这是一个时间戳。

接下来我们撸一下sign
首先我们说一下sign是个啥,数一下它的位数,32位,看一下内容,只包含1-9和a-f,这是一个32位的十六进制数,那么它很很大的可能是一个MD5加密结果。不了解MD5的可以看一下我这篇文章:https://blog.csdn.net/qq_38851536/article/details/93919613【密码学在Android加密中的应用和实践——MD5(1)】这里面说的比较清楚。

这里总结一下MD5签名的特征1.一般来说名字为sig,sign,signature2.加密的原文为部分或者全部请求字段的拼接3.为了避免拼接顺序错误导致结果无法校验,将所有或者部分请求参数按照参数名ASCII码从小到大排序(常使用java collection sort实现)4.可能会将字符串的值以URL编码,用于编码处理(urlencode)5.加密字段中会有一个时间戳字段用来防止请求被重复使用6.只使用一次md5防护性比较弱,可能会加盐,或者两次md5,可能会转成大写(a-f→A-F),可能会只取md5结果的9-24位,或者使用其他哈希算法

抓包分析结束,下一讲我们分析小红书sign的生成规则。


为什么app会检测手机模拟器
模拟器常常被用来搞黑灰产搞群控搞游戏增强,比如薅电商平台羊毛、电脑吃鸡,引流刷粉等(如你所见,横行在各种社交平台的机器人)。这些不友好的行为对应用来说百害无一利,所以一些APP会在启动或运行时进行环境检测,在模拟器环境下断网、闪退或报错。后续我们会探讨App是怎么实现的模拟器检测。 ↩︎

如果App抓包环境没有配置,可以参考以下教程:
http://www.111cn.net/sj/android/90542.html 图解fiddler如何抓手机APP数据包【超详细】
环境配置好了之后,不妨尝试抓一下手机浏览器的包,如果能正常放回http和https数据包,则环境配置成功。
如果你始终无法解决环境问题,可以在评论里留言求助,我可以进行帮助和远程调试。 ↩︎

总结

以上是内存溢出为你收集整理的Android逆向入门(1)全部内容,希望文章能够帮你解决Android逆向入门(1)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116088.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存