饿了麽APP逆向及爬虫实现详参

一、前言

今天主要以饿了麽为例,讲解一下APP逆向的大致流程,以及遇到问题的处理办法。

还没关注的朋友,关注我微信公众号“燕幕自安”不迷路。

二、概述

APP逆向的目的是为了了解APP本身的运行逻辑,进行修改或进行还原。涉及到的技术和工具,见下图。

对于抓包我就不详细讲了,不清楚的看一下我之前的文章。

HTTPS抓包与手机抓包,看这一篇就够了

HTTPS就不能抓包了?开什么玩笑!​

好了,下面我们干正事,讲饿了麽。

三、需求

通过还原APP接口,获取附近商家。

但因为饿了么查看商家必须登录,故需要先逆向登录接口。

四、抓饿了麽的包

打开PacketCapture,选择饿了麽,打开饿了麽APP。

这是为什么?断网了?

这种情况主要是因为抓包引起的,APP本身做了HTTPS证书校验,简单的可以通过插件解决,办法参见以前的文章。

Xposed+JustTrustMe关闭SSL证书验证

好了解决了抓包问题,那就能找到登陆的接口了。

通过抓包,得到登录步骤为:

1.请求发送短信

2.需要图形验证码,请求图形验证码

3.带验证码请求发送短信

4.带短信验证码登录(登陆完成拿到cookie)

5.获取附近商家

每一步的接口如下:

1.URL:https://restapi.ele.me/eus/login/mobile_send_code

2.URL: https://restapi.ele.me/eus/v4/captchas?captcha_str={手机号码}

3.URL:https://restapi.ele.me/eus/login/mobile_send_code

4.URL:https://restapi.ele.me/eus/login/login_by_mobile

5.URL:https://restapi.ele.me/shopping/v3/restaurants?extras[]=identification&extras[]=coupon&latitude=32.29290046542883&longitude=110.04603732377291&city_id=3&rank_id=b1969c73a19b4dc68b31628ea85d8eaf&network_operator=&network=WIFI&order_by=5&extra_filters=home&os=Android%2F6.0.1&deivce=Nexus%206P&weather_code=PARTLY_CLOUDY_DAY&offset=0&limit=20

直接看参考答案的感觉怎么样?

五、参数分析

对于抓包的相关参数(自己看报文就能知道,我没有写header参数和url参数),中间很多是我们一眼就能看出来的比如时间戳、机型、坐标、固定值等,需要逆向的主要有以下几个。

x-eleme-requestid、x-deviceinfo、deadpool相关三个参数

六、逆向分析

参数x-eleme-requestid

在jadx中打开饿了麽APP,搜索关键字x-eleme-requestid

看到四个,不多。

按道理来说,应该先看第四个,但是后来并没有找到a的生成位置。好我们看一下二、三。(OS:“你为啥不看一”)

看到a是个static变量,那就得看一下谁调用他了,右键find usage。

会心一笑。手到擒来。解释一下。

点进去看一下。

我个憨憨!!!

好了,不要在意这些细节。我们点进去这个a()看看。

清清楚楚,国际通用的算法UUID去掉短杠后加上竖杠再加时间戳。

参数x-deviceinfo

打眼一看,这是啥,base64啊!对x-deviceinfo进行base64解密,可得到

均是设备基本信息,按照格式生成即可,注意要和外部其他设备基本信息保持一致。

deadpool相关三个参数

一共三个参数,分别为:

搜索deadpoolcontent。

又是hashmap.put,为什么我们要对他敏感,因为它和我们的目标关键字呆在一起的时候,很可能就是给header里构造参数的啊。我们点开第二个看一眼。

继续找这个sneer函数。(我总觉得他这个函数叫这个名字是故意鄙视我的。)

好了,在libuiseris.so里面,这就麻烦了,要还原这个算法有三种办法。

硬刚。逆向so。我后来看了下,so有反调试,so里面又调了java层的函数,还原比较麻烦一些。

利用。hook这个sneer函数,找到他的方法地址,在你的代码需要的时候,发请求到手机里,手机进行调用执行,计算完以后返回给外部。

虚拟。虚拟环境执行so中的sneer方法,可参见github上的Unicorn这个项目。

我用的是第二个办法,在手机里面起了HTTP服务,接受请求计算后返回给外部。

但是!

FPX和G2的比赛要开了,今天不继续写了,下次再写个续,讲一下hook调用这个事儿吧。

FPX加油。

写在最后

最近有人抄袭我的文章在知乎、吾爱上发,说是自己原创?就是这个垃圾人。

连个人简介都是抄我的!模仿我的人还模仿我的面???现在还有脸继续关注我???还想继续抄???要点*脸吧。

暖心的是,吾爱上的盆友看出来了,谢谢各位了!

以上。欢迎阅读转发~

想要转载的朋友请告知我之后转载,并注明原帖来源。

如有问题,请关注公众号回复【作者】获取我的联系方式。

想了解更多技术分享,请长按识别下方二维码关注我吧。

你可能感兴趣的:(饿了麽APP逆向及爬虫实现详参)