猿人学练习题第九题(sojson+混淆)
注:这是人生第一次发辫博客,不太会漂亮的格式,以后慢慢的改过来。
1.摸索加密思路
原题是求时间戳为1589023846363对应的sign的值,首先习惯性的按下F12,然后就是如下情况,直接是无限debugger,对于过无限debugger的方法有好几种,所以呢在这里我打算不过这个debugger。
![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3
然后就出现了一大堆看不懂的代码(反正我是看不懂的),但总有那么几个字眼是格外刺眼的,比如下面那几个,
其实了解过 sojson.的大佬应该一眼就知道这里就是他检测的地方,反正我见过的sojson都是通过这里的方式来进行检测的,至于还没了解过的大佬,我就提一下(懂得都懂),就它:
额,放错图片了。我还是按照我的思路来讲吧,到点的地方我再说,先把加密的js全复制下来(记得格式化后),在头部加上debugger(个人习惯),再在每个正则表达式的后面也加上debugger,接着将带有debugger的代码放入浏览器,记得是干干净净的浏览器,然后回车,然后见下图:
看到没?看到没?就他,把他这段代码还原成一行,不要缩进、换行就好了,这就是sojson的手段,我之前在调试sojson官网的时候,怎么搞都不行,后来一气之下把没有格式化的代码直接网浏览一扔就好了,所以就那啥了。接着往下走:
如果不过检测,返回值就是false,所以这个地方还有个粗暴的办法,就是直接把布尔值取反,但是我还是觉得这样不好,其他大道理不知道,但最起码得尊重一下开发者,不过万不得已的情况也只能这样干了。接着走,当断点不再断下来或者直接卡死的话,那就把这些改好的代码解混淆,因为实在看不懂了,然后就会发现:
看看,他这里把debugger都给混淆了,还有直接把debugger封死,上面的逻辑不管怎样你都逃不了,是个狠人,所以这个地方直接把debugger和返回while true的那个函数,还有下面的定时器全部干掉(删除),然后继续放入浏览器,然后出现以下状况:
这时候,我已经不想再看逻辑了,直接把在上面函数入口处的逻辑取反,然后在sign处打上断点继续走:
大功告成!!这是第一次写这种东西,排版上和思路逻辑上都不明了,以后一定改正,希望能帮到需要的人,如果会的大佬轻点喷。
2.最后总结
转载请注明出处,谢谢。没了。。。。。