❶ js 如何保護版權現有的混淆工具有2個問題1是加密了不能用了2是很好解密,有好的方法嗎
沒有。JS腳本是明碼的。
把你的東西開源吧,如果你是個開發者,請支持開源事業,促使世界進步。
程序員不是這么乾的,有種你別用開源軟體。
❷ 如何用llvm-obfuscator混淆 js
LLVM是什麼?
(1)LLVM是lowlevel virtual machine的簡稱,是一個編譯器框架。蘋果公司的Xcode 4.0之後用的都是LLVM編譯器。
(2)LLVM 誕生於2003.10伊利諾伊大學香檳分校,創始人ChrisLattner,現任蘋果公司『開發者工具』部門的主管。
二、 LLVM-Obfuscator 是什麼?
(1)LLVM-Obfuscator 是瑞士西北應用科技大學安全實驗室針對LLVM編譯組件開發的代碼混淆工具,該工具完全開源,目的是為了增加逆向工程的難度,保證代碼的安全性。
(2)Obfuscator-llvm最新版本集成了LLVM-3.4編譯器,並且兼容LLVM支持的所有語言(C,C++, Objective-C, Ada and Fortran)和平台(x86, x86-64, PowerPC, PowerPC-64,ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, SystemZ,and XCore)。
純手打,望採納!
❸ 如何混淆(保護)javaScript
可以使用:
Google Closure編譯器或其他第三方混淆工具
Google Closure編譯器仍在使用,並且UglifyJS可以通過節點包管理器在本地運行:npm install -g uglify-js
私有字元串數據:
將字元串值設為私有是另一個問題,而混淆並不會帶來太大好處。當然,通過將源打包成亂碼,最小的混亂,可以通過 模糊* 性 獲得輕便的安全性 。大多數情況下,查看源的是的用戶,客戶端上的字元串值是供他們使用的,因此通常不需要那種私有字元串值。
如果確實擁有一個不希望用戶看到的價值,那麼將有兩個選擇。首先,可以進行某種加密,該加密在頁面載入時解密。那可能是最安全的選擇之一,但也可能是很多不必要的工作。可能可以對一些字元串值進行base64編碼,這會更容易,但是真正想要這些字元串值的人可以輕松地對其進行解碼 。加密是真正阻止任何人訪問的數據的唯一方法,大多數人發現加密比他們需要的安全性更高。
❹ js混淆加密工具好不好
js這種東西,加啥密,還是jq寫的,混淆肯定容易混出問題。 你再怎麼加瀏覽器都要解析出來能跑才行,瀏覽器能跑,就意味著很好解密。
❺ 除了autojs還有哪些軟體可以打包js成apk
Fusion,Auto等。軟體是一系列按照特定順序組織的計算機數據和指令的集合。除了autojs還有Fusion,Auto等可以打包js成apk。apk是Android操作系統使用的一種應用程序包文件格式,用於分發和安裝移動應用及中間件。
❻ 怎麼使用yuicompressor2.4.2.jar進行js,CSS進行代碼混淆
目前開發Web應用Javascript發揮的作用越來越大,相關的Javascript框架也比較多。但是有一個問題,我們開發過程中,所有的JS代碼都添加了注釋,如使用JsDoc,代碼的可讀性比較強,同時這樣的代碼也便於調試。但是在產品環境中,我們希望這些JS代碼是壓縮和混淆過的,這主要是讓 JS代碼載入的更快,這也是Google AJAX Libraries API出現的原因。YUI Compressor 是一款由 Yahoo 公司開發的、功能非常強大的 JS、CSS 代碼混淆和壓縮工具,採用Java開發,目前很多Javascript Framework都使用YUI Compressor進行代碼分發。
二、使用簡介:
在命令行下執行 Java 程序,運行 yuicompressor jar 軟體包,來完成任務:
//壓縮JS
java -jar yuicompressor-2.4.2.jar --type js --charset utf-8 -v src.js > packed.js
//壓縮CSS
java -jar yuicompressor-2.4.2.jar --type css --charset utf-8 -v src.css > packed.css
三、參考官方英文注釋:
3.1 How does the YUI Compressor work?
The YUI Compressor is written in Java (requires Java >= 1.4) and relies on Rhino to tokenize the source JavaScript file. It starts by analyzing the source JavaScript file to understand how it is structured. It then prints out the token stream, omitting as many white space characters as possible, and replacing all local symbols by a 1 (or 2, or 3) letter symbol wherever such a substitution is appropriate (in the face of evil features such as eval or with, the YUI Compressor takes a defensive approach by not obfuscating any of the scopes containing the evil statement) The CSS compression algorithm uses a set of finely tuned regular expressions to compress the source CSS file. The YUI Compressor is open-source, so don't hesitate to look at the code to understand exactly how it works.
3.2 Using the YUI Compressor from the command line
java -jar yuicompressor-x.y.z.jar
Usage: java -jar yuicompressor-x.y.z.jar [options] [input file]
Global Options
-h, --help Displays this information
--type <js|css> Specifies the type of the input file
--charset <charset> Read the input file using <charset>
--line-break <column> Insert a line break after the specified column number
-v, --verbose Display informational messages and warnings
-o <file> Place the output into <file>. Defaults to stdout.
JavaScript Options
--nomunge Minify only, do not obfuscate
--preserve-semi Preserve all semicolons
--disable-optimizations Disable all micro optimizations
GLOBAL OPTIONS
-h, --help
Prints help on how to use the YUI Compressor
--line-break
Some source control tools don't like files containing lines longer than,
say 8000 characters. The linebreak option is used in that case to split
long lines after a specific column. It can also be used to make the code
more readable, easier to debug (especially with the MS Script Debugger)
Specify 0 to get a line break after each semi-colon in JavaScript, and
after each rule in CSS.
--type js|css
The type of compressor (JavaScript or CSS) is chosen based on the
extension of the input file name (.js or .css) This option is required
if no input file has been specified. Otherwise, this option is only
required if the input file extension is neither 'js' nor 'css'.
--charset character-set
If a supported character set is specified, the YUI Compressor will use it
to read the input file. Otherwise, it will assume that the platform's
default character set is being used. The output file is encoded using
the same character set. IMPORTANT: if you do not supply this argument
and the file encoding is not compatible with the system's default
encoding, the compressor will throw an error. In particular, if your
file is encoded in utf-8, you should include this parameter.
-o outfile
Place output in file outfile. If not specified, the YUI Compressor will
default to the standard output, which you can redirect to a file.
-v, --verbose
Display informational messages and warnings.
JAVASCRIPT ONLY OPTIONS
--nomunge
Minify only. Do not obfuscate local symbols.
--preserve-semi
Preserve unnecessary semicolons (such as right before a '}') This option
is useful when compressed code has to be run through JSLint (which is the
case of YUI for example)
--disable-optimizations
Disable all the built-in micro optimizations.Note: If no input file is specified, it defaults to stdin.
The following command line (x.y.z represents the version number):
java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.jswill minify the file myfile.js and output the file myfile-min.js. For more information on how to use the YUI Compressor, please refer to the documentation included in the archive.
The charset parameter isn't always required, but the compressor may throw an error if the file's encoding is incompatible with the system's default encoding. In particular, if your file is encoded in utf-8, you should supply the parameter.
java -jar yuicompressor-x.y.z.jar myfile.js -o myfile-min.js --charset utf-8
四、YUI Compressor 壓縮 JavaScript 的原理
YUI Compressor 壓縮 JavaScript 的內容包括:
1.移除注釋
2.移除額外的空格
3.細微優化
4.標識符替換(Identifier Replacement)
YUI Compressor 包括哪些細微優化呢?
• object["property"],如果屬性名是合法的 JavaScript 標識符(註:合法的 JavaScript 標識符——由一個字母開頭,其後選擇性地加上一個或者多個字母、數字或下劃線)且不是保留字,將優化為: object.property
• {"property":123},如果屬性名是合法的 JavaScript 標識符且不是保留字,將優化為 {property:123} (註:在對象字面量中,如果屬性名是一個合法的 JavaScript 標識符且不是保留字,並不強制要求用引號引住屬性名)。
• 'abcd/'efgh',將優化為 "abcd'efgh"。
• "abcd" + "efgh",如果是字元串相連接,將優化成 "abcdefgh"(註:所有在使用 YUI Compressor 的前提下,對於腳本中的字元串連接,使用連接符 「+」 的效率和可維護性最高)。
對於 JavaScript 最有效的壓縮優化,當屬標識符替換。
比如:
(function(){function add(num1, num2) {return num1 + num2;}})();
進行屬標識符替換後:
(function(){function A(C, B) {return C+ B;}})();
再移除額外的空格,最終成了:
(function(){function A(C,B){return C+B;}})();
YUI Compressor 標識符替換僅替換函數名和變數名,那哪些不能被替代呢?
1.原始值:字元串、布爾值、數字、null 和 undefined。一般來說字元串占的空間最多,而非數字字面量其次(true、false,null,underfinded)。
2.全局變數:window、document、XMLHttpRequest等等。使用最多的就是 document、window。
3.屬性名,比如:foo.bar。占據的空間僅次於字元串,」.」 操作符無法被代替,且 a.b.c 更加費空間。
4.關鍵字。經常被過度使用的關鍵字有:var、return。最好的優化方法:一個函數僅出現一次 var 和 return 關鍵字。
對於原始值、全局變數、屬性名的優化處理方式大致相同:任何字面量值、全局變數或者屬性名被使用超過 2 次(包括2次),都應該用局部變數存儲代替。
但有部分情況下是禁止使用標識符替換的:
1.使用 eval() 函數。解決方法:不使用或者創建一個全局函數封裝 eval()。
2.使用 with 語句。解決方法:方法同上。
3.JScript 的條件注釋。唯一解決的方法:不使用。
由於 YUI Compressor 是建立在 rhino interpreter 基礎上的,所以上述所有的優化都是安全的。
❼ 用uglifyjs壓縮混淆JS
UglifyJs 是一個js 解釋器、最小化器、壓縮器、美化器工具集(parser, minifier, compressor or beautifier toolkit)
uglifyjs壓縮有很多的參數,其中有一些可選參數,美化壓縮,空格多長,變數名是否變成短名字等,具體說明: https://github.com/mishoo/UglifyJS2
名詞翻譯:
打開存放js文件的目錄,按住shift鍵,滑鼠右鍵,即可在此位置打開命令行
以下是可用的選項:
❽ 使用 webpack 打包 js
通過 命令行工具打包: webpack app.js bundle.js; 打包完成後會在同目錄下生成bundle.js.
app.js: 入口文件;
bundle.js: 打包好的文件。
通過amd規范定義的, 打包後會生成一個bundle.js 和 一個 1.bundle.js, 兩個bundle.js 文件
❾ 關於node.js 混淆,有沒有辦法
伺服器端的也要混淆嗎?我以前做前段的混淆都是用的一個java的jsa,感覺壓縮率和混淆程度都不錯,兼容性也好。但是這東西也有些問題,我自己下載到本地無法正常運行,只能用那個網頁版本的一個一個手動的來混淆
1. uglifyjs混餚貌似只能針對局域成員,一旦跨引用就不能了。
2. 我還研究了node的vm模塊,缺點是,沙盒配置很復雜,跨require引用時尤其
3. 還有類似eval的執行(也就是字元串注入執行),缺點是,一旦eval的加密後解密的明文,任何人可以console.log輸出。
4. 一個台灣人寫的叫做npk的模塊,跨目錄require時會有問題
❿ 如何混淆Js代碼讓別人無法(很難)還原
http://空格tool.空格lu/ 這個網址中(去掉"空格"兩個字)有對應的代碼工具,你可以用下試試