商务服务
mp-mtgsig 美团iOS 签名逆向工程分析
2024-11-04 19:46
  • 原文链接:https://chenqi.app/Meituan-iOS-Reverse-Engineering/
  • 转存mark,如有侵权,联系删除

美团App iOS 安装包
版本号 11.6.201
发布时间 2021.01.18

mp-mtgsig 美团iOS 签名逆向工程分析

Fiddler

常规操作,首先使用Fiddler进行HTTP(S)网络代理抓包,没有获得任何明显的线索。猜测美团App使用了Native层实现网络通讯功能,负责加解密,压缩解压缩等常见处理,属于常见技术方案,携程CRN亦是如此。后续分析印证了该猜测。

Cydia

iPhone越狱,并在Cydia App中安装 Frida Cyrun Cycript 这几个包,后续会用到。

frida-ios-dump

Pull a decrypted IPA from a jailbroken device

Usage
  • Install frida on device
  • Run usbmuxd/iproxy SSH forwarding over USB (Default 2222 -> 22). e.g.
  • Run https://blog.csdn.net/wy_97/article/details/dump.py or

For SSH/SCP make sure you have your public key added to the target device’s file.

App提交至App Store后,经Apple官方加密,生成供用户下载的IPA文件。该文件直接解压缩是密文,难以分析。所以需要通过越狱手机环境,使用frida砸壳,获得解密后的原始IPA文件(IPA = ZIP)。

class-dump

class-dump is a command-line utility for examining the Objective-C segment of Mach-O files. It generates declarations for the classes, categories and protocols.

从原始IPA解压后的 Mach-O 二进制文件,还原出 Objective-C 类声明头文件。

MRNBundle.h

先从 下手。

接下来是最辛苦烧脑的部分。

frida-trace

祭出 frida-trace 跟踪 MRNBundle 的运行过程。

frida-trace Javascript Hook 功能介绍省略。

编辑文件

替换

变成

关于 new ObjC.Object 的用法,详见官网文档。

重新执行上述frida-trace命令,观察日志输出,找到App运行时Bundle文件夹路径。

使用scp命令,将手机文件夹导出至电脑文件夹。

DIO文件格式

如图所示,很明显每个DIO文件就是一个MRN Bundle。但是其格式并非ZIP,直接解压缩无效。看来美团App进行了安全加固相关措施,因此需要继续分析与其相关的ObjC代码线索。

MTDIOBundle.h

回看上述 声明文件,找到嫌疑点。

顺藤摸瓜 ,盯住 和 这两个属性和方法。

使用 cyrun 附加到App运行时进程,定位内存 METDIOBundle 类实例,查看这两个元素的相关信息,终于水落石出。

  • 描述包中文件列表信息,包括文件名,偏移值。
  • 持有文件数据。

接下来使用 将解密数据写入手机本地存储,再使用 命令将文件传回电脑。

rn-hotel-mainlist

经过一番枯燥繁琐的检索,找到酒店列表页,取出其中 index.js ,继续耐心查看大量编译混淆后的代码,找到一行代码。

原生模块托管了网络协议请求,验证了文章开头使用Fiddler分析无果的猜测。

只好继续分析 。

MRNNetwork.h

与上述分析 流程类似,继续祭出 。

运行命令,并触发酒店搜索至列表页功能, 查看方法调用。

编辑文件

增加代码,打印输出,RN发送给Native的请求参数

Hopper 反汇编

The macOS and Linux Disassembler

Hopper Disassembler, the reverse engineering tool that lets you disassemble, decompile and debug your applications.

与Fiddler授权方式类似,可以免费使用,但每隔30分钟自动关闭一次。

启动后,将 文件拖入, 弹出配置提示框,按默认配置,点 OK 开始反编译。

等待运行完成,重点分析 方法,定位到 方法。再次祭出 frida-trace 动态跟踪运行时数据。

终于看懂了酒店列表页网络请求的完整契约。

这里省略使用Hopper和IDA反复进行反汇编分析过程,以及一目了然的请求字段部分,仅罗列关键复杂的字段含义。

pragma-unionid

源于

M-SHARK-TRACEID

拆分各段数据含义

生成随机字符的取值范围

pragma-os

App版本和手机系统相关信息(实测可以向服务端传入固定内容)。

siua

实测该字段可选,可以不传。其生成算法是,使用手机系统和设备相关信息,构造设备指纹,生成字符串,再通过两层加密,base64编码形式。

完整的生成算法位于

mtgsig

实测该字段必传,否则会被 WAF(Web Application Firewall) 拦截。以及生成内容必须正确,否则也会被拦截。

其生成逻辑位于以下方法

最终调用以下方法进行加密

该方法名显然是随机生成,因此不确定未来是否变化。所以记住要从入口方法进行分析。即

入参分析

酒店列表查询请求似乎只用到了GET方式。当请求方式为POST时,还需添加其他参数,未深入分析,省略。

返回值分析

即上述 JSON格式,可直接置于 Request Header 中发送。

由于其数据基于URL参数生成,因此当URL参数不同, 值不同。所以该字段不能模拟固定,需要调用上述算法动态计算得出。

URL 关键字段

完整URL举例

转为JSON格式,方便阅读

token 和 userID,推测应为用户凭证。

wifiList

实测可选字段,可以不传,代表用户手机当前连接的Wi-Fi信息。

hotel_queryid

格式

其他非关键参数省略,大致分为两种

  • 酒店查询条件参数
  • 可以固化填充的非关键字段

制作爬虫脚本

上述分析可见, 和 的生成方式极其复杂,因此采用一种新方式实现。继续借助 frida 这一强大的工具,实现从外部直接调用 App 中相应的加密函数进行计算。

  • 新建文件夹,执行 初始化一个空项目。
  • 执行 ,安装依赖项。
  • 实现以下代码,保持至单独文件。此处以 为例。
  • 创建调用入口文件
  • 运行该文件,查看效果。Done

The End

不同身份的用户(未登录,已登录,新用户,老用户,等级不同,服务端(或后台接口)返回的酒店价格均有所不同。

因此从前端入手制作酒店列表页爬虫的思路受阻。

美团先从登录账号这一环节控制安全防范策略。与之类似的还有航旅纵横。

下图为“未登录用户(左)”和“已登录用户(右)”获取到的酒店列表数据和价格,可以明显看出两者的差别。

    以上就是本篇文章【mp-mtgsig 美团iOS 签名逆向工程分析】的全部内容了,欢迎阅览 ! 文章地址:http://syank.xrbh.cn/news/10003.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://kaire.xrbh.cn/ , 查看更多   
最新新闻
怎么样查询sci文章发表是否被检索呢?
  怎么样查询sci文章发表是否被检索呢?现如今,发表论文的学者、科研工作者越来越多,像在SCI、EI、SSCI等刊物上投稿论文之后
公司热点|开滦集团一矿业发生冒顶事故 6人被困 上市公司开滦股份近年净利下滑
开滦集团前身开滦矿务局,先后隶属国家燃料工业部、煤炭工业部,1998年下放河北省管理,1999年改制为开滦(集团)有限责任公司,
一条用了13年的轮胎会是什么样(内含轮胎店安装避坑秘籍)
一条能用多久,是3年还是5年,是5万公里,还是8万公里,我们经常会遇到这样类似的问题,给出的标准答案应该是根据车主的实际情况
埋点分析文档(DRD) - AxureMost
AxureMost 官网 埋点分析文档(DRD) - AxureMost 数据埋点文档是产品、数据分析师和开发人员之间沟通的桥梁,
帆软&唐隆基:详解供应链新质生产力的五点本质和四大创新!
在数字化浪潮的推动下,供应链管理正经历着前所未有的变革。2024年9月7日,帆软智数大会在杭州成功举办,汇聚了众多行业专家和实
太酷了!哈尔滨一老太热舞视频抖音播放量超2000万次
  东北网7月26日讯 6月初,一位哈尔滨老太太和一群年轻人在松花江边跳街舞的视频,在抖音播放量超过2000万次,一度排名第一。
TikTok在美国又出事,张一鸣的全球化迎来梦醒时分
题图来自Techcrunch,本文来自微信公众号:壹娱观察(ID: yiyuguancha),文:大娱乐家屋漏偏逢连夜雨,就在上周刚刚被印度政府
垃圾分类 | 关于有害垃圾,你知道多少呢....
-垃圾分类-关于有害垃圾✦你知道多少呢....✦一说到有害垃圾大家会联想到有害、危险物质到底什么是有害垃圾?有害垃圾有什么危害
小程序开发:用原生还是选框架(wepy/mpvue/uni-app/taro)?
自 2017-1-9微信小程序诞生以来,历经2年多的迭代升级,已有数百万小程序上线,成为继Web、iOS、Android之后,第四大主流开发技
中山退休养老金怎么计算(2023在线计算最新)退休养老金怎么计算
  中山退休能领多少养老金,可能是很多老人想了解的事情。我们知道中山对于职工退休方面是有一定的要求的,很多人不知道退休养
本企业新闻
推荐企业新闻

点击拨打: