从脱壳到无视抓包限制破解某壁纸APP注册登录协议和会员
字数 1629 2025-08-06 12:20:51
从脱壳到破解壁纸APP注册登录及会员限制的完整技术分析
一、背景概述
本文档详细记录了对某壁纸APP从脱壳到破解其注册登录协议及会员限制的完整技术流程。该APP采用了VPN监测机制防止传统抓包,但通过hook技术成功绕过限制,实现了脱机注册登录及VIP资源访问。
二、技术分析流程
1. 传统抓包尝试与限制分析
发现的问题:
- 使用HttpCanary工具通过VPN代理抓包时,APP检测到VPN连接后停止所有网络流量
- 刷新页面时持续显示"正在加载",无法获取任何数据包
结论:该APP实现了VPN/代理检测机制,阻止传统抓包方式
2. Hook框架抓包方案
2.1 网络框架分析
动态分析步骤:
- 动态搜索
HttpURLConnection- 确认使用 - 动态搜索
OKHttp- 确认也使用okhttp3框架
静态分析验证:
- 使用Jadx反编译APK发现加壳
- 使用frida-dexdump进行脱壳
- 从脱壳后的文件确认确实使用了okhttp3
2.2 Hook实施
工具准备:
- 使用OkHttpLogger-Frida框架
- 将
okhttpfind.dex拷贝到/data/local/tmp并赋权777
执行流程:
- frida Spawned模式下执行
find()命令检查混淆情况- 确认无混淆
- 将查找结果复制到
okhttp_poker.js - 使用
hold()命令开始抓包
抓包优势:
- 界面简洁
- 可获取完整明文传输数据
- 绕过APP的VPN检测机制
3. 注册协议分析与破解
3.1 注册请求分析
请求示例:
https://x.xxxxxxxx.xxx/wp-admin/admin-ajax.php?action=ajaxregister2
?username=qqqqwwww
&passwd=123456789
&email=a@qq.com
响应分析:
- 成功:
{"success":1, "message":"注册成功"} - 失败:
{"success":0, "message":"此用户名已被注册"}
3.2 Python实现脱机注册
import requests
import json
headers = {
'user-agent': 'Mozilla/5.0 (Linux; Android 8.1.0; Nexus 6P Build/OPM7.181205.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36 uni-app Html5Plus/1.0 (Immersed/24.0)'
}
def register(username, passwd, email):
url = 'https://x.xxxxxxxx.xxx/wp-admin/admin-ajax.php?action=ajaxregister2'
params = {
'username': username,
'passwd': passwd,
'email': email
}
response = requests.get(url=url, params=params, headers=headers, verify=False)
result = response.content
json_obj = json.loads(result)
print(json_obj)
print(json_obj['message'])
安全风险:
- 可编写循环实现批量注册,对服务器造成压力
- 缺乏验证码等防护机制
4. 登录协议分析与破解
4.1 登录请求分析
请求示例:
https://x.xxxxxxxx.xxx/wp-admin/admin-ajax.php?action=ajaxlogin2
?username=qqqqwwwwa
&passwd=123456789
4.2 Python实现脱机登录
def login(username, passwd):
url = 'https://x.xxxxxxxx.xxx/wp-admin/admin-ajax.php?action=ajaxlogin2'
params = {
'username': username,
'passwd': passwd
}
response = requests.get(url=url, params=params, headers=headers, verify=False)
result = response.content
json_obj = json.loads(result)
print(json_obj)
安全风险:
- 可实施暴力破解攻击
- 明文传输凭证,中间人攻击风险高
5. 会员限制绕过分析
5.1 用户信息获取
发现:
- 登录成功后每2-3秒请求一次用户信息
- 返回包含用户所有权限信息的JSON数据
- 所有boolean字段均为true,难以直接判断VIP字段
5.2 非VIP与VIP资源差异
观察结果:
- 非VIP用户看到的壁纸带有手机边框
- VIP用户看到的壁纸无边框
技术判断:
- 服务器存储了两种版本的图片(带边框和不带边框)
- 通过URL区分访问权限
5.3 资源URL分析
发现:
- 请求VIP栏返回JSON包含三种URL:
- 非VIP版本URL
- VIP版本URL
- 使用者版本URL
示例对比:
- 非VIP URL:
[带边框图片URL] - VIP URL:
[无边框图片URL]
三、完整技术总结
-
绕过抓包限制:
- 使用frida-dexdump脱壳
- 通过OkHttpLogger-Frida hook网络请求
- 成功绕过VPN检测机制
-
协议安全缺陷:
- 注册/登录均为明文HTTP GET请求
- 无验证码防护
- 无请求频率限制
- 无有效签名机制
-
权限控制缺陷:
- 客户端直接使用服务器返回的URL区分权限
- 无二次鉴权机制
- 静态URL可预测
-
修复建议:
- 实现HTTPS加密传输
- 增加请求签名机制
- 对敏感操作实施频率限制
- 服务端对资源访问进行二次鉴权
- 混淆VIP相关字段名称
四、完整PoC代码
import requests
import json
class WallpaperExploit:
def __init__(self):
self.headers = {
'user-agent': 'Mozilla/5.0 (Linux; Android 8.1.0; Nexus 6P Build/OPM7.181205.001; wv) '
'AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 '
'Mobile Safari/537.36 uni-app Html5Plus/1.0 (Immersed/24.0)'
}
self.base_url = 'https://x.xxxxxxxx.xxx/wp-admin/admin-ajax.php'
def register(self, username, password, email):
"""脱机注册功能"""
params = {
'action': 'ajaxregister2',
'username': username,
'passwd': password,
'email': email
}
response = requests.get(
url=self.base_url,
params=params,
headers=self.headers,
verify=False
)
return response.json()
def login(self, username, password):
"""脱机登录功能"""
params = {
'action': 'ajaxlogin2',
'username': username,
'passwd': password
}
response = requests.get(
url=self.base_url,
params=params,
headers=self.headers,
verify=False
)
return response.json()
def get_vip_resources(self):
"""获取VIP资源URL"""
# 此处需要替换为实际的VIP栏请求参数
params = {
'action': 'get_vip_wallpapers'
}
response = requests.get(
url=self.base_url,
params=params,
headers=self.headers,
verify=False
)
return response.json()
# 使用示例
exploit = WallpaperExploit()
# 1. 注册测试
print(exploit.register("testuser123", "password123", "test@example.com"))
# 2. 登录测试
print(exploit.login("testuser123", "password123"))
# 3. 获取VIP资源(需要先分析具体请求参数)
# print(exploit.get_vip_resources())
五、防御措施建议
-
通信安全:
- 强制使用HTTPS
- 实现请求签名
- 使用时间戳防重放
-
认证加固:
- 增加图形验证码
- 实施登录失败锁定
- 密码复杂度要求
-
权限控制:
- 服务端二次鉴权
- 动态URL生成
- 资源访问令牌
-
反调试/反hook:
- 检测frida等调试工具
- 代码混淆
- 完整性校验
-
监控与响应:
- 异常请求监控
- 用户行为分析
- 自动封禁机制