我想做一个JavaScript应用程序,不是开放源,因此,我希望学会如何可以混淆我的JS代码?这可能吗?

有帮助吗?

解决方案

混淆:

尝试 衣压缩机.这是一个非常受欢迎的工具,建立、加强和维护的雅虎UI队。

你也可以使用:

私人串数据:

保持串的价值观的私人是一个不同的关切,并混淆不会真的有很大利益。当然,通过包装你的源为出现乱码,缩小的烂摊子,你有一个版本的光 安全 通过 默默无闻.大多数时间,这是你的用户观看的来源,并串的价值观上的客户是用它们的使用,所以这种私人串的价值是不是常常必要的。

如果你真的很有价值,你从来没有想过用户看见,你将有几个选项。第一,你可以做一些种类的加密,这是解密后在页面负荷。这可能是一种最安全的选项,但也有很多的工作,这可能是不必要的。你很可能base64encode一些串的价值观,这会更容易..但是某人真的想要这些字符串的价值 很容易地对它们进行解码.加密的唯一方法是真正阻止任何人从访问您的数据,大多数人找到更安全的比他们的需要。

旁注:

混淆在Javascript已经知道导致了一些错误。该obfuscators得到更好一点,但许多服装的决定,他们看到足够从中受益 简化gzip压缩的, 和增加储蓄的混淆 并不总是值得的麻烦.如果你是想保护你的来源,也许你会决定它是值得的,只是为了让你的代码的更难于阅读。 JSMin 是一个很好的选择。

其他提示

我很惊讶没有人提到谷歌的关闭编译。它不只是缩小/压缩,分析发现并删除无用的代码,并重写最大缩小。它也可以做类型检查,并警告语法错误。

JQuery的最近从锐Compresser切换到关闭编译器,看见一个“固体改进

混淆永远不能真正发挥作用。对于任何人谁真的想要得到你的代码,它只是一个减速带。更糟的是,它让你的用户修复bug(并运送修复回给你),使你更难诊断领域的问题。它是一种浪费你的时间和金钱。

谈话,一个关于知识产权法和您的法律有什么选择律师。 “开源” 并不意味着“人们可以读取源”。相反,开源是自由使用和修改代码的特定许可模式授予权限。如果不授予这样的许可证,然后别人抄袭你的代码违反和(在世界上大多数国家的),你有合法的选项来阻止他们。

您可以真正保护你的代码的唯一方法就是不出货。移动重要的代码服务器端,有你的公开Javascript代码执行Ajax调用它。

见我对这里充满混淆器答案。

您可以混淆的JavaScript源你希望所有的,但它永远是仅仅凭借要求所有的源代码,实际上在客户机上运行...最好的选择我能想到的是让所有的反向engineerable您处理与服务器端代码中完成,并且所有JavaScript并在客户端代码发送处理请求到服务器本身。否则,任何人随时都可以跟踪所有操作的代码在做什么。

有人提到的base64保持字符串的安全。这是一个可怕的想法。 Base64是立刻被种类的谁愿意反向工程代码的人辨认。他们会做的第一件事是unencode它,看看它是什么。

还有一些JavaScript模糊处理的工具是免费提供;然而,我认为重要的是要注意的是,难以混淆JavaScript到它不能够反向设计。

为此,有几个选项,我已经用在一定程度的加班费:

  • 衣压缩机.Yahoo!'s JavaScript压缩机不良好的工作的凝代码,这将提高其负载时间。有一个小水平的模糊处理工作比较好。实质上,压缩机会改变的功能的名字,删除的空白,以及修改地方的变量。这就是我最经常使用的。这是一个开放源码基于Java的工具。

  • JSMin 是一个工具书面通过道格拉斯Crockford,旨在缩小JavaScript源。在Crockford自己的话说,"JSMin不模糊,但它并uglify." 它的主要目标是缩小的尺寸您的来源为快装载在浏览器。

  • 免费JavaScript混淆.这是一个基于网络的工具,试图混淆你的代码实际上通过的编码。我认为,权衡它形式的编码(或混淆)可能在成本filesize;然而,这是一个人偏好的问题。

什么我都会做的事:

A. 巨魔的黑客!

这是将在第二部分我的假/模糊的秘密代码的发射器。一个你看看源代码。

这是什么代码?

  1. 载荷的现实代码
  2. 设置一个定义头
  3. 员额一定义变量

var ajax=function(a,b,d,c,e,f){
 e=new FormData();
 for(f in d){e.append(f,d[f]);};
 c=new XMLHttpRequest();
 c.open('POST',a);
 c.setRequestHeader("Troll1","lol");
 c.onload=b;
 c.send(e);
};
window.onload=function(){
 ajax('Troll.php',function(){
  (new Function(atob(this.response)))()
 },{'Troll2':'lol'});
}

B。 混淆的代码一点

那是什么?

  1. 这就是相同的代码如上在base64
  2. 这不是秘密代码

(new Function(atob('dmFyIGFqYXg9ZnVuY3Rpb24oYSxiLGQsYyxlLGYpe2U9bmV3IEZvcm1EYXRhKCk7Zm9yKGYgaW4gZCl7ZS5hcHBlbmQoZixkW2ZdKTt9O2M9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Yy5vcGVuKCdQT1NUJyxhKTtjLnNldFJlcXVlc3RIZWFkZXIoIlRyb2xsMSIsImxvbCIpO2Mub25sb2FkPWI7Yy5zZW5kKGUpO307d2luZG93Lm9ubG9hZD1mdW5jdGlvbigpe2FqYXgoJ1Ryb2xsLnBocCcsZnVuY3Rpb24oKXsgKG5ldyBGdW5jdGlvbihhdG9iKHRoaXMucmVzcG9uc2UpKSkoKX0seydUcm9sbDInOidsb2wnfSk7fQ==')))()

C 创建硬显示php文件的真实代码

这是什么php代码?

  1. 检查的权利的推荐人(域/dir/代码你的发射器)
  2. 检查所定义的头
  3. 检查的定义后可变

如果一切都确定它会告诉你正确的代码还有一个假码或禁止ip,靠近页..无论。

<?php
$t1=apache_request_headers();
if(base64_encode($_SERVER['HTTP_REFERER'])=='aHR0cDovL2hlcmUuaXMvbXkvbGF1bmNoZXIuaHRtbA=='&&$_POST['Troll2']=='lol'&&$t1['Troll1']='lol'){
 echo 'ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuaW5uZXJUZXh0PSdBd2Vzb21lJzsNCg==';//here is the SECRET javascript code
}else{
 echo 'd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTt3aW5kb3cuY2xvc2UoKTs=';
};
?>

base64推荐人= http://here.is/my/launcher.html

秘密javascript= document.body.appendChild(document.createElement('div')).innerText='Awesome';

假= window.open('', '_self', '');window.close();

现在..如果定义事件处理程序,在秘密javascript它可能访问的..你需要定义之外,与launchcode和指向一个嵌套的秘密功能。

所以...是否有一个容易京顺路拿到代码?document.body.appendChild(document.createElement('div')).innerText='Awesome';

我不知道,如果这个工作但是,我使用的铬和检查的要素、资源、网络、资源、时间表、概况审计,但是我没找到线以上。

注1:如果你打开Troll.php url从检查元素->网络在铬你得到了假冒的代码。

注2:整个代码被写入现代浏览器。提供填充代码需要更多的代码。

编辑

launcher.html

<!doctype html><html><head><meta charset="utf-8"><title></title><script src="data:application/javascript;base64,KG5ldyBGdW5jdGlvbihhdG9iKCdkbUZ5SUdGcVlYZzlablZ1WTNScGIyNG9ZU3hpTEdRc1l5eGxMR1lwZTJVOWJtVjNJRVp2Y20xRVlYUmhLQ2s3Wm05eUtHWWdhVzRnWkNsN1pTNWhjSEJsYm1Rb1ppeGtXMlpkS1R0OU8yTTlibVYzSUZoTlRFaDBkSEJTWlhGMVpYTjBLQ2s3WXk1dmNHVnVLQ2RRVDFOVUp5eGhLVHRqTG5ObGRGSmxjWFZsYzNSSVpXRmtaWElvSWxSeWIyeHNNU0lzSW14dmJDSXBPMk11YjI1c2IyRmtQV0k3WXk1elpXNWtLR1VwTzMwN2QybHVaRzkzTG05dWJHOWhaRDFtZFc1amRHbHZiaWdwZTJGcVlYZ29KMVJ5YjJ4c0xuQm9jQ2NzWm5WdVkzUnBiMjRvS1hzZ0tHNWxkeUJHZFc1amRHbHZiaWhoZEc5aUtIUm9hWE11Y21WemNHOXVjMlVwS1Nrb0tYMHNleWRVY205c2JESW5PaWRzYjJ3bmZTazdmUT09JykpKSgp"></script></head><body></body></html>

Troll.php

<?php $t1=apache_request_headers();if(/*base64_encode($_SERVER['HTTP_REFERER'])=='PUT THE LAUNCHER REFERER HERE'&&*/$_POST['Troll2']=='lol'&&$t1['Troll1']='lol'){echo 'ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSkuaW5uZXJUZXh0PSdBd2Vzb21lJzsNCg==';}else{echo 'd2luZG93Lm9wZW4oJycsICdfc2VsZicsICcnKTt3aW5kb3cuY2xvc2UoKTs=';}; ?>

尝试 JScrambler 。最近,我给它一个旋转和被它打动。 它提供了一套为那些预定义设置谁不那么在意细节,只想把它迅速完成混淆模板。您也可以通过选择你想要的任何转换/技术创建自定义的混淆。

与解释语言的问题,是你送的来源,让他们的工作(除非你有一个编译成字节码,但话又说回来,这是很微不足道的反编译)。

所以,如果你不想牺牲性能,你只能作用于变量和函数的名称,例如。与A,B ... AA,AB ......或A101,A102等替换它们,当然,去掉尽可能多的空间/换行,你可以(这就是所谓的JS压缩机做)。点击 模糊处理字符串将有性能损失,如果你有它们进行加密,并实时解密。加一个JS调试器可以显示的最终值...

与大多数其他的答案我建议针对锐压缩机的;你应该使用谷歌关闭

不多,因为它压缩较多,但主要是因为它会赶上JavaScript错误,如a = [1,2,3,];这使得IE就会失控。

一个基于JavaScript的非开源应用是相当愚蠢的。 JavaScript是一个客户端解释的语言..模糊处理是没有太大的保护..

JS混淆通常是为了减少脚本的大小,而不是“保护”它。如果你是在一个情况下,你不希望你的代码是公开的,JavaScript是不正确的语言..

有大量的工具左右,但大部分都在其名称中的“压缩机”(或“minifier”)的一个原因..

您不能安全的客户端代码:谷歌浏览器只需按F12,暂停JavaScript执行的,你会得到所有字符串,即使是加密的。 美化该和重命名变量和你将得到几乎原始代码。

如果你正在编写服务器端JavaScript(即的NodeJS)是怕有人侵入你的服务器,并希望使黑客的工作更加困难,给你更多的时间来让你的访问回来,然后用 javacript编译器

您需要在高级编译使用关闭编译器,因为它是重命名所有变量的唯一工具,即使是那些在多个文件/模块使用。但它只是有一个问题:如果你在写的编码风格它只能工作

我建议的东西,如YUI压缩机上的第一缩小,再使用类似 HTTP转换所有字符串和数字的十六进制值://www.javascriptobfuscator.com/

这样,代码将几乎不可能呈现理解,我认为在这个阶段会花费更多的时间进行黑客重新制定你的代码比实际,如果他从头开始重新写。重写和克隆是什么,你不能真正停止。毕竟我们是自由人!

院长爱德华帕克是一个优秀的混淆器,但它主要是混淆了代码,没有任何字符串元素,你可以有自己的代码中。

请参阅:在线的Javascript压缩工具和从下拉菜单中选择帕克(迪安爱德华兹)

我一直在使用 Jasob 多年,这是手了最好的混淆在那里。
它具有先进的用户界面,但仍是直观和易于使用。结果 它也将处理HTML和CSS文件。

要使用它的前缀所有的私人的变量的东西,如下划线,然后使用sort功能组它们组合在一起的检查不送作为模糊的目标。

用户仍然可以查看源,但它更难以破译当您的个人变量从类似_sUserPreferredNickName转换为a

在引擎会自动总结出有针对性的变量的数量和优先考虑他们,以获得最大的压缩。

我不为Jasob工作,我什么也没得到了推进当中,只是提供一些友好的建议。结果 不利的一面是,当堆积反对替代它不是免费的,是一个有点贵,但还是值得的 - “自由”选项并不甚至接近

您是否尝试过 Bananascript ?它产生高度压缩和完全不可读代码。

我使用闭合编译器实用程序为java脚本混淆。它minifies代码,并有混淆更多的选择。 此工具可在谷歌代码以低于网址:点击 截流工具

但现在是一个天,我听到了许多UglifyJS的。你可以找到关闭编译并在其中丑化似乎是一个赢家UglifyJS之间的各种比较。结果 UglifyJS:一种快速的新的JavaScript压缩机For节点的.js这看齐封闭

不久我想给机会UglifyJS。

我的印象是,一些企业(例如:JackBe)把加密的JavaScript代码内下* .gif文件,而不是JS文件,混淆的附加措施。

作为一个JavaScript / HTML / CSS的混淆器/压缩机你也可以尝试帕图Digua

尝试使用该工具的Javascript混淆

我用它在我的HTML5游戏不仅它减少它的尺寸从950KB到150也使源代码不可读闭合编译器和minifiers是可逆式我个人不知道如何扭转这种混淆。

您一定要考虑考虑看看 Obfuscriptor

我超越了我们从其他工具,如锐压缩机谷歌关闭

在混淆代码看起来更像加密。不同于我以前见过。

这一个minifies 的但不混淆。如果你不想使用命令行Java您可以将您的JavaScript粘贴到网络表单。

如果您使用的是JavaScript库,考虑与关闭编译器的高级模式下编译Dojo Toolkit的是兼容(稍作修改后)。

道场 - 唯一的JavaScript库 与封闭编译器兼容

用封高级模式编译的代码是几乎不可能反向工程,即使经过美化,作为整个的代码基础(includinhg库)进行模糊处理。它也是对平均25%小。

这仅仅精缩JavaScript代码(锐压缩机,丑化等)很容易通过一个美化之后进行反向工程。

我已经在过去使用这一点,它做了很好的工作。这不是免费的,但你一定要来看看。结果 的JavaScript混淆&编码器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top