吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2342|回复: 0
收起左侧

[Web逆向] 《JavaScript AST其实很简单》四、Step3-分支流程判断

  [复制链接]
漁滒 发表于 2020-12-29 21:12

分支流程判断

上一章讲到,我们已经将

if (_0x1468d1['KYTBP']('OWFLT', _0x1468d1['imVvW']))

替换为

if ('OWFLT' !== 'OWFLT')

这篇内容的分支流程判断就是这里,可以很明显的看到
在这里插入图片描述
可以看到'OWFLT' !== 'OWFLT'必定为假,那么真部分的代码就是永远不会执行的,相当于废代码,而实际有用的就是假部分的代码
接着就是复制一段代码做语法分析
例如下面的代码

if ('JOSTK' !== 'JOSTK') {
    function _0x74959b() {
        var _0x25def5;
        try {
            _0x25def5 = capJun['YwhOk'](_0x87e8de, capJun['JnPpa'](capJun['nUheI'](capJun['EXptI'], capJun['NiQEl']), ');'))();
        } catch (_0x8fd90a) {
            _0x25def5 = _0x4844c7;
        }
        return _0x25def5;
    }
} else {
    if (_0x17aefa) {
        var _0x46d4c7 = _0x17aefa['apply'](_0x502843, arguments);
    }
}

在这里插入图片描述
这里可以看到这是一个IfStatement的节点,这个节点下有三个子节点,分别为test(判断的内容),consequent(真时执行的代码),alternate(假时执行的代码)
知道这些之后,就可以和之前一个递归遍历所有节点,找到节点的类型是IfStatement。再判断test里面是不是字符串比较,也就是之前说的类型是BinaryExpression,都符合的话,说明这个节点就是需要替换的节点。
然后获取符号以及符号左右的值,通过python判断结果是真还是假,分别替换为consequent或者alternate即可。第三步是所有步骤里面最简单的一步。

运行替换后格式化一下代码
在这里插入图片描述
这里可以看到,前面的if判断都被反混淆掉了
备注:源文件见最下方附件内的ob_step3.txt

免费评分

参与人数 6吾爱币 +15 热心值 +6 收起 理由
luyao1 + 1 + 1 谢谢@Thanks!
troublesun + 1 + 1 我很赞同!
huguo002 + 1 + 1 大佬,别学了,我都跟不上了。。
苏紫方璇 + 10 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
天空宫阙 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
JunMoXiao + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-26 02:03

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表