【需要加密的反編譯的一些場景】
1、公司開發(fā)的java web要項目打包成war包往外賣,怎么對war包進行處理,防止其自己拷貝后往外出售呢,如果不通過加密的方式,還有其他方式防止其出售呢.
2、大家都知道的,class很好反編譯。出于對知識產權和自身軟件的保護,不希望任何人都可以看到源代碼或者被反編譯工具進行解密。
【java web發(fā)布運行在tomcat 大概加密與反編譯過程如下】
對于傳統的C或C++之類的語言來說,要在Web上保護源代碼是很容易的,只要不發(fā)布它就可以。遺憾的是,Java程序的源代碼很容易被別人偷看。只要有一個反編譯器,任何人都可以分析別人的代碼。Java的靈活性使得源代碼很容易被竊取。
有幾種技術可以“模糊”Java類文件,使得反編譯器處理類文件的效果大打折扣。然而,修改反編譯器使之能夠處理這些經過模糊處理的類文件并不是什么難事,所以不能簡單地依賴模糊技術來保證源代碼的安全。
我們可以用流行的加密工具加密應用,比如PGP(Pretty Good Privacy)或GPG(GNU Privacy Guard)。這時,最終用戶在運行應用之前必須先進行解密。但解密之后,最終用戶就有了一份不加密的類文件,這和事先不進行加密沒有什么差別。
再說硬件加密鎖,大多數廠商提供的加密鎖只能進行dll的連接或簡單的api調用,只要簡單地反編譯,就很容易把api去掉,這樣加密鎖根本起不了作用,那到底是否還有更好的解決辦法呢?
現提供2種解決辦法:
1、HASP加密鎖提供的外殼加密工具中,有一個叫做數據加密的功能,這個功能可以很好的防止反編譯而去掉api的調用,大家知道:硬件加密鎖的保護原理就是讓加密過的軟件和硬件緊密相連,調用不會輕易地被剔除,這樣才能持久地保護您的軟件不被盜版,同時,這種方式使用起來非常簡單,很容易被程序員掌握,要對一個軟件實現保護,大約只需幾分鐘就可以了,下面簡要介紹一下它的原理:
運用HASP HL的外殼工具先把java解釋器進行加密,那么,如果要啟動這個解釋器就需要有特定的加密鎖存在,然后,再運用外殼工具中的數據加密功能把java程序(CLASS或JAR包)當作一個數據文件來進行加密處理,生成新的java程序,因為這個加密過程是在鎖內完成的,并采用了128位的AES算法,這樣,加密后的java程序,無論你采用什么樣的反編譯工具,都是無法反編譯出來。您的軟件也只有被加密過的java解釋器并有加密鎖的情況下才能正常運行,如果沒有加密鎖,程序不能運行,從而達到真正保護您的軟件的目的,該方法只支持Windows平臺。
2、HASP提供專門針對java外殼加密工具,直接加密jar或war包,防止反編譯,目前支持J2SE,J2EE主要支持容器為TOMCAT6.0以上,可在Windows和Linux平臺下運行,如果情況適合則是最簡單的使用方法。
到目前為止,HASP是加密鎖行業(yè)中唯能針對java加密,防止反編譯的。
如果是windows操作系統的方案
把一個核心的東西放到dll里面,這樣dll是反編譯不了的
目前能解決的就是這個方式了。想一勞永逸是不可能的。win都能破解,何況java
高級方案:混淆(RetroGuard )+數字簽名驗證
建議方案:根本的方法是凡是拷貝的副本,在運行時,程序自動連接到官方的服務器做正版驗證。至少解決大部分問題。
反編譯源代碼被修改這種破解方法:
這個比較靠譜,驗證的jar包,加密混淆,或者各個jar包注入 驗證,反編譯好像無解吧。
javaee加密部署,tomcat使用自己的classloader解密 http://www.2cto.com/kf/201312/264455.html
APK反編譯,因為當下絕大多數的Android安卓手機的app都是用java編寫的;
1、Android APK反編譯就這么簡單 詳解(附圖) http://blog.csdn.net/vipzjyno1/article/details/21039349/
2、apk反編譯獲取完整源碼 及 apk反編譯后的處理 http://blog.csdn.net/wh_19910525/article/details/7915738/
沒有絕對的安全,只要人真的有心,破解是早晚的事情。
war包打包的已經是編譯過的class文件了,看不到源碼的,甚至數據庫的連接賬號也已經不可見了。即使是反編譯,也是需要花費一番功夫的,要相信沒人有閑工夫看你的爛代碼,放心的交接吧