Android应用请求数据编码格式解析求助:无法解码获取JSON
解决Android应用加密请求体的解码问题
你遇到的情况是请求体经过加密处理后再做Base64编码,所以直接Base64解码得不到明文JSON。结合请求头里的x-requested-with: com.bo.hooked,说明目标应用对请求数据做了自定义加密,以下是具体的解决思路:
一、确认加密类型
- 检查请求头是否存在加密标识字段(比如
x-encrypt-algorithm、x-key-version等),如果有可直接对应算法解密;但你提供的请求头里没有这类字段,大概率是应用内置的加密逻辑。 - 反编译目标应用(推荐用Jadx工具),定位
com.bo.hooked包下的网络请求相关类,查找请求体的加密代码,通常会调用AES/DES、RSA或者自定义加密方法。
二、常见加密场景的处理方法
1. 对称加密(AES/DES为主)
如果是AES/DES加密后Base64编码:
- 从反编译代码中查找硬编码的密钥(Key)和初始向量(IV),通常会以字符串或byte数组形式存在。
- 拿到密钥和IV后,用对应算法(比如AES/CBC/PKCS7Padding)解密Base64解码后的字节数组,即可得到明文JSON。
2. 非对称加密(RSA)
如果是RSA加密:
- 通常应用会用服务器下发的公钥加密请求体,这种情况需要Hook应用的加密方法,或者获取到私钥才能解密(难度较高,更推荐动态Hook)。
3. 自定义加密算法
如果是应用自研的加密逻辑:
- 反编译后分析加密函数的逻辑,手动复现解密过程;或者用动态调试工具(比如Frida)Hook加密方法,直接获取明文请求数据。
三、Fiddler配合动态Hook的实操方案
- 先绕过应用的证书校验:用Xposed模块
JustTrustMe或者Frida脚本禁用SSL证书校验,确保Fiddler能正常抓取HTTPS请求。 - 用Objection或Frida Hook应用的加密方法:
- 定位到加密请求体的函数,Hook该函数的返回值,直接获取明文;或者Hook输入参数,查看加密前的原始JSON数据。
- 示例Frida脚本思路(伪代码):
Java.perform(function() { var EncryptUtils = Java.use("com.bo.hooked.utils.EncryptUtils"); EncryptUtils.encryptRequest.implementation = function(jsonStr) { console.log("明文请求体:", jsonStr); return this.encryptRequest(jsonStr); } });
内容的提问来源于stack exchange,提问作者Даня
相关产品推荐
相关产品推荐

