源贴发到linuxdo了,博客重发一遍
QQ转发领取红包卡片逆向 - 开发调优 - LINUX DO
最近在 QQ 群看见一个转发领红包的卡片,好奇对这个逆了一下…
入口分析
直接访问:
https://cdn.nfa.qq.com/production/wp-content/uploads/2021/06/7a20f33a88d46c960379ad.html?signature=LWDbmFpgd2eb532548fe8c855ee673a5d21ffb11c4a8570b9d3eb4d19a&red_packet_id=94decdd4ee71476ea088cb9feSK6jIbSw&yb_use_wechat_download_page=1&appid=vcr38%25cch434&_from=&_wv=131073&_wwv=646&_fv=0&_bid=5103
默认会跳转至 QQ 官网下载页
最初怀疑是屏幕尺寸判断,调整分辨率后仍然跳转
随后修改 UA 为 QQ 内置浏览器:
Mozilla/5.0 (Linux; Android 16; A059 Build/BQ2A.250721.001-BP2A.250605.031.A3; wv)
AppleWebKit/537.36 (KHTML, like Gecko)
Version/4.0 Chrome/121.0.6167.71 MQQBrowser/6.2 TBS/047925
Mobile Safari/537.36 V1_AND_SQ_9.2.50_12670_YYB_D
QQ/9.2.50.32575 NetType/WIFI WebP/0.3.0
AppId/537330095 Pixel/1080 StatusBarHeight/126
SimpleUISwitch/0 QQTheme/2058862 StudyMode/0
CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/1.0285715
AllowLandscape/false InMagicWin/0
成功进入页面
远程 JS 分析
页面加载了如下 JS:
https://oss.oss-aliyuncss.com/q/x.js
该 JS 实际为远程加载器,用于拉取远程 HTML 和替换当前页面内容
最终 HTML 指向:
2025lxxxx.oss-cn-beijing.aliyuncs.com/index.html
结构上看像批量生产的模板式页面
UA 限制逻辑
代码中存在 UA 判断:
function isMobileQQ() {
var ua = navigator.userAgent.toLowerCase();
var isMobile = /iphone|ipod|ipad|android|harmonyos/i.test(ua);
var isQQBrowser = /qq/i.test(ua);
var isIOSQQ = /iphone|ipod|ipad/i.test(ua) && /qq/i.test(ua);
var isAndroidQQ = /android/i.test(ua) && /qq/i.test(ua);
var isHarmonyOSQQ = /harmonyos/i.test(ua) && /qq/i.test(ua);
return isMobile && isQQBrowser && (isIOSQQ || isAndroidQQ || isHarmonyOSQQ);
}
if (isMobileQQ()) {
} else {
top.location.href="https://im.qq.com/mobileqq/";
}
作用为限定在 QQ 内置浏览器打开
推测可能是为了防止逆向此网站
不过实现方式较为粗糙,仅基于 UA 字符串判断,很容易破
禁止侧滑返回
调用:
mqq.ui.setWebViewBehavior({ swipeBack:0 })
用于禁止 QQ 内置浏览器侧滑退出页面
微信环境限制
存在如下代码:
function sleep(ms){
var t = new Date().getTime();
while (new Date().getTime() < t + ms) {}
}
function handler() {
var origGet = Object.getOwnPropertyDescriptor(Element.prototype, "outerHTML").get;
Object.defineProperty(document.documentElement, "outerHTML", {
get: function () {
WeixinJSBridge.invoke("closeWindow", {}, function(){});
sleep(0x1f4); // 500ms busy wait
return origGet.bind(this)();
}
})
}
handler()
作用为:劫持 outerHTML,若在微信环境打开,调用 WeixinJSBridge.closeWindow 强制关闭页面
第三方统计
页面还加载:
https://hm.baidu.com/hm.js?f43e74c9eaf28f9f7016fdb2cf0e3767
和
<script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script>
<script>LA.init({id:"3KdthfN7YoDEWf4L",ck:"3KdthfN7YoDEWf4L"})</script>
使用百度和 51la 统计做流量监控
7. 核心逻辑脚本
主逻辑文件:
<script src="//2025lxxxx.oss-cn-beijing.aliyuncs.com/js/sm.2026.js?" defer></script>
sm.2026.js 为核心业务逻辑脚本,包含完整页面逻辑。
仅供研究的反混淆版本:
考虑到这是公开文章,先删除了,如有需要请联系我
关键逻辑
(1)分享次数计算
反混淆后第 1384 行本地计算分享次数
(2)转发文案
反混淆后在第 1144 行定义了分享内容文案
(3)完成转发后跳转
当转发次数达标后页面跳转至外链

最终落地流程
跳转外链后要求绑定手机号

在点击获取验证码后跳转至运营商套餐订购页面
流程闭环如下:
红包诱导 → 强制转发 → 本地计数达标
→ 跳转手机号绑定页面
→ 跳转运营商套餐订阅页面
总结
该站点整体逻辑为:
- 利用 “红包” 噱头诱导传播
- 最终引导用户进入运营商套餐订阅页面
- 通过套餐订阅获取返佣
用阿里云的存储真的不怕被抓吗…
扫描二维码,在手机上阅读





评论一下?