饿了么的加密参数揭秘:使用 Flask + Frida-RPC 轻松破解
2024-01-07 08:13:38
饿了么是国内知名的外卖平台,凭借着庞大的用户群体和广泛的商家网络,稳居行业领头羊的地位。为了保障用户数据的安全性和隐私,饿了么采用了加密措施来保护用户的信息。然而,这些加密措施并不能阻挡安全研究人员探索其底层机制的热情。
本文将深入剖析饿了么的加密参数,并介绍如何使用 Flask 和 Frida-RPC 搭建一个简单的 Web 服务来解密这些参数。通过这种方法,我们将能够绕过饿了么的加密措施,获取隐藏在加密参数背后的宝贵信息。
饿了么的加密参数
此前,饿了么的请求参数是不需要加密的。然而,随着安全意识的增强和用户隐私保护的重视,饿了么引入了加密措施来保护敏感信息。饿了么的加密参数主要用于对请求参数进行加密,以防止未经授权的访问和篡改。
根据我们的研究,饿了么的加密参数由三个部分组成:
- 偏移量 (offset) :一个随机生成的数字,用于对参数进行偏移。
- 密钥 (key) :一个固定密钥,用于对参数进行加密。
- 加密参数 (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,我们可以轻松破解饿了么的加密参数。这种方法使我们能够绕过饿了么的加密措施,获取隐藏在加密参数背后的宝贵信息。对于从事安全研究或逆向工程的人员来说,本文提供了一种实用的技术,可用于进一步探索和分析饿了么的底层机制。