- N +

java代碼加密防止反編譯 jar防止反編譯工具

大家好,今天來(lái)為大家分享java代碼加密防止反編譯的一些知識(shí)點(diǎn),和jar防止反編譯工具的問(wèn)題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問(wèn)題,接下來(lái)我們就一起來(lái)看看吧!

net軟件,用什么軟件加密狗加密,能防止代碼反編譯

.Net軟件的特點(diǎn),一些強(qiáng)大的編譯工具可以對(duì).Net可執(zhí)行文件進(jìn)行反編譯操作,并得出相應(yīng)的IL代碼甚至是源代碼。即使是采用混淆工具以及強(qiáng)命名工具也不能從根本上解決問(wèn)題,代碼依然會(huì)很容易地被Reflectoer等工具反編譯源代碼。 軟件加密狗:威步(WIBU)的CodeMeter,AxProtector(for.net)兩款軟件加密狗性能非常不錯(cuò) 反編譯的問(wèn)題,與傳統(tǒng)的代碼混淆工具(Obfuscator)不同,AxProtector可以完全阻止對(duì).NET程序集(由C#,VB.NET,Delphi.NET,ASP.Net…等語(yǔ)言編寫(xiě))的反編譯。通俗的講,AxProtector在破解者和您的.NET代碼之間構(gòu)建了強(qiáng)大的防破解保護(hù)屏障,生成一個(gè)基于Windows的而不是基于MSIL的兼容格式文件。原始的.NET代碼完整的被加密后封裝在本地代碼內(nèi),無(wú)論何時(shí)都不會(huì)釋放到硬盤(pán),對(duì)于破解者是不可見(jiàn)的。 與單純的.net加密軟件不同,AxProtector與CodeMeter硬件加密狗配套餐使用,采用了更為嚴(yán)密的密鑰管理,及最先進(jìn)的AES、RSA、ECC等加密算法存儲(chǔ)或傳輸密鑰,保證通訊安全。 .Net代碼編譯后生成的.class中包含有源代碼中的所有信息(不包括注釋),尤其是在其中保存有調(diào)試信息的時(shí)候。所以一個(gè)按照正常方式編譯的.class文件可以非常輕易地被反編譯。一般軟件開(kāi)發(fā)商會(huì)采用一種叫做混淆器的工具。混淆器的作用是對(duì)編譯好的代碼進(jìn)行混淆,使得其無(wú)法被反編譯或者反編譯后的代碼混亂難懂。由于混淆器只是混淆了方法名稱或流程,而不能防止源代碼被反編譯,因此混淆器的作用只是增加了反編譯的難度,最終的結(jié)果也是治標(biāo)不治本。對(duì)于一些掌握工具的人來(lái)說(shuō)幾乎還是透明的。AxProtector是一款真正意義的加密源代碼、防止反編譯的.net軟件加密軟件。 AxProtector加密了.net原代碼,任何時(shí)候原代碼都不可能被還原到硬盤(pán)當(dāng)中。采用AxProtector加密后的.net代碼只有在程序調(diào)用或執(zhí)行某一段函數(shù)的時(shí)候,才能通過(guò)AxProtectorClass在內(nèi)存中解密后返回到程序中執(zhí)行,運(yùn)行之后迅速立即加密。這種隨機(jī)加密、按需解密原代碼的功能,能很好的防止.Net程序的反編譯,同時(shí)能夠很好地防止API加密點(diǎn)被摘除。有效地保證了源代碼的執(zhí)行效率和安全性。

如何防止JAVA程序源代碼被反編譯

防止Java開(kāi)發(fā)出來(lái)的程序被別人反編譯有很多種方法,下面給你介紹幾種:

1、隔離Java程序

最簡(jiǎn)單的方法就是讓用戶不能夠訪問(wèn)到JavaClass程序,這種方法是最根本的方法,具體實(shí)現(xiàn)有多種方式。例如,開(kāi)發(fā)人員可以將關(guān)鍵的JavaClass放在服務(wù)器端,客戶端通過(guò)訪問(wèn)服務(wù)器的相關(guān)接口來(lái)獲得服務(wù),而不是直接訪問(wèn)Class文件。這樣黑客就沒(méi)有辦法反編譯Class文件。目前,通過(guò)接口提供服務(wù)的標(biāo)準(zhǔn)和協(xié)議也越來(lái)越多,例如HTTP、WebService、RPC等。但是有很多應(yīng)用都不適合這種保護(hù)方式,例如對(duì)于單機(jī)運(yùn)行的程序就無(wú)法隔離Java程序。

2、對(duì)Class文件進(jìn)行加密

為了防止Class文件被直接反編譯,許多開(kāi)發(fā)人員將一些關(guān)鍵的Class文件進(jìn)行加密,例如對(duì)注冊(cè)碼、序列號(hào)管理相關(guān)的類等。在使用這些被加密的類之前,程序首先需要對(duì)這些類進(jìn)行解密,而后再將這些類裝載到JVM當(dāng)中。這些類的解密可以由硬件完成,也可以使用軟件完成。

3、轉(zhuǎn)換成本地代碼

將程序轉(zhuǎn)換成本地代碼也是一種防止反編譯的有效方法。因?yàn)楸镜卮a往往難以被反編譯。開(kāi)發(fā)人員可以選擇將整個(gè)應(yīng)用程序轉(zhuǎn)換成本地代碼,也可以選擇關(guān)鍵模塊轉(zhuǎn)換。如果僅僅轉(zhuǎn)換關(guān)鍵部分模塊,Java程序在使用這些模塊時(shí),需要使用JNI技術(shù)進(jìn)行調(diào)用。

4、代碼混淆

代碼混淆是對(duì)Class文件進(jìn)行重新組織和處理,使得處理后的代碼與處理前代碼完成相同的功能(語(yǔ)義)。但是混淆后的代碼很難被反編譯,即反編譯后得出的代碼是非常難懂、晦澀的,因此反編譯人員很難得出程序的真正語(yǔ)義。從理論上來(lái)說(shuō),黑客如果有足夠的時(shí)間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是從實(shí)際情況來(lái)看,由于混淆技術(shù)的多元化發(fā)展,混淆理論的成熟,經(jīng)過(guò)混淆的Java代碼還是能夠很好地防止反編譯。

不同保護(hù)技術(shù)比較希望能給大家?guī)?lái)參考:

如何防止.NET程序被反編譯

阻止不了,任何一個(gè)程序都可以被反編譯當(dāng)然了,并不是說(shuō)反編譯以后就是源代碼不知道你用的什么語(yǔ)言,在.net里,一般都是用Dotfuscator之類的工具進(jìn)行混淆干擾.NET有一種加密字節(jié)碼的方式是通過(guò)hook住JIT編譯器的入口來(lái)做的:字節(jié)碼經(jīng)過(guò)加密/混淆存在文件里,等被CLR加載了,某個(gè)方法要執(zhí)行而需要被JIT編譯時(shí),hook住JIT編譯器的入口攔截住這個(gè)編譯請(qǐng)求,然后去把對(duì)應(yīng)的字節(jié)碼解密之后再傳給JIT編譯器。

這種做法基本上只能唬唬小朋友,知道了原理之后很好解,可以輕松的獲取解密后的字節(jié)碼然后扔給常規(guī)的反編譯器去處理。

但現(xiàn)實(shí)的說(shuō),大部分用戶在“試圖解密”方面都是小朋友,所以倒也算是一種可行方案。

防止反編譯有什么好辦法,除了代碼混淆還有什么

很久前做過(guò)一個(gè)項(xiàng)目,用很復(fù)雜的算法加密class文件,然后在虛擬機(jī)載入前調(diào)用解密程序。用的是jvmti。這樣可以防止classloader被反編譯導(dǎo)致加解密算法泄漏,應(yīng)該算比較好的一種解決方案了。

python源碼編程成pyc后,怎么防止反編譯

兩個(gè)較方便的方案可以把python代碼加密,一個(gè)是pyinstaller另一個(gè)是

Nuitka

1.打包工具PyInstaller>3.2新加入一個(gè)加密參數(shù)--k,用戶可自定義一個(gè)16位密鑰,例:

python.exepyinstaller.py--k=xxxxxxxxxxxxxxxx--cleanxxx.py

關(guān)于這個(gè)功能,個(gè)人理解是加密后沒(méi)有密鑰第三方解不出pyc(pyo)文件,也就無(wú)從反編譯,當(dāng)執(zhí)行exe文件時(shí),打包工具將加密的字節(jié)碼送入內(nèi)存解密運(yùn)行.

但是pyinstaller所用加密模塊是

開(kāi)源

PyCrypto

,理論上高手還是能想辦法的,不過(guò)聊勝于無(wú),就算是c程序只要花時(shí)間也能被反匯編,pyinstaller這個(gè)新參數(shù)可以加大破譯難度,增加破解成本

詳見(jiàn)官方文檔

UsingPyInstaller

--keyThekeyusedtoencryptPythonbytecodeEncryptingPythonBytecode

2.關(guān)于

Nuitka,是把python代碼轉(zhuǎn)成c++代碼然后靜態(tài)編譯成二進(jìn)制文件,比第一種方案稍麻煩一點(diǎn),但據(jù)說(shuō)可以提升執(zhí)行速度

NuitkaHome|NuitkaHome

好了,關(guān)于java代碼加密防止反編譯和jar防止反編譯工具的問(wèn)題到這里結(jié)束啦,希望可以解決您的問(wèn)題哈!

返回列表
上一篇:
下一篇: