Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以编写一个正则表达式来检查字符串(javascript和php代码)是否缩小?_Php_Javascript_Regex_Obfuscation - Fatal编程技术网

是否可以编写一个正则表达式来检查字符串(javascript和php代码)是否缩小?

是否可以编写一个正则表达式来检查字符串(javascript和php代码)是否缩小?,php,javascript,regex,obfuscation,Php,Javascript,Regex,Obfuscation,是否可以编写一个正则表达式来检查字符串(某些代码)是否缩小 许多PHP/JS模糊处理程序删除空白字符(以及其他内容)。 因此,最终缩小的代码有时如下所示: PHP: $a=array();if(is_array($a)){echo'ok';} JS: a=[];if(typeof(a)=='object'&&(a instanceof Array){alert('ok')} 在这两种情况下,在“{”、“}”、“;”等之前和之后都没有空格字符。还有一些其他模式可以提供帮助。我并

是否可以编写一个正则表达式来检查字符串(某些代码)是否缩小

许多PHP/JS模糊处理程序删除空白字符(以及其他内容)。 因此,最终缩小的代码有时如下所示:

PHP:
$a=array();if(is_array($a)){echo'ok';}

JS:
a=[];if(typeof(a)=='object'&&(a instanceof Array){alert('ok')}
在这两种情况下,在“{”、“}”、“;”等之前和之后都没有空格字符。还有一些其他模式可以提供帮助。我并不期待一个高精度的正则表达式,只需要一个检查是否至少100个字符的字符串看起来像缩小的代码。 谢谢你的建议


用途:网络恶意软件扫描器

我认为缩小程序将删除所有换行符,尽管如果缩小代码粘贴回文本编辑器,文件末尾可能仍有一个换行符。类似的内容可能相当准确:

/^[^\n\r]+(\r\n?|\n)?$/

这只是测试在整个事件中没有换行符,除了结尾可能有一个。因此没有保证,但我认为它在任何较长的代码块上都能很好地工作。

我认为一个缩略器将删除所有换行符,尽管如果缩略后的代码被粘贴回文本编辑器中,文件末尾可能仍然有一个。类似的内容可能相当准确:

/^[^\n\r]+(\r\n?|\n)?$/

这只是测试在整个事件中没有换行符,除了结尾可能有一个。因此没有保证,但我认为它在任何较长的代码块上都能很好地工作。

没有。因为语法/代码及其意图没有改变,一些非常熟悉php和/或js的人会在一行上编写简单的函数,而没有任何空格(me:s)

你可以做的是计算一个字符串中的所有空白字符,尽管这也不可靠,因为有些东西你只需要空白,比如x instanceof y heh。此外,并非所有代码都被缩小并压缩到一行中(参见jQueryUI),因此您也不能指望这一点


也许你可以解释为什么你需要知道这一点,我们可以试着找到一个替代方案?

不。因为语法/代码及其意图没有改变,一些非常熟悉php和/或js的人会在一行上编写简单的函数,而没有任何空格(me:s)

你可以做的是计算一个字符串中的所有空白字符,尽管这也不可靠,因为有些东西你只需要空白,比如x instanceof y heh。此外,并非所有代码都被缩小并压缩到一行中(参见jQueryUI),因此您也不能指望这一点

也许你可以解释一下为什么你需要知道这一点,我们可以试着找到一个替代方案?

简单的回答是“不”,regex无法做到这一点

您最好的选择可能是对源文件进行统计分析,并与一些已知的启发式方法进行比较。例如,将变量名与最小化代码中常见的变量名进行比较。最小化的文件可能有很多单字符变量名,例如。。。在所有一个字符的变量名用完之前,不会有两个字符的变量名。。。等等

另一种选择是通过最小化程序运行源文件,并查看输出是否与输入有足够的不同。如果不是,它可能已经被最小化了

但我必须同意sg3s的最后一句话:如果你能解释你为什么需要这个,我们可能会为你的实际需要提供更有用的答案。

简短的回答是“不”,regex无法做到这一点

您最好的选择可能是对源文件进行统计分析,并与一些已知的启发式方法进行比较。例如,将变量名与最小化代码中常见的变量名进行比较。最小化的文件可能有很多单字符变量名,例如。。。在所有一个字符的变量名用完之前,不会有两个字符的变量名。。。等等

另一种选择是通过最小化程序运行源文件,并查看输出是否与输入有足够的不同。如果不是,它可能已经被最小化了


但我必须同意sg3s的最后一句话:如果你能解释你为什么需要这个,我们可能会为你的实际需要提供更有用的答案。

你无法判断它是缩小了还是只是手工编写的(可能只适用于较小的脚本)。但是您可以检查它是否包含不必要的空格

看看开源模糊器/迷你器,看看它们使用什么规则来删除空白。验证是否应用了这些规则应该有效,如果正则表达式变得复杂,可能需要一个简单的解析器


只需确保像
a=“if(b)”
这样的字符串文本被排除在外。

您无法判断它是被缩小了还是只是手工编写的(可能只适用于较小的脚本)。但是您可以检查它是否包含不必要的空格

看看开源模糊器/迷你器,看看它们使用什么规则来删除空白。验证是否应用了这些规则应该有效,如果正则表达式变得复杂,可能需要一个简单的解析器


只要确保像
a=“if(b)”
这样的字符串文本被排除在外。

通过该特定语言的解析器运行它(即使是修饰语也可以正常工作),然后修改它以计算未使用的字符数。使用文档中未使用字符的百分比与字符数作为缩小测试。我不认为使用正则表达式可以准确地做到这一点,尽管计算空白与文档内容可能没问题。

通过该特定语言的解析器运行它(即使是修饰语也可以),然后修改它以计算未使用的字符数。使用文档中未使用字符的百分比与字符数作为缩小测试。我不认为你能用正则表达式准确地做到这一点,