您现在的位置是:网站首页>文章详情文章详情

AST反混淆实战|某里滑块三重switch压缩思路分享

悦来客栈的老板2021-11-19 原创文章 浏览(2639) 评论(0) 喜欢(19)

简介本文思路源自 渔滒 的某里AST反混淆代码,本人仅在此做个归纳总结,并感谢 渔滒 的思路。因法律风险,不提供源码,只有思路,所以请不要问我要源码。

本文思路源自 渔滒 的某里AST反混淆代码,本人仅在此做个归纳总结,并感谢 渔滒 的思路。因法律风险,不提供源码,只有思路,所以请不要问我要源码。


最新版的某里已经到了140前缀(几个月前),并大量的充斥着三目表达式,逗号表达式,如果要还原,从代码难看程度就已经把人吓退了。


其实不然,仔细分析,稍微有点AST的基础,就能将三目表达式还原成 if 语句,if 语句特别的有规律,又可以还原成  switch 语句。由于过于简单,不是此文的重点,再此不表。


第一步:


三目表达式  => if 语句 =>  switch 语句


 经过上面的还原后,会得到一个 三重的 switch 嵌套代码(如下图),特别的长,多达36000行,看起来还是很迷糊。那怎么搞?


图片



我们要还原代码,如果能将三重的switch 变成一重的switch代码,那不就清晰多了?


是否可行呢?


答案是可行的,我们来看最后的那一重switch,其cases最大长度为 28(读者可自行验证):


图片


从 0 - 28,是经过 or = 31 & ir 这段代码计算出来的,而31 的二进制为



11111


二进制前X位全部是1,又考虑到 28 小于 31 ,因此我们可以大胆的猜测,ir的值就是对应的 0 - 28 因为 对于小于 31 的数来说, 31 & X == X ,这个条件是成立的


通过这段代码:


var cr = 31 & rr                  , br = rr >> 5                  , kr = 31 & br                  , ir = br >> 5                  , or = 31 & ir;


我们取最后一个 值 28,来倒推 rr 的值:

1: or = 28 --->    ir  = 28

2 :   ir =  28 --->    br = 28 << 5 = 896

3 :   br = 896 --->  rr = br << 5 = 28672

当 rr == 28672时,可以得到 or 的值是 28:


图片



所以,类似这样的代码:


for (var rr = 7587; void 0 !== rr; ) {                var cr = 31 & rr                  , br = rr >> 5                  , kr = 31 & br                  , ir = br >> 5                  , or = 31 & ir;                switch (cr) {                case 0:                    !function() {                        switch (kr) {                        ......                        case 28:                        _ += "e",                        rr = 5925                        break;                        ......                case 1:                ......          }}


可以直接写成 :


switch(rr):{   ......   case 28672:    _ += "e",    rr = 5925    break;    ......}


其实,也就是由第三重switch中case里的值去逆推 rr 的值,从而就将三重压缩到了一重,同理两重switch也可以压缩成一重代码。


此方法已经经过证实可行,思路是正确可行的。


渔滒 YYDS,再次感谢。


从上面也可以看出,善于分析确实是非常重要的一项技能


AD:


欢迎加入我的个人星球,编写了很多有用的插件,只需要稍微有一点js基础即可,对爬虫工程师和前端工程师均有一定的帮助。


图片


很赞哦! ( 19)
    《Python实战进阶》
    None
    None
    夏至已深

站点信息

  • 建站时间:2019-5-24
  • 网站程序:like in love
  • 主题模板《今夕何夕》
  • 文章统计:104条
  • 文章评论:***条
  • 微信公众号:扫描二维码,关注我们
  • 个人微信公众号