当前位置: 首页 > 知识库问答 >
问题:

如何防止对JavaScript代码进行去模糊处理

吴伟志
2023-03-14

是否有一种方法可以防止对已经被混淆的JavaScript代码进行去混淆。

模糊的JS:

VAR_0xB5AE=[“\X73\X68\X6F\X77”,“\X2E\X6C\X6F\X61\X64\X65\X72”,“\X6D\X6F\X75\X73\X6D\X6F\X76\X65”,“\X2E\X62\X6C\X6F\X6F\X6B\X6B”];$(_0xB5AE[3])[_0xB5AE[2]](function(){clearTimeout(e);e=setTimeout(function(){$(_0xB5AE[1])_0xB5AE[0]},1000)})

共有2个答案

吴均
2023-03-14

太容易了,老兄!

null

var _0xb5ae =["\x73\x68\x6F\x77","\x2E\x6C\x6F\x61\x64\x65\x72","\x6D\x6F\x75\x73\x65\x6D\x6F\x76\x65","\x2E\x62\x6C\x6F\x63\x6B"];

var code = `$(_0xb5ae[3])[_0xb5ae[2]](function(){clearTimeout(e);e= setTimeout(function(){$(_0xb5ae[1])_0xb5ae[0]},1000)})`

function deObfuscate(code, keys) {
  for (let key in keys) {
    code = code.replace(new RegExp(key+'\\[(\\d+)\\]', 'gim'), (_, index) => {
      return `'${keys[key][index]}'`
    })
  }
  return code
}

console.log(
  deObfuscate(code, { _0xb5ae })
)

$('.block').mousemove(function(){
  clearTimeout(e)
  e = setTimeout(function(){
    $('.loader').show()
  }, 1000)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
葛鸿熙
2023-03-14

不,没有办法阻止去模糊化,但是你可以在模糊化之前积极地缩小它,只是为了使它尽可能的复杂。

在任何情况下,客户将能够看到来源,并与适当数量的动机,没有什么是不能阅读和理解的。

如果希望保护代码,只在服务器端执行它。

话虽如此,您可以通过在代码上使用适当的许可证和/或版权来防止(或至少限制)盗取。这当然不会阻止任何人偷它,但给你一个法律追索,以防他们试图从你的辛苦工作中赚钱。

 类似资料:
  • 我试图编译和混淆两个项目,其中一个依赖于另一个,并且两个项目都是用Spring boot maven插件构建的。 为了简单起见,让我们将它们称为main和util项目。 因此,如果我首先尝试使用Spring boot maven插件重新打包项目,然后混淆包含util和主要项目的重新打包的jar,那么首先proguard提取重新打包的jar的内容,其中提取的内容将包含util jar。那么progu

  • 我们的代码使用Asyncresttemplate如下所示

  • 问题内容: 我正在尝试通过GET请求中的URL参数传递API密钥。 但是,我注意到在发送请求时,Axios会在我的API密钥中对字符进行编码。这会导致API拒绝我的请求,因为它无法识别我的密钥。 如何防止Axios对我的GET参数进行编码? 问题答案: 您可以使用自定义参数序列化器,如下所示: 可以在实例级别设置: 或在全球范围内: 另一个选择是将api键直接添加到URL: 您可以使用`param

  • 我用的是JavaFX。 当某个文件没有加载时,我希望阶段关闭,该实例中的代码停止执行。

  • 问题内容: 我有一个需要大量内存的程序,例如所有物理内存的2/3。运行一段时间后,我的操作系统开始将程序交换为hdd。但是我需要程序始终保持非常快的响应,因此我需要防止对该进程进行分页。 如何防止操作系统交换一个进程? 谢谢你的帮助! 问题答案: 在程序开始时,调用: (如果您没有该程序的源代码,则必须使用该程序来减少进程的消耗)。 请注意,这将增加进程失败进行内存分配的机会。

  • 我是硒的新手,也是毛茸茸的测试。我看到Selenium IDE只允许固定的测试用例。但是模糊测试似乎是有帮助的。 如有任何帮助,我们将不胜感激。