翻譯|使用教程|編輯:楊鵬連|2020-08-03 14:01:09.273|閱讀 1316 次
概述:本文主要介紹Allatori Java obfuscator在使用過(guò)程中的一些常見(jiàn)問(wèn)題。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
Allatori Java obfuscator是第二代Java代碼混淆器,為您的知識(shí)產(chǎn)權(quán)提供全方位的保護(hù)。大部分第二代混淆器都具有保護(hù)功能。Allatori除了保護(hù)功能之外,還附加了一系列的功能,幾乎可以抵御一切的代碼攻擊。同時(shí),Allatori可以讓您的程序體積更小,速度更快,效果簡(jiǎn)直讓人難以置信。
什么是混淆?
混淆是現(xiàn)實(shí)籠罩的技術(shù)。盡管有一段時(shí)間使用此方法,但這不是對(duì)Java代碼的完整加密。考慮到Java,混淆似乎更好。如上所述,在Java開(kāi)發(fā)初期,一些開(kāi)發(fā)人員對(duì)應(yīng)用程序和庫(kù)進(jìn)行了完全編碼,并與他們一起提供了特殊的類加載器,該類加載器在執(zhí)行代碼之前就將其解密。盡管這些加密的類絕對(duì)不可讀,但是這種解決方案需要放置一個(gè)特殊的密鑰以解碼到應(yīng)用程序中。在這種情況下,如果黑客一次發(fā)現(xiàn)了密鑰,那么解密該應(yīng)用程序并將其保存在硬盤(pán)上就非常容易。然后在任何可用的反編譯器的幫助下,他都可以毫不費(fèi)力地獲取源代碼,
在這里,我們遇到了一個(gè)最有趣的問(wèn)題:如何從已編譯的代碼中獲取源代碼?事實(shí)證明這很簡(jiǎn)單。與C ++的源代碼在編譯過(guò)程中變成機(jī)器代碼不同,Java源代碼被編譯為所謂的“字節(jié)碼”。該字節(jié)碼可以很容易地反編譯為源代碼。實(shí)際上,從C ++獲取的機(jī)器代碼也可以反匯編,但是與反匯編的代碼不同,在反匯編的代碼中,不會(huì)有任何面向人的字符串,而在Java代碼中,將顯示源中的所有信息。因此,將重新構(gòu)造所有類,方法和變量的名稱,所有字符串文字都將處于其原始狀態(tài)。而且,這種反編譯的代碼與源代碼只有一點(diǎn)不同:不會(huì)有任何注釋,因?yàn)樗鼈冊(cè)诰幾g過(guò)程中被消除了。
顯而易見(jiàn)的是,如果存在一種從字節(jié)碼中消除人類可以掌握的所有信息的方法,那么理解反編譯的Java代碼與理解反匯編的Java代碼一樣困難。好吧,有一種方法-令人困惑。盡管混淆不能保證您的代碼不受逆向工程的100%保護(hù)(但是可以對(duì)代碼進(jìn)行反編譯和研究),但是理解混淆后的代碼變得更加困難-有時(shí)甚至是不可能。實(shí)際上,必須理解混淆不僅是保護(hù)代碼的方法,而且是將逆向工程過(guò)程轉(zhuǎn)換為耗時(shí)的操作的方法,需要大量的努力。目標(biāo)是阻止所有臨時(shí)入侵者和盡可能多的嚴(yán)重黑客。
模糊處理從編譯后的代碼中刪除了上下文,而人類(和逆向工程工具)將使用該上下文來(lái)解密代碼的含義。訣竅是從惡意中刪除此上下文,同時(shí)保持與原始程序的完整執(zhí)行完整性。Allatori完全完成了這一工作-您的程序?qū)a(chǎn)生與混淆之前相同的結(jié)果,但是代碼的反向工程難度更大。
回到頂部
什么是名稱混淆?
Allatori的名稱混淆機(jī)制將有意義的類,字段和方法名稱更改為無(wú)意義的字符串。盡管Allatori是第二代Java混淆器,但它也執(zhí)行出色的名稱混淆。與其他混淆器不同,它經(jīng)過(guò)設(shè)計(jì)可處理任何類型的依賴關(guān)系和繼承方案。
Allatori生成的新名稱非常短,因此可以減小字節(jié)碼的大小。在名稱混淆的字節(jié)碼中,包,類,字段和方法的名稱已重命名,并且原始名稱永遠(yuǎn)無(wú)法恢復(fù)。
不幸的是,控制流程仍然清晰可見(jiàn)。這就是為什么您需要Allatori的流程混淆的原因。
什么是流混淆?
作為第二代Java混淆器的Allatori除了執(zhí)行名稱混淆之外,還執(zhí)行流混淆。它對(duì)字節(jié)碼進(jìn)行了微小的更改,使控制流變得模糊,而無(wú)需更改代碼在運(yùn)行時(shí)的功能。通常,更改選擇和循環(huán)構(gòu)造,以使它們不再具有與Java直接等效的源代碼。流混淆的字節(jié)碼通常會(huì)迫使反編譯器在其產(chǎn)生的源代碼中插入一系列標(biāo)簽和非法的“ goto”語(yǔ)句。有時(shí),反編譯器錯(cuò)誤會(huì)進(jìn)一步掩蓋源代碼。
什么是字符串加密?
當(dāng)競(jìng)爭(zhēng)者或黑客反編譯受混淆的應(yīng)用程序時(shí),他們將使用任何線索找到他們感興趣的類別。嵌入在您的應(yīng)用程序中的字符串文字提供了重要的見(jiàn)解。這些文字可能是:
1.對(duì)話框中的標(biāo)簽或其他GUI組件
2.錯(cuò)誤消息
3.異常消息的文本。
對(duì)代碼中的字符串的簡(jiǎn)單搜索將在jiff中顯示出它的確切使用位置,這意味著它將本地化必要的代碼段,從而使黑客更容易理解算法。您的程序。字符串文字可以成為探索整個(gè)應(yīng)用程序的起點(diǎn)。
Allatori的字符串加密技術(shù)對(duì)存儲(chǔ)在類文件常量池中的字符串文字進(jìn)行加密。在這種情況下,應(yīng)用程序反編譯后的字符串搜索將不會(huì)給黑客帶來(lái)任何好處。Allatori將代碼片段添加到您的類中,以便您的字符串在運(yùn)行時(shí)被解密,這意味著從外部看,一切將照常進(jìn)行。
為什么要混淆我的Java代碼?
用Java編寫(xiě)的程序易于逆向工程。在任何情況下都不能責(zé)怪Java設(shè)計(jì)。這只是現(xiàn)代和中間編譯語(yǔ)言的本質(zhì)。Java使用表達(dá)性文件語(yǔ)法來(lái)交付可執(zhí)行代碼:字節(jié)碼。與二進(jìn)制機(jī)器代碼相比,中間文件具有更高的級(jí)別,中間文件充滿了可以立即觀察并最終可以理解的標(biāo)識(shí)符和算法。
因此,配備Java反編譯器的每個(gè)人都可以看一下您的代碼,并揭示其中保留的所有秘密。諸如軟件許可代碼,專有業(yè)務(wù)邏輯或復(fù)制保護(hù)機(jī)制之類的應(yīng)用程序部分對(duì)于黑客來(lái)說(shuō)似乎非常有趣。研究了您的代碼后,他可以輕松地將其用于自己的目的,而這通常與您的目的不符。例如,在研究了安全系統(tǒng)并發(fā)現(xiàn)漏洞之后,黑客可以創(chuàng)建特定的利用程序。即使是最瑣碎的目標(biāo),例如竊取您獨(dú)特的想法和算法,以及對(duì)應(yīng)用程序進(jìn)行破解等,也確實(shí)發(fā)生了。這些使用代碼的方法幾乎無(wú)法取悅您。提到的所有這些內(nèi)容似乎足以讓您考慮一會(huì)兒并做出正確的選擇。如果您之前有疑問(wèn),
什么是軟件水印?
軟件水印可用于將客戶標(biāo)識(shí)或版權(quán)信息隱藏到軟件應(yīng)用程序中,類似于使用隱寫(xiě)技術(shù)將其隱藏在歌曲,電影和圖像等其他數(shù)字內(nèi)容中的方式。水印可用于識(shí)別軟件的所有者或跟蹤盜版副本的來(lái)源。
想要購(gòu)買(mǎi)Allatori Java obfuscator正版授權(quán)請(qǐng)點(diǎn)擊【商城購(gòu)買(mǎi)】,想要了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: