关于逆向工程:极验深知验证分析

4次阅读

共计 1146 个字符,预计需要花费 3 分钟才能阅读完成。

案例地址:geetest.com/Register
案例内容:剖析极验登录时深知检测 V2 提交的 Request Payload 信息。

文章内容仅作学习参考,如有侵权请分割作者进行删除


接口分析

POST 申请

加密 Payload:


参数定位

长话短说,通过 XHR 断点。

往回走 5 步就能够看到参数生成的地位。

依据调试信息和接口中的值比照,发现 e = DWYi[ymDv(1137)](l) 是 payload 的其中一部分。

持续调试,发现代码:e + h[AUJ_(1173)]

联合调试信息得出结论:payload = DWYi[ymDv(1137)](l) + h[AUJ_(1173)]


h[AUJ_(1173)]

经测试,h 是动静的,其中的 aeskey 和 rsa 的值不固定。

再次剖析源码,可知 h = o[AUJ_(1156)]()

持续调试,AUJ_(1156) = ‘LpFU’

双击点进去,找到对应的办法。

把这个文件内容在 Lxtools 中解混同一下, 变量名还原。

复制到本地格式化后的整体代码构造如下:

发现都是自执行的办法,手动解决后能够改成如下所示:

而后依据报错把环境补上,比方呈现的这些

补完之后再次运行,会返回 MlHc。而后批改下代码,让其返回 LkEB['prototype'].LpFU()

运行测试,胜利打印了 o[AUJ_(1156)](),从中提出 rsa 参数即可。


DWYi[ymDv(1137)](l)

先查看各项含意,其中 l 是EbF_[ymDv(409)](e, h[ymDv(1194)]),调用办法为DWYi['tc_t']


先看 l

可知此处的 aeskey 是从咱们第一段剖析剖析的 o[AUJ_(1156)]() 对象中提取的。

此处的 e 中包含了操作 id、行为轨迹,以及未知参数。

EbF_[ymDv(409)]是对应的 encrypt 加密办法。在本地中可看到由 JOOO 返回,JOOO 在 EbF_中。

那能够间接应用 EbF_.encrypt()来调用加密办法。

即:EbF_.encrypt(e, h[ymDv(1194)])

本地调用,胜利生成 l。


调用 tc_t

有了 l 之后,咱们在补的 JS 中间接调用 DWYi.tc_t(l) 即可。

总体流程:

// 注册 _asekey_rsa 
_asekey_rsa = LkEB['prototype'].LpFU()
rsa = _asekey_rsa.rsa
aeskey = _asekey_rsa.aeskey
// 生成 l
var l = EbF_.encrypt(e,aeskey)
// 加密后拼接
return DWYi.tc_t(l)+rsa

打印后果:


总结

次要内容是流程剖析和对混同代码的解决和调用。

文章内容绝对深知检测来说只是皮毛,只剖析了 Payload 参数,深层的检测剖析任重而道远。

本文辅助代码在公众号《Pythonlx》回复 shenzhi 支付。

正文完
 0