Javascript 调用 Function() 来创建一个函数

标签 javascript function native deobfuscation

谁能解释一下下面的代码?

Function(
Function(
'return \'\\141\\75\\160\\162\\157\\155\\160\\164\\50\\47\\105\\156\\164\\162\\145\\172\\40\\154\\145\\40\\155\\157\\164\\40\\144\\145\\40\\160\\141\\163\\163\\145\\47\\51\\73\\151\\146\\50\\141\\75\\75\\47\\164\\157\\164\\157\\61\\62\\63\\154\\157\\154\\47\\51\\173\\141\\154\\145\\162\\164\\50\\47\\142\\162\\141\\166\\157\\47\\51\\73\\175\\145\\154\\163\\145\\173\\141\\154\\145\\162\\164\\50\\47\\146\\141\\151\\154\\56\\56\\56\\47\\51\\73\\175\''
)  ()  
)()

有趣的是:使用 Function() 创建了一个实际的函数。

但由于我无法查看 native 代码,因此我很难理解正在创建的实际函数。这取自 root-me.org Javascript - native 代码挑战。

最佳答案

它反混淆为:

a = prompt('Entrez le mot de passe');
if(a=='toto123lol'){
    alert('bravo');
} else{
    alert('fail...');
}

要验证,在 Chrome 中,打开开发者工具,打开控制台,然后粘贴:

Function(
    'return \'\\141\\75\\160\\162\\157\\155\\160\\164\\50\\47\\105\\156\\164\\162\\145\\172\\40\\154\\145\\40\\155\\157\\164\\40\\144\\145\\40\\160\\141\\163\\163\\145\\47\\51\\73\\151\\146\\50\\141\\75\\75\\47\\164\\157\\164\\157\\61\\62\\63\\154\\157\\154\\47\\51\\173\\141\\154\\145\\162\\164\\50\\47\\142\\162\\141\\166\\157\\47\\51\\73\\175\\145\\154\\163\\145\\173\\141\\154\\145\\162\\164\\50\\47\\146\\141\\151\\154\\56\\56\\56\\47\\51\\73\\175\''
)  ()  

本质上,这是“编码如何工作”的步骤。要“编码”字母“a”:

test = "a";
console.log(test.charCodeAt(0)); //97
console.log(parseInt('141', 8)); //97
console.log('\141'); //a

关于Javascript 调用 Function() 来创建一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28546865/

相关文章:

javascript - 如何为使用内存使用包运行的 Nodejs 设置 pass max-old-space-size 内存限制

javascript - 如何找到字符串中最长的匹配字母序列?

C++ - 将数据传递给结构

java - JNA 直接调用不适用于参数结构[]

javascript - 使用文本字段同时过滤 react 表和 react 传单标记(在表格中显示过滤数据,在 map 中显示标记)

javascript - Nodejs 中的 JSON 新手遇到一些错误

javascript - 如何改变浏览器的刷新事件并触发自定义功能?

C 最佳函数,用于在小于、等于和大于某个值的元素上分割数组

c# - 使用out参数从c#调用 native c++代码

ios - 使用 PhoneGap 访问 iOS native 代码,构建问题