声明:
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除!q 2766958292
声明:
这几天尝试了一下227,对比了一下环境检测点,发现弄的已经挺不错的了,还有几个左右监测点被他检测了,想了半天没想明白长度基本一致竟然还不行。后面用了框架代理了一下发现开局就检查了6个原型对象。我是真的无语了,决定暂时不搞了,我全程基本都是obj.key=value,少数是obj.prototype.key=value,基本套路我是搞明白了。环境检测有点多,我不可能像boss那一样一个个插桩一个个根,一个个进去找监测点。boss我用了10多天,才勉强完成227就更别提了,而且估摸着也快更新了就不研究了。水篇文章。
1.逆向过程
1.1.h5st
这是如下伪代码。
L = sign(3858)
sign(27409)
F = sign(52153)
K = sign.n(F)
_ = sign(59340)
k = sign.n(_)
x = sign(2991)
w = sign.n(x)
function getH5st(){
i={
"funName": "#",
"param": #,
"clientPageId": "#"
}
g = "#"
v='#'
m = null == v ? void 0 : v.split(".")[1]
b = {
functionId: "#",
appid: "#",
_: #,
loginType: "#",
uuid: #,
"x-api-eid-token": '#'
}
x = new L.Z({
appId: "586ae"
})
i = _J(_J({}, i), {}, {
clientPageId: "jingfen_pc"
})
w = {
functionId: "unionSearch",
appid: "unionpc",
body: K()(k()(i)).toString()
}
x.sign(w)
env_r = {
"sua": "Windows NT 10.0; Win64; x64",
"pp": {},
"fp": x['_fingerprint']
}
env = JSON.stringify(env_r, null, 2)
o = _Uv['AES']['encrypt'](env, _Uv['enc']['Utf8']['parse']('#'), {
iv: _Uv['enc']['Utf8']['parse']('#'),
mode:_Uv['mode'].CBC,
padding: _Uv['pad']['Pkcs7']
})
o=o['ciphertext']['toString']()
e = x['__checkParams'](w)
_o= x['__makeSign'](e, o)
result=Object.assign({}, w, _o)
b = _J(_J({}, b), {}, {
h5st: encodeURI(result['h5st'])
})
b['body']=JSON.stringify(i)
return b
}
对应逻辑是这里图1.1
case12里面跟进去就可以发现key和iv了。
1.2.结果
1.3.总结
1.我发现我一直在逆向但是我数据分析处理能力却像一坨一坨大便,发现自己又是太差劲了后续拿豆瓣练练手学学数据处理分析应用。
2.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。
如果侵犯到你的权益联系我,我会马上删除
wx a15018601872
q 2766958292