1.第十八题 jsvmp - 猿人学
问题:
1.第一页请求正常能返回数据
2.第二页开始之后出现{"error": "Unexpected token/Validation failed"}
分析:
1.第二页开始,有带加密参数,直接重发请求无果,应该带了时间戳加密
先说说什么是jsvmp,jsvmp 只有在调试的时候才能理解代码
jsvmp总体架构
整体架构流程是服务器端通过对JavaScript代码词法分析 -> 语法分析 -> 语法树->生成AST->生成私有指令->生成对应私有解释器,将私有指令加密与私有解释器发送给浏览器,就开始一边解释,一边执行
日志点写法
_v_[4][___].toString()!='[object MouseEvent]'? _v_[0]:null.x
v__,"==>",_v_[4][___].toString()!='[object MouseEvent]'?_v_[4][___]:null.x
然后上条件断点
arguments[0].toString()!='[object MouseEvent]'
_[2][0].e.toString()!='[object MouseEvent]'
首次直接进入 __V(u__, _v_[2], _V_),因为_v_[1]是[]空
3 == __U || 15 == __U || 11 == __U || 13 == __U || 28 == __U || 30 == __U || 41 == __U 底部节点
return __(v__, __U) ,重新安装节点
可以看到是clientX +"字符" + clientY , 是一个鼠标轨迹 ,按照英文字母可以猜m 是move ,d 是down,u 是 up ,也就是鼠标的移动,按下,弹起的记录,还有上面记录了是AES加密,展开是PKCS7 CBC 。基本知道加密逻辑,鼠标轨迹加密
进入流程27
拿到key 和 iv了