如果是簡單的JAVA代碼或者沒有經(jīng)過混淆編譯的代碼就會使一樣或者差不多的。但是一下兩種情況就特別不一樣:經(jīng)過混淆編譯的 使用內(nèi)部類的 另外,所有的注釋都是沒有的。
成都創(chuàng)新互聯(lián)一直通過網(wǎng)站建設和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實效"的一站式服務,以成都做網(wǎng)站、成都網(wǎng)站建設、成都外貿(mào)網(wǎng)站建設、移動互聯(lián)產(chǎn)品、成都全網(wǎng)營銷服務為核心業(yè)務。10年網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設技術,全新開發(fā)出的標準網(wǎng)站,不但價格便宜而且實用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設的選擇。
是的,.class 文件可以反編譯成.java文件,在網(wǎng)上就。
編譯過的是class文件。源碼是java文件。class文件是不能修改的。java文件可以修改。class文件可以通過反編譯工具看到他的java代碼。但是還是不能修改的。也不能變成java文件吧。
Java類的編譯與反編譯 我們在最初學習Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。
進行修改,改完再編譯。至于在命令提示符下操作不記得有沒有,但你可以查下關于反編譯工具Xjad的相關使用方法,因為在eclipse中查看.class文件需要在jdk的bin目錄中添加一個jad.exe的程序。
是的,.class 文件可以反編譯成.java文件,在網(wǎng)上就。
如果是java寫的,它被編譯成字節(jié)碼,但不是真正的機器語言,如果反編譯的話,就可以把java源代碼反編譯出來,c#跟java如出一轍,原理上是很相近的,所以它的程序也可以反編譯出源代碼。
不是每個反編譯都能完美的,用eclipse規(guī)范下代碼,然后不符合的語法的方法,自己換成適合當前jdk版本支持的就可以了,反編譯還是得花力氣在代碼的上,偷懶有限啊。
這樣做是行不通的。反編譯一般是不能完全得到源Java代碼的,得到的代碼甚至會有語法錯誤,除非是簡單的那些代碼。要改的話就得改.class文件,但這個非常困難,要在16進制下改。
你說的java源代碼是指編譯成的class文件前的java文件。
Java有源代碼加密的,就算有反編譯工具也無法發(fā)編譯,或者反編譯出來是亂碼,如果你不加密那確實是送人。
無法防止。.class文件的標準是公開的,無法防止別人反編譯你的代碼。你頂多可以用代碼擾亂工具擾亂你的代碼,這樣反編譯的代碼就難以閱讀。比如可以試試用proguard來擾亂(“加密”)和反擾亂(“解密”)你的代碼。
java本就是開源的,你加密感覺怪怪的。想防止反編譯,最簡單的方法就是你可以向Jar注入無效代碼。比如建一個類,建一個沒有意義的方法private class Invalid{ },然后輸出為jar。
如果只是為了使用和發(fā)布方便,不需要保護java代碼,使用這些工具是很好的選擇。
1 關鍵代碼使用jni調用本地代碼,用c或者c++編寫,因此相對比較難于反編譯 2 混淆java代碼?;煜遣桓淖兇a邏輯的情況下,增加無用代碼,或者重命名,使反編譯后的源代碼難于看懂。
很久前做過一個項目,用很復雜的算法加密 class文件,然后在虛擬機載入前調用解密程序。用的是 jvmti。這樣可以防止class loader被反編譯導致加解密算法泄漏,應該算比較好的一種解決方案了。
從理論上來說,如果有足夠的時間,被混淆的代碼仍然可能被破解,甚至目前有些人正在研制反混淆的工具。但是從實際情況來看,由于混淆技術的多元化發(fā)展,混淆理論的成熟,經(jīng)過混淆的Java代碼還是能夠很好地防止反編譯。