首页
社区
课程
招聘
[原创]饿了麽APP逆向及爬虫实现详参
发表于: 2019-11-10 19:20 14353

[原创]饿了麽APP逆向及爬虫实现详参

2019-11-10 19:20
14353

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

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

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

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

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

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

一、前言
今天主要以饿了麽为例,讲解一下APP逆向的大致流程,以及遇到问题的处理办法。
还没关注的朋友,关注我微信公众号“燕幕自安”不迷路。
饿了麽APP逆向及爬虫实现详参
二、概述
APP逆向的目的是为了了解APP本身的运行逻辑,进行修改或进行还原。涉及到的技术和工具,见下图。
饿了麽APP逆向及爬虫实现详参
对于抓包我就不详细讲了,不清楚的看一下我之前的文章。
HTTPS抓包与手机抓包,看这一篇就够了
HTTPS就不能抓包了?开什么玩笑!
饿了麽APP逆向及爬虫实现详参
好了,下面我们干正事,讲饿了麽。
三、需求
通过还原APP接口,获取附近商家。但因为饿了么查看商家必须登录,故需要先逆向登录接口。
四、抓饿了麽的包
打开PacketCapture,选择饿了麽,打开饿了麽APP。
饿了麽APP逆向及爬虫实现详参
这是为什么?断网了?
饿了麽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
直接看参考答案的感觉怎么样?
饿了麽APP逆向及爬虫实现详参
五、参数分析
对于抓包的相关参数(自己看报文就能知道,我没有写header参数和url参数),中间很多是我们一眼就能看出来的比如时间戳、机型、坐标、固定值等,需要逆向的主要有以下几个。
x-eleme-requestid、x-deviceinfo、deadpool相关三个参数
饿了麽APP逆向及爬虫实现详参

六、逆向分析
参数x-eleme-requestid
在jadx中打开饿了麽APP,搜索关键字x-eleme-requestid
饿了麽APP逆向及爬虫实现详参
看到四个,不多。按道理来说,应该先看第四个,但是后来并没有找到a的生成位置。好我们看一下二、三。(OS:“你为啥不看一”)
饿了麽APP逆向及爬虫实现详参
看到a是个static变量,那就得看一下谁调用他了,右键find usage。
饿了麽APP逆向及爬虫实现详参
会心一笑。手到擒来。解释一下。
饿了麽APP逆向及爬虫实现详参
点进去看一下。
饿了麽APP逆向及爬虫实现详参
我个憨憨!!!
饿了麽APP逆向及爬虫实现详参
好了,不要在意这些细节。我们点进去这个a()看看。
饿了麽APP逆向及爬虫实现详参
清清楚楚,国际通用的算法UUID去掉短杠后加上竖杠再加时间戳。
参数x-deviceinfo
饿了麽APP逆向及爬虫实现详参
打眼一看,这是啥,base64啊!对x-deviceinfo进行base64解密,可得到:
饿了麽APP逆向及爬虫实现详参
 
均是设备基本信息,按照格式生成即可,注意要和外部其他设备基本信息保持一致。
deadpool相关三个参数
一共三个参数,分别为:
饿了麽APP逆向及爬虫实现详参
搜索deadpoolcontent。
饿了麽APP逆向及爬虫实现详参
又是hashmap.put,为什么我们要对他敏感,因为它和我们的目标关键字呆在一起的时候,很可能就是给header里构造参数的啊。
我们点开第二个看一眼。
饿了麽APP逆向及爬虫实现详参
继续找这个sneer函数。
(我总觉得他这个函数叫这个名字是故意鄙视我的。)
饿了麽APP逆向及爬虫实现详参
饿了麽APP逆向及爬虫实现详参
好了,在libuiseris.so里面,这就麻烦了,要还原这个算法有三种办法。
  1. 硬刚。逆向so。我后来看了下,so有反调试,so里面又调了java层的函数,还原比较麻烦一些。
  2. 利用。hook这个sneer函数,找到他的方法地址,在你的代码需要的时候,发请求到手机里,手机进行调用执行,计算完以后返回给外部。
  3. 虚拟。虚拟环境执行so中的sneer方法,可参见github上的Unicorn这个项目。
我用的是第二个办法,在手机里面起了HTTP服务,接受请求计算后返回给外部。
但是!
FPX和G2的比赛要开了,今天不继续写了,下次再写个续,讲一下hook调用这个事儿吧。FPX加油。
饿了麽APP逆向及爬虫实现详参
饿了麽APP逆向及爬虫实现详参
写在最后
最近有人抄袭我的文章在知乎、吾爱上发,说是自己原创?就是这个垃圾人。

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

连个人简介都是抄我的!模仿我的人还模仿我的面???
饿了麽APP逆向及爬虫实现详参

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

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

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

以上。欢迎阅读转发~

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

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

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

饿了麽APP逆向及爬虫实现详参
  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
  1. 硬刚。逆向so。我后来看了下,so有反调试,so里面又调了java层的函数,还原比较麻烦一些。
  2. 利用。hook这个sneer函数,找到他的方法地址,在你的代码需要的时候,发请求到手机里,手机进行调用执行,计算完以后返回给外部。
  3. 虚拟。虚拟环境执行so中的sneer方法,可参见github上的Unicorn这个项目。
  • 请求发送短信
  • 需要图形验证码,请求图形验证码

  • [注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

    收藏
    免费 8
    支持
    分享
    最新回复 (18)
    雪    币: 26205
    活跃值: (63302)
    能力值: (RANK:135 )
    在线值:
    发帖
    回帖
    粉丝
    2
    感谢分享~
    2019-11-10 20:02
    0
    雪    币: 25
    活跃值: (1111)
    能力值: ( LV3,RANK:30 )
    在线值:
    发帖
    回帖
    粉丝
    3
    吾爱那边写的都是转帖把,我们核实一下 如果作者确实说自己是原创的话 我们会处理的
    2019-11-11 09:50
    1
    雪    币: 1454
    活跃值: (267)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    4
    感谢大佬分享
    2019-11-11 09:57
    0
    雪    币: 1705
    活跃值: (676)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    虽然我的币不多,但是还是给你赞
    2019-11-30 02:01
    0
    雪    币: 2448
    活跃值: (873)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    6
    2019-11-30 20:54
    0
    雪    币: 385
    活跃值: (15)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    7
    支持原创
    2019-11-30 22:35
    0
    雪    币: 26
    活跃值: (17)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    8
    支持原创
    2019-12-21 08:23
    0
    雪    币: 201
    活跃值: (145)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    9
    大佬加油 期待续作
    2019-12-25 16:47
    0
    雪    币:
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    10
    您好楼主,您是jadx直接打开app吗?app不是加固过的吗?还是要先脱壳?
    2020-1-25 18:48
    0
    雪    币: 1467
    活跃值: (1054)
    能力值: ( LV4,RANK:40 )
    在线值:
    发帖
    回帖
    粉丝
    11
    wx_哈哈哈_689 您好楼主,您是jadx直接打开app吗?app不是加固过的吗?还是要先脱壳?
    饿了么没有加固吧?难道新版本有了?你试试半年前的版本~
    是什么加固啊
    2020-1-27 00:41
    0
    雪    币:
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    12
    我下了个me.ele_400.apk,是《阿里聚安全》加固,感觉一碰到加固就没办法了,楼主一般怎么解决呢?是强行脱壳吗?感谢回答
    2020-1-29 15:08
    0
    雪    币: 1467
    活跃值: (1054)
    能力值: ( LV4,RANK:40 )
    在线值:
    发帖
    回帖
    粉丝
    13
    wx_哈哈哈_689 我下了个me.ele_400.apk,是《阿里聚安全》加固,感觉一碰到加固就没办法了,楼主一般怎么解决呢?是强行脱壳吗?感谢回答[em_67]
    没有研究过阿里的壳 如果遇到的话 可以先试一下常用的脱壳方案啊 fdex2 frida-dump啥的
    2020-1-29 23:03
    0
    雪    币: 13
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    14
    请问用Xposed+JustTrustMe还是抓不到抖音的包怎么解决
    2020-1-31 23:25
    0
    雪    币: 1467
    活跃值: (1054)
    能力值: ( LV4,RANK:40 )
    在线值:
    发帖
    回帖
    粉丝
    15
    wx_蘦 请问用Xposed+JustTrustMe还是抓不到抖音的包怎么解决
    抖音我还没看 一般这种抓不到包 大都是证书验证 需要找到相关校验函数 hook一下
    2020-2-1 15:18
    0
    雪    币: 0
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    BGM
    16
    貌似dy的为啥我能抓到包呢,另外阿里聚安全的 貌似不用脱壳把,直接硬干
    2020-2-3 14:34
    0
    雪    币: 204
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    17
    虽然还看不懂,但是必须点赞
    2020-8-26 07:37
    0
    雪    币: 209
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    18
    2020-8-31 09:27
    0
    雪    币: 3077
    活跃值: (4157)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    19
    666
    2020-9-1 15:32
    0
    游客
    登录 | 注册 方可回帖
    返回
    //