何創(chuàng)建創(chuàng)新性應(yīng)用程序,DLL或設(shè)備驅(qū)動程序的開發(fā)人員都希望將代碼盡可能機密,以避免第三方公司/開發(fā)人員研究應(yīng)用程序內(nèi)的代碼并為自己的利益而竊取代碼。一些開發(fā)人員使用外部保護系統(tǒng)來打包應(yīng)用程序并保護其免受攻擊者的侵害,但是大多數(shù)時候,這些保護系統(tǒng)無法提供他們所需要的強度,從而使開發(fā)人員在完全解壓縮應(yīng)用程序后完全感到沮喪。
市面很多代碼保護軟件,雖然功能強大,但同樣價格昂貴,小編今天為大家推薦一款性價比高的代碼混淆軟件Code Virtualizer。
Code Virtualizer不能像普通的打包器那樣工作;相反,它只是保護開發(fā)人員選擇的敏感代碼區(qū)域。這些敏感區(qū)域?qū)⑥D(zhuǎn)換為內(nèi)部的虛擬機操作碼,只有Code Virtualizer才能理解。如果攻擊者試圖了解虛擬機的操作碼,則他將不得不跟蹤一個復(fù)雜且多態(tài)的虛擬機,這使他在任何時候都正在執(zhí)行什么代碼方面大失所望。(點擊文末“了解更多”下載Code Virtualizer)
虛擬化x86代碼(用于32位或64位)的整個過程可以在以下階段進行描述:
逆向工程的代碼虛擬器
代碼虛擬化包括將二進制代碼從特定機器轉(zhuǎn)換為另一臺機器可以理解的不同二進制代碼。即,來自特定機器的指令集被轉(zhuǎn)換為新的指令集,該新的指令集被另一機器理解。下圖表示從Intel x86指令塊到另一臺機器(特別是RISC 32位CPU)的新指令集的轉(zhuǎn)換:
Code Virtualizer可以生成多種虛擬機,每種虛擬機具有不同的指令集。這意味著可以將特定的Intel x86指令塊轉(zhuǎn)換為每臺計算機的不同指令集,從而防止攻擊者在從x86指令轉(zhuǎn)換后識別任何生成的虛擬操作碼。下圖表示如何將Intel x86指令塊轉(zhuǎn)換為不同類型的虛擬操作碼,這些虛擬操作碼可以由不同的虛擬機模擬。
當攻擊者嘗試反編譯受Code Virtualizer保護的代碼塊時,他將找不到原始的x86指令。相反,他將找到一個全新的指令集,該指令集將不會被他或其他任何特殊的反編譯器所識別。這將迫使攻擊者進行極其艱巨的工作,以確定每個操作碼的執(zhí)行方式以及特定虛擬機如何為每個受保護的應(yīng)用程序工作。Code Virtualizer完全混淆了虛擬操作碼的執(zhí)行和對每個唯一虛擬機的研究,以防止有人研究如何執(zhí)行虛擬操作碼。
下圖顯示了原始已編譯應(yīng)用程序的圖像(在受到保護之前)以及在受Code Virtualizer保護時如何轉(zhuǎn)換:
如圖所示,Code Virtualizer需要將生成的虛擬機嵌入到受保護的應(yīng)用程序的末尾(或在Stealth Mode中隱藏在您自己的代碼中),以便在要執(zhí)行虛擬操作碼時模擬它們。虛擬機的大小可以從500Kb到3Mb以上不等!(取決于所選的虛擬機體系結(jié)構(gòu))。您還可以壓縮生成的虛擬機和虛擬化的代碼,以減少磁盤上最終應(yīng)用程序的大小。
使用環(huán)境
由于.NET應(yīng)用程序的性質(zhì),Code Virtualizer無法保護.NET應(yīng)用程序中的敏感代碼。為了保護.NET應(yīng)用程序,建議您使用其他產(chǎn)品WinLicense。
Java開發(fā)工具中,有一種是Java混淆器,Java Obfuscator是其中之一,此工具會打亂 Java 源代碼,使其非常難以理解或逆向工程(示例)。這為必須交付給客戶的源代碼知識產(chǎn)權(quán)提供了重要的保護,并防止對 Java 類文件對象代碼進行過于簡單的反匯編。您只需要公開您的類提供給客戶的公共 API;您所有的內(nèi)部 API 和類名都變得高深莫測。它是 SD 的Source Code Obfuscators 家族的一員。
Java 混淆器特性
在不影響功能的情況下用無意義的名稱替換標識符
用戶可定義的保留名稱列表
提供的 Java JDK 標識符的保留名稱的預(yù)定義列表
剝離注釋并刪除大部分源代碼結(jié)構(gòu)
用戶可定義的評論過濾,以保護版權(quán)和公共文檔
無需更改您的 Java 編譯或執(zhí)行過程或環(huán)境
在混淆之前整齊地格式化 Java 源代碼以幫助開發(fā)的選項。
以 ASCII、“歐洲 ASCII” (ISO8859-1)、Unicode 或多種其他字符編碼中的任何一種輸出編碼。
命令行和 GUI 界面
以上就是關(guān)于“Java代碼混淆工具:Java Obfuscator”的介紹
款頂級JavaScript混淆工具測評:JScrambler和JShaman
出于JavaScript代碼安全需求,JavaScript混淆已經(jīng)被廣泛使用。在這個領(lǐng)域中,有免費的小工具,也有專業(yè)、商業(yè)級的產(chǎn)品。
商業(yè)產(chǎn)品在功能強度、保護效果、穩(wěn)定性等各方面都是全優(yōu)于免費小工具的。
本文將對兩款專業(yè)、商業(yè)JavaScript混淆工具進行多角度測評。
這兩款工具分別是葡萄牙的JScrambler和中國的JShaman,在行業(yè)中都是知名產(chǎn)品、是業(yè)內(nèi)頂級的JavaScript混淆工具。
注:JShaman有中文和英文兩個不同版本,本次測評使用的是英文版。
產(chǎn)品形態(tài)
兩者都是網(wǎng)站平臺形式,在瀏覽器中打開就能使用。
接口
都有Web API接口,JavaScript、Python、Java、c#等語言都可以調(diào)用,可以集成在自己的產(chǎn)品中使用。
操作便捷性
JScrambler使用較復(fù)雜,需要注冊帳戶、登錄進入后臺才能使用,JShaman則方便很多,無需注冊、直接使用。
免費試用
兩個產(chǎn)品都提供有限制的免費試用,JScrambler混淆后的代碼有使用時間限制,JShaman是對試用JavaScript代碼體積有限制。
功能選項
JScrambler和JShaman都有20多項混淆功能可使用,如:數(shù)值加密、平展控制流、JSON加密、變量名混淆、正則表達式加密、字符串加密等等。也就意味著,兩者對代碼的保護強度應(yīng)該接近,因為混淆選項數(shù)量接近。
對于各功能的說明,JShaman是采用例程的方式展示,而JScrambler是文字說明。對于不熟悉混淆技術(shù)的使用者而言,JShaman的例程方式更直觀,可以讓使用者知道各功能啟用后對代碼的保護效果。而JScrambler的文字介紹則較抽象。
JScrambler的某些選項可進行高級配置,比變量名混淆可設(shè)定具體的變量名特征,而JShaman未提供這種精細化選項。
混淆效果
如前面所述,兩者很多功能選項相似,但也有差別,而且相同功能各自的算法想必也是不同的。所以,相同的JavaScript代碼混淆到的結(jié)果自然是不同,各有各的結(jié)果。混淆后的代碼看起來都足夠復(fù)雜,都可以進行復(fù)制和下載。
報表
報表功能用于展示混淆時進行了哪些操作,可讓操作者清楚混淆操作對代碼進行了哪些方面的加強和保護。
JShaman的報表簡潔明了,在混淆完成后會立即顯示。JScrambler的報表是從歷史操作記錄中查看,顯示的內(nèi)容更詳細。
兩者都會顯示進行各項混淆時操作了多少節(jié)點(注:混淆時都是將JavaScript轉(zhuǎn)化為AST抽象語法樹,對語法樹進行修改,所以此處會顯示修改的AST節(jié)點數(shù)量)。
JScrambler會顯示各項操作使代碼增大了多少,而JShaman會顯示混淆前代碼整體有多少個節(jié)點,混淆后又變成了多少節(jié)點,方式有差別,所表達的含義相同。
總結(jié)
兩者功能相似、混淆效果接近,都是強大、專業(yè)的JavaScript混淆工具。
直觀差別主要在UI、操作、報表三方面。
JScrambler精細且復(fù)雜、商業(yè)味道更濃厚。
JShaman界面優(yōu)美、操作簡潔、方便易用。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。