Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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/csharp-4.0/2.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 如何替换随机变量名?_Javascript_Deobfuscation - Fatal编程技术网

Javascript 如何替换随机变量名?

Javascript 如何替换随机变量名?,javascript,deobfuscation,Javascript,Deobfuscation,因此,我正在处理消除一些javascript代码模糊的任务,并使用www.jsbeautifier.org获得了我的代码。是否可以进行某种类型的搜索和替换查询,或使用其他方法将随机变量名称替换为该实际内容,例如: O7 = "string"; o9 = "test"; function o9(O7) { .... etc } 到 谢谢,在纯正则表达式或语言不可知论中,您不能这样做,因为您不能使用条件替换(或替换)。这意味着你不能做以下事情: b(a),并说:如果

因此,我正在处理消除一些javascript代码模糊的任务,并使用www.jsbeautifier.org获得了我的代码。是否可以进行某种类型的搜索和替换查询,或使用其他方法将随机变量名称替换为该实际内容,例如:

O7 = "string";
o9 = "test";    
function o9(O7) {
       .... etc
    }


谢谢,在纯正则表达式或语言不可知论中,您不能这样做,因为您不能使用条件替换(或替换)。这意味着你不能做以下事情:

  • b(a)
    ,并说:
    如果a为空,则将整个匹配项替换为“c”;否则,请转到“d”。
为什么它有用?继续阅读,看看我们将使用什么来匹配正确的文本

目前,一些正则表达式风格允许您在替换文本中使用不同的“变量”。
(例如:
$n
$”
$&
$`
…)-查看

但是,假设您正在使用Javascript去除Javascript代码,您正在搜索的正则表达式是:

/"[^"]*"|'[^']*'|\/\*[\s\S]*?\*\/|\/\/.*$|\b(<text>)\b/mg
使用该函数,您可以执行您想要的操作,例如,解析:

O7 = "string";
o9 = "test";    
function o9(O7) { ...
并在开始时检索
=
,然后像这样使用它(在循环或其他内部):

code = deobfuscate(code, toFind[i], toReplace[i]);
工作示例
/*文本区域和输入的DOM*/
var代码=document.getElementById(“代码”);
var from=document.getElementById(“from”);
var to=document.getElementById(“to”);
code.placeholder=“代码在这里…”;
from.placeholder=“from”;
to.placeholder=“to”;
/*示例值*/
code.value=“示例://Switch(?):\n”+
函数o9(o9){//true,true\n+
o9='o9';//true,false\n+
“/*\n”+
“o9//false\n”+
“*/\n”+
var test=o9+\“o9\”+o9;//真、假、真\n+
返回o9;//o9//true,false\n+
“}\n”;
from.value=“o9”;
to.value=“确定”;
/*称为onclick操作*/
函数doStuff(){
code.value=deobfousate(code.value,from.value,to.value);
}
函数deobfousate(代码、从、到){
var re=RegExp(“[^”]*“[^\']*”[^\']*“\\\/\\*[\\s\\s]*?\\*\/\\/\/\.$\\\\\/.$\\\\b(“+from+”)\\b,“'gm');
返回代码.replace(re,function(match,g1){return(g1)→to:match;});
}


&rarr;

脱氟
据我所知,没有什么是完全自动化的。我认为,根据代码的数量,最好是手动进行。半手动方法是获得以下定义:
O7=“string”;o9=“test";以类似csv的格式,然后让一个小脚本使用该文件一个接一个地进行每个替换。好吧,我猜这需要几年的时间。哈哈,代码相当长。看看。如果在变量中使用名称而不是数组/对象,则替换回调中的
eval
可能是一个快速的“脏”解决方案。也就是说,一般来说,大多数JavaScript IDE都有重构功能来完成这类工作。
code = deobfuscate(code, toFind[i], toReplace[i]);