杀猪用牛刀 发表于 2022-11-22 13:03

这个JavaScript的正则表达式到底匹配的是啥?

今天在分析一个JS逆向的代码,然后发现一个正则表达式,搞不懂到底什么内容他才会返回为true。

var _0x15716b = function(_0xdcbe5d) {
                this['pPrrGO'] = _0xdcbe5d;
                this['KYlUFq'] = ;
                this['CEBcWS'] = function() {

                  return 'newState';
                }
                ;
                this['ASITpj'] = '\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*';
                this['vGwItR'] = '[\x27|\x22].+[\x27|\x22];?\x20*}';
            };
            _0x15716b['prototype']['NcpnCP'] = function() {
                var _0x498902 = new RegExp(this['ASITpj'] + this['vGwItR']); //这边是正则表达式
                var _0x126f20 = _0x498902['test'](this['CEBcWS']['toString']()) ? --this['KYlUFq'] : --this['KYlUFq'];
                return this['hJzkMe'](_0x126f20);
            };

以上是部分代码,然后我把这个正则表达式抠出来,是以下这样:
var reg = new RegExp("\w+ *\(\) *{\w+ *['|"].+['|"];? *}");

var testString = "function () {abc [\"aaa\"].[\"bbb\"]; }";//这是我自己举的例子

Reg.test(testString);// 结果是false

我就搞不明白,这个正则表达式不是匹配普通函数吗?为啥返回的结果是false?我自己举的例子不对吗?

way226510 发表于 2022-11-22 13:14

test是匹配字符串是否有符合正则表达式的返回true或者false,match和search才是匹配结果

tl;dr 发表于 2022-11-22 13:19

sylf0120 发表于 2022-11-22 13:24

这是混淆后的代码吧{:1_924:}

as614001 发表于 2022-11-22 13:36

本帖最后由 as614001 于 2022-11-22 13:42 编辑

你这正则也不对啊
{}里面应该是数字啊 {0,5},{5}此类
要么还要有转移符号

MinxArrix 发表于 2022-11-22 13:46

看起来像是匹配generator语法的a *() {} 自己瞅瞅 类似的 是判断被压缩过得吧 也就这样才会出现只匹配一个字符的方法名称才会匹配的情况

Broadm 发表于 2022-11-22 13:55

let reg = new RegExp(`\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}`)
let testString = "function () {abc \"aaa\".\"bbb\"; }";

let result = reg.test(testString);//

console.log(reg)
console.log(result)

这样可以, 因为 [ ] 是正则的语法, 要匹配的话,需要转义, 所以你的不对

MinxArrix 发表于 2022-11-22 13:55

/\w+ *\(\) *{\w+ *['|"].+['|"];? *}/.test(`test() {return "'..xx.x.x.x.x'"}`);

返回是true
暂时没想明白 会在什么情况下 需要这种东西 判断箭头函数是否包含方法体的东西么 有法子debugger没 {:1_918:}

DHCF 发表于 2022-11-22 14:23

test方法的返回值就是boolean

gorkys 发表于 2022-11-22 15:55

这里大概率就是一个格式化检测的正则。
页: [1] 2
查看完整版本: 这个JavaScript的正则表达式到底匹配的是啥?