吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 996|回复: 17
收起左侧

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

[复制链接]
杀猪用牛刀 发表于 2022-11-22 13:03
今天在分析一个JS逆向的代码,然后发现一个正则表达式,搞不懂到底什么内容他才会返回为true。

[JavaScript] 纯文本查看 复制代码
var _0x15716b = function(_0xdcbe5d) {
                this['pPrrGO'] = _0xdcbe5d;
                this['KYlUFq'] = [0x1, 0x0, 0x0];
                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'][0x1] : --this['KYlUFq'][0x0];
                return this['hJzkMe'](_0x126f20);
            };


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

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

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


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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
Sisypheee + 1 + 1 谢谢@Thanks!

查看全部评分

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

way226510 发表于 2022-11-22 13:14
test是匹配字符串是否有符合正则表达式的返回true或者false,match和search才是匹配结果
头像被屏蔽
tl;dr 发表于 2022-11-22 13:19
sylf0120 发表于 2022-11-22 13:24
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
[JavaScript] 纯文本查看 复制代码
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没
DHCF 发表于 2022-11-22 14:23
test方法的返回值就是boolean
gorkys 发表于 2022-11-22 15:55
这里大概率就是一个格式化检测的正则。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 03:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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