音乐应用WASM逆向实战:揭秘验证码参数生成全流程
音乐应用通过WASM技术实现了复杂的验证码验证机制。在逆向过程中,参数如mid、uuid、signature、params、pk、sid、edt等均可精准定位生成逻辑。mid和uuid利用Cookie与浏览器指纹经MD5加密生成;signature通过URL参数拼接后MD5运算得出;params调用AES算法加密;pk则采用RSA公钥加密;sid和edt则直接依赖WASM模块实例。整个流程结合了堆栈调试、Hook脚本和环境模拟,彻底破译了验证逻辑。实践证明这些手法适用于同类验证码场景。
抓包分析破解验证码接口
进入音乐应用首页后,输入随机手机号并触发验证码发送操作,系统会弹出验证窗口。此时抓取网络请求,可发现两个核心接口:send_mobile用于提交手机号并触发验证流程,get_verfy_info则用于获取验证详细信息。send_mobile接口响应头中会携带ssa-code参数,而get_verfy_info接口会将该参数嵌入请求体。后续调用v4/verify_user_info接口时,响应中多次出现WASM相关标识,这为逆向提供了关键突破口。最终通过send_mobile接口返回的状态码1,标志会话正式建立。分析显示,可逆向的关键参数包括mid、uuid、signature、params、pk、sid和edt。这些参数共同构成了完整验证链路,理解其生成原理是破解验证码的基础。

mid和uuid参数的定位与生成机制

点击发送按钮后,查看send方法的调用堆栈,从第一个进入点开始搜索mid关键字。在多个断点位置中,成功定位到getKgMid函数,该函数优先从Cookie中提取kg_mid值,若不存在则通过MD5加密浏览器指纹数据生成。借助v_jstools Hook脚本可捕获Cookie设置过程,脚本逻辑如下:

function () {
var cookieTemp = '';
Object.defineProperty(document, 'cookie', {
set: function (val) {
if (val.indexOf('kg_mid') != -1) {
debugger;
}
console.log('Hook捕获到cookie设置->', val);
cookieTemp = val;
return val;
},
get: function () {
return cookieTemp;
}
});
}刷新页面后断点命中,向栈跟进可发现uuid生成函数。函数内部通过S4随机数生成算法构造GUID格式字符串,再经MD5运算得到mid值。uuid本身采用类似S4逻辑实现随机化,这种组合方式确保了参数的唯一性与安全性。

signature参数的拼接与加密过程

全局搜索signature关键字,在send方法中成功断点。生成逻辑是将URL参数与data参数拼接后,分别调用K.unshift和K.push插入固定字符串,最后通过join方法合并为完整字符串,再执行MD5加密。整个过程看似简单却层层嵌套,确保了signature的随机性。逆向时需注意参数拼接顺序与加密算法细节,否则可能导致结果不匹配。

params和pk参数的AES与RSA加密分析

params参数生成位置紧接mid下方,通过AES加密对象数据实现。AES函数逻辑包括生成随机密钥t,经MD5处理后分别作为key和iv,最后将json字符串加密并转为十六进制输出。复现时可使用CryptoJS库模拟完整流程。pk参数则由RSA加密生成,采用公钥指数10001和NoPadding模式。节点中导入RSA模块后,通过公钥B1B1EC76...加密json字符串即可得到一致结果。代码示例:

const RSA = require('./rsa');
function rsa_encode(word) {
word = JSON.stringify(word);
const publicKey = "B1B1EC76A1BBDBF0D18E8CD9A87E53FA3881E2F004C67C9DDA2CA677DBEFA3D61DF8463FE12D84FF4B4699E02C9D41CAB917F5A8FB9E35580C4BDF97763A0420A476295D763EE10174E6F9EBF7DF8A77BA5B20CDA4EE705DEF5BBA3C88567B9656E52C9CD5CD95CA735FF2D25F762B133273EEEB7B4F3EA8B6DA29040F3B67CD";
return RSA.encrypt(word);
}参数一致性验证通过后,pk和params已可复现。

WASM模块在sid和edt参数中的作用

sid与edt参数位于方法末尾,生成逻辑涉及new wasm_bindgen.EData对象。进入EData内部后,全局搜索wasm_bindgen关键字,清除缓存刷新页面后在初始化位置断点。单步跟进可见加载wasm文件并配置imports对象。WASM模块包含原型链检测、DOM层检查、WebGL API操作等大量环境验证。若在Node环境中直接加载会失败,必须将verifycode.js完整拉至本地,并挂载document、window、navigator等代理对象。instanceof函数通过Symbol.hasInstance实现类型检查,避免直接依赖原生instanceof操作符。

逆向总结与实际应用建议

通过堆栈调试、Hook脚本和环境模拟,上述参数生成逻辑已全部清晰呈现。mid与uuid结合Cookie和指纹,signature采用拼接MD5,params依赖AES,pk使用RSA,sid和edt则依托WASM实例。这些技术组合形成完整验证链路,适用于同类音乐与验证场景。实际业务中,理解原理后可利用自动化平台实现无缝对接,快速完成验证码破解与验证流程。参考www.ttocr.com平台提供的易盾极验验证码识别技术,包括滑块、点选、无感、九宫格等破解方案和自动化API对接服务,可帮助业务团队高效集成相关功能,实现无缝对接体验。






















