海关 rs5.5 的加密 解决方法RPC 插桩找入口
- 站点
aHR0cDovL2NyZWRpdC5jdXN0b21zLmdvdi5jbi9jY3Bwd2Vic2VydmVyL3BhZ2VzL2NjcHAvaHRtbC9sb3N0Y3JlZGl0Lmh0bWw=
- 加密参数:
nUdYJ1Ji
过一下debugger
- 自己想办法
找到加密入口
-
hook xhr值
-
var code2 = function(){ var open = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function (method, url, async){ if (url.indexOf("nUdYJ1Ji")>-1){ debugger; } return open.apply(this, arguments); }; }; var script = document.createElement('script'); script.textContent = '(' + code2 + ')()'; (document.head||document.documentElement).appendChild(script); script.parentNode.removeChild(script);
-
用插件什么的自己随便找一个就行
-
-
处理一下console.log 被重写的问题 作者太笨直接用插件重写了
-
hook到参数的位置
-
跟栈到这里 可以发现在send这里是没有加密的
-
所以加密在上一个调用栈
_$fJ
- 可以到这里已经完成加密了 加密的上一个函数是
_$_x
- 这个函数可以发现和瑞数5 的加密有点相似
-
在平坦流中定位到加密入口
- 先打一个日记断点 重新点击下一步 查看这个判断的值的走势以及到最后哪些变量中有我们的加密值
-
继续 加入已加密的arguments进行日志断点
-
可以发现在判断值为100—》30----》30----》60这个流程完成的加密
-
进一步进行插桩断点 (若是在这一步进行判断断点的话会发现再此之前已经完成了加密 说明有其他变量已经存储了我们的加密 这时候只能把变量台中的可疑变量都拿出来 再进行一步插桩)
- 到这里很容易看出来我们判断的arguments还没加密 但是有点变量里面已经把这个url加密了 所以我们要找到这些可疑变量加密的位置
-
在进行一次插桩断点 把可疑的值带上一起
v_log(_$ly+'----'+_$bi['_$_W']+'----'+_$cO[2]['_$_W']+'----'+_$h4[2]['_$_W']+'----'+_$ha[2][2]['_$_W']+'-----'+Array.prototype.slice.call(_$ha[0])[1])
- 这次可以发现加密的判断值流程变了在30—5—62完成加密
-
进行插桩判断这个值的走向 进行断点
v_log(_$hT);window.LSL.push(_$hT);if(LSL[LSL.length-1]==5 && LSL[LSL.length-2]==30 && LSL[LSL.length-3]==5){true}
-
断点到这里发现还是有加密的参数 不管了 进行跟栈看看吧
- 其实还可以进一步进行插桩看看怎么到底在哪加密的 判断这加密后缀长度为96即可
- 我们跟栈发现 到这个apply函数就没有加密的参数了
- apply函数的用法可以自己百度看看
- 主要看apply前面的函数
- 继续查看调用栈
- 继续查看调用栈
- 继续跟栈 终于找到了这个加密入口