Javascript 代碼混淆的目的
Javascript 是一種解釋執行的腳本語言,主要應用于 Web 領域的客戶端的瀏覽器中;由于 Javascript 解釋執行的特性,代碼必須明文下載到客戶端,并且可以很容易的進行調試,使得 Javascript 代碼的保護非常困難;
不同的人對 Javascript 代碼的保護有不同的看法;有的人辛苦努力的代碼,卻可以被競爭對手輕易獲得,他們就非常希望能有保護 Javascript 代碼的方案,但現有的方案可能無法滿足他們的要求;很多人認為 Javascript 語言很簡單,Javascript 代碼沒有保護的價值,可能是他們的代碼確實簡單,或者他們并不了解 Javascript 語言強大的功能;還有的人認為現在都開源了,還保護代碼干什么,當然開源的人是值得敬佩的,但對別人的代碼的開源要求,卻不是合理的。
為了提高用戶的體驗,出現了 Web 2.0 技術,并隨著 AJAX 和富界面技術的發展,Javascript 在 Web 應用上的重要性越來越高,Javascript 代碼的復雜性、功能和技術含量也越來越高,對Javascript 代碼保護的需要也越來越迫切。
Javascript 在線混淆器的目的是為 Javascript 代碼保護的需求,提供一種全新的綜合解決方案,包括編碼規則和免費的在線混淆器。
混淆和加密的區別
很多人將這兩者混在一起討論,實際上兩者的目的有一定的區別,采取的手段也有很大的不同。加密主要是為了防止未經授權的使用,對這種情況即使破解了加密,也只能非法使用,并不一定能獲得軟件的代碼邏輯;但對于腳本來說,防止對代碼進行訪問的措施,也屬于加密,對這種情況,破解了加密,就獲得了代碼;而混淆是在無法阻止他人獲取代碼的情況下,采取的保護代碼的邏輯不被他人理解的措施;對于混淆的代碼,他人很難理解,無法進行修改和重新應用;
對于生成機器碼的語言,比如 C 語言,只需要考慮未經授權的訪問,幾乎不需考慮代碼的保護;因為對編譯后的軟件,只能反匯編為匯編語言代碼,幾乎無法分析出代碼的邏輯。
對于生成中間代碼的語言,比如 Java 和 C#,即需要考慮未經授權的訪問,又需考慮代碼的保護;;因為對編譯后的軟件,可以很容易的反編譯為較高級的語言,從而了解到代碼中的邏輯,并較容易的破解加密。而混淆后,即難于理解代碼的邏輯,也不易找到加密點所在。
對于腳本語言,比如 Javascript,只能混淆,難以加密;因為腳本都是明文存在的,很容易調試的,通過跟蹤可以較容易的破解上面兩種目的的加密。但是混淆后的代碼是難于理解代碼的邏輯的。
我們只涉及到對 Javascript 腳本進行混淆,而不涉及加密;對于涉及到 Javascript 的系統的加密,我們建議不要將加密點放在 Javascript 腳本內,而是放在服務端的編譯程序內,因為編譯程序的加密可以采用更多的保護方式,加密的強度也更高。
新聞熱點
疑難解答