声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!q 2766958292
前言
研究227,有点累了搞了一个非淘。在这非常感谢泰迪波哒对我的帮助。最后直接复制结果然后覆盖原来的值测试的。测了几次都过了就这样吧。227就不说了,我也没研究明白,我是看着boda的日志操作的😄。说这么多简单说一下ab吧,我看最近挺多人都需要ab但是基本都是想白嫖学习的到了关键时刻就说等生效后在看看哈哈还挺精明的或者商用的(我不接商用别找我风控协议不研究)。其实已经开始验证了,只是你们没找到哪个接口罢了。
1.逆向过程
1.1.加密目标文件
直接搜bm.js。如图1.1
1.2.补环境
我现在就来演示一下怎么补环境。
首先打开v-jstools插件。让插件把全部环境吐出来。像我控制台一样图1.2.1。最后复制到pycharm中如图1.2.2。接着把bm.js文件放在下面同时改成自执行函数图1.2.3。挂上代理。
function get_enviroment(proxy_array) {
for (var i = 0; i < proxy_array.length; i++) {
handler = '{\n' +
' get: function(target, property, receiver) {\n' +
' console.log("方法:", "get ", "对象:", ' +
'"' + proxy_array[i] + '" ,' +
'" 属性:", property, ' +
'" 属性类型:", ' + 'typeof property, ' +
// '" 属性值:", ' + 'target[property], ' +
'" 属性值类型:", typeof target[property]);\n' +
' return target[property];\n' +
' },\n' +
' set: function(target, property, value, receiver) {\n' +
' console.log("方法:", "set ", "对象:", ' +
'"' + proxy_array[i] + '" ,' +
'" 属性:", property, ' +
'" 属性类型:", ' + 'typeof property, ' +
// '" 属性值:", ' + 'target[property], ' +
'" 属性值类型:", typeof target[property]);\n' +
' return Reflect.set(...arguments);\n' +
' }\n' +
'}'
eval('try{\n' + proxy_array[i] + ';\n'
+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}catch (e) {\n' + proxy_array[i] + '={};\n'
+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}')
}
}
proxy_array = ['window', 'document', 'location', 'navigator', 'history', 'screen', 'aaa', 'target']
get_enviroment(proxy_array)
接着看报错信息补上这两个
requestAnimationFrame = v_saf(function requestAnimationFrame(){if (!v_new_toggle){ };})
_sdkGlueVersionMap={
"sdkGlueVersion": "1.0.0.51",
"bdmsVersion": "1.0.1.5",
"captchaVersion": "4.0.2"
}
看到还有报错信息走到了一个catch里面。把他全删了。就好了。
最后调用就行了。
1.3.结果
1.4.总结
1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。
2.有多余谷歌手机的可以找我,缺一部dd我。
3.最后不多说了明天还要早起