返回

饿了么的加密参数揭秘:使用 Flask + Frida-RPC 轻松破解

见解分享

饿了么是国内知名的外卖平台,凭借着庞大的用户群体和广泛的商家网络,稳居行业领头羊的地位。为了保障用户数据的安全性和隐私,饿了么采用了加密措施来保护用户的信息。然而,这些加密措施并不能阻挡安全研究人员探索其底层机制的热情。

本文将深入剖析饿了么的加密参数,并介绍如何使用 Flask 和 Frida-RPC 搭建一个简单的 Web 服务来解密这些参数。通过这种方法,我们将能够绕过饿了么的加密措施,获取隐藏在加密参数背后的宝贵信息。

饿了么的加密参数

此前,饿了么的请求参数是不需要加密的。然而,随着安全意识的增强和用户隐私保护的重视,饿了么引入了加密措施来保护敏感信息。饿了么的加密参数主要用于对请求参数进行加密,以防止未经授权的访问和篡改。

根据我们的研究,饿了么的加密参数由三个部分组成:

  1. 偏移量 (offset) :一个随机生成的数字,用于对参数进行偏移。
  2. 密钥 (key) :一个固定密钥,用于对参数进行加密。
  3. 加密参数 (encryptedParam) :使用密钥和偏移量对参数进行加密后的结果。

使用 Flask + Frida-RPC 破解加密参数

为了破解饿了么的加密参数,我们可以使用 Frida-RPC 和 Flask 搭建一个简单的 Web 服务。Frida-RPC 是一个基于 Frida 的 RPC 框架,允许我们通过 JavaScript 代码与本地设备上的 Frida 实例进行通信。Flask 是一个轻量级的 Python Web 框架,可用于快速开发 Web 服务。

搭建 Web 服务

首先,我们需要使用 Flask 搭建一个简单的 Web 服务。我们可以使用以下代码创建一个基本的 Flask 应用:

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['POST'])
def decrypt():
    encryptedParam = request.form.get('encryptedParam')
    offset = request.form.get('offset')
    key = 'YOUR_KEY_HERE'  # 替换为您的密钥

    decryptedParam = decrypt_param(encryptedParam, offset, key)
    return decryptedParam

if __name__ == '__main__':
    app.run(debug=True)

在这个 Flask 应用中,我们定义了一个名为 / 的路由,用于接收 POST 请求。该路由包含一个 decrypt 函数,用于解密加密参数。

Frida-RPC 脚本

接下来,我们需要编写一个 Frida-RPC 脚本来解密加密参数。我们可以使用以下代码创建脚本:

Java.perform(function() {
    var decryptedParam = null;

    Java.choose('com.饿了么.android.service', {
        onMatch: function(instance) {
            decryptedParam = instance.myDecryptMethod(offset, encryptedParam);
            decryptedParam = decryptedParam.replace(/\0/g, '');  # 去掉结尾的 \0 字符
        },
        onComplete: function() {
            console.log('[Frida] Decrypted parameter:', decryptedParam);
            rpc.exports.decryptedParam = decryptedParam;
        }
    });
});

在这个 Frida-RPC 脚本中,我们使用 Java.choose 函数来查找饿了么应用程序的实例。一旦找到实例,我们就可以调用 myDecryptMethod 方法来解密加密参数。然后,我们将解密后的参数发送回 Web 服务,以便在 Flask 应用中使用。

使用 Web 服务解密加密参数

现在,我们可以使用 Web 服务来解密饿了么的加密参数。只需将以下信息发送到 Web 服务的根路径即可:

  • encryptedParam : 加密参数
  • offset : 偏移量

Web 服务将使用 Frida-RPC 脚本解密加密参数,并返回解密后的参数。

结论

通过使用 Flask 和 Frida-RPC,我们可以轻松破解饿了么的加密参数。这种方法使我们能够绕过饿了么的加密措施,获取隐藏在加密参数背后的宝贵信息。对于从事安全研究或逆向工程的人员来说,本文提供了一种实用的技术,可用于进一步探索和分析饿了么的底层机制。