如有侵权,请联系作者删除
这种void一开始一看就以为是无效代码,但是呢,其实它也会运行里面的代码,使其赋值,进行计算,然后传递给控制流
这个简单,直接用ast还原即可。
还原之后呢,有会大量的三元表达式让你调试的时候,一下子就调到了break。
这个简单,直接用把三元表达式还原到if-else表达式即可
基本上还原到这里的话,你就可以得到正常的去逆向调试了。对了,每次还原你都得拿你decode代码去替换目标阿里的fireyejs文件去手动运行一次,这样才知道你还原的是否正确。对于现在来说,有俩条路,第一次是不断的去还原控制流,使其代码量越来越少,我们分析的越少,这样事半功倍的去分析其中的算法,第二是补环境,通过模拟浏览器的环境去补出一个227的算法。我选择了补环境。
首先我们简单逆向下,就可以得到我们传入这个到i就可以拿到227的结果,具体的流程就不多说了,网上太多人教了,我也不再赘述了。
后面通过浏览器proxy代理其中参数,得到目标代码需要什么,检测什么。阿里的检测点是我目前遇到最多的了,首先原型链几乎每拿一个属性,都会检测一下其中的原型链,如果你补环境框架不扎实,就会跳到不一样的分支,得到一个错误的227代码。bom和dom的解析要把log到基本实现好,需要什么,我们就返回什么即可。
有些属性是原生浏览器没有的,我们也不要让他有。要使整体流程与目标执行网站的流程一直以及代码分支一致,这样你才生成的(真假)227,补环境的就不多说了,需要什么补什么。上文提到的227为什么是真假呢,因为你根本不知道错没错。我这边拿淘宝官方x82y的login来演示,如果227生成set-cookie成功会出x5sec,setcookie出错的话,会返回x5secdata
下面是taobao—login滑块成功截图
最后啰嗦一下逆向这条路真的越来越难,但是一步步来的话(如果你能一步一步来的话),就比较简单了。也许有时候你往往是一个人去挑战一个team的检测。也许别人只是个ast加密模板,几秒生成一个动态变化随机检测样式,那到时候,你还能坚持下去吗?到了那个时候阿里跟瑞数一起变一下,估计大伙都整的不耐烦了,大佬们都上魔改动态浏览器去爬虫了。