我同學有買書贈送光碟的,里邊有代碼,但都不怎麼好。
不是別人把代碼的方法和類都做處理方法名和類只有字母代替,沒有注釋,而是打jar包的時候打的混淆包,這樣的話就會產生你說的效果,如果所編譯混淆包,80%以上的類和方法都報錯,這個倒沒有試過。
別人故意用一些錯誤的但不會引起異常的方法和類來混淆我的視線,這個是不可能的,jar游戲文件本來就要求小而精的,沒用的東西越多,效率越低,沒有人會這樣做的。
其它問題我也想看看別人是怎麼回答的,我剛學3個月j2ME
Ⅱ 有什麼辦法能無錯的反編譯jar成源碼
你需要懂得一些匯編的基礎。
反編譯出來的源碼不是有錯,而是根據class文件進行反匯編而成的,這里的匯編並不完全等同於8086那一類匯編,但是基本的語句是類似的。因為java不支持goto語句,而匯編中跳轉語句實現了所有的循環和條件語句,所以反匯編出來的代碼會報錯。
你必須把這些「有錯的」代碼讀懂,把有goto的地方翻譯成循環或者條件語句。
你可以試試反編譯一些無條件無循環的java文件,得到的源碼肯定可以直接運行的。
然後自己加一點循環語句,看看反編譯出來的代碼,做對比,多試驗幾次,你就能看得懂那些「有錯的」代碼了。
目前我沒有用過能夠把class完全還原成java文件的反編譯工具。
Ⅲ java的打包後jar包裡面的class文件都能被反編譯成為源碼嗎
jd-gui這個工具可以進行反編譯的操作。 不過反編譯的質量隨著混淆的程度而定。
特別復雜的代碼(如加密演算法)反編譯一般都有問題。可以建議用 javap -c -p 來看位元組碼。然後參考jvm指令。
一般編譯的文件,都可以反編譯為源碼,但如果是經過加密、以及代碼異常復雜,是很難恢復全部的源碼。
Ⅳ JAR文件經過反編譯 得出的代碼輸入eclipse無法運行很多錯誤
反編譯過的jar得到的最終代碼形式和手動敲上去的一樣,至於錯誤的原因,大概的分析下來我覺得至少有這幾種可能,包之間的依賴(其他包的引用,但在你的項目擬不存這個包),另外一種就是語法不全,或是語法混亂,有的反編譯工具就可能會生成錯誤的語法結構.... 至於反編譯工具,還沒用過這個東西,所以暫不討論那些好,那些壞了!
Ⅳ JAVA 編譯後WEB項目 源碼沒有了 怎麼可以添加新功能求各位高手指點,小弟不懈感激
看你是什麼樣的功能吧。
有可能是這樣的。對方將原碼編譯成一個jar文件放到web-inf/lib下。
他們需要你做的功能完全是新的,對即有的不會有影響。
如果是這樣,那你需要知道你要繼承什麼樣的介面來做實現。這個需要對方提供相應的資料。
如果是改動即有的功能,沒有源碼,做不了。
雖然可以反編譯代碼,但反編譯的也不是完全都准確的,有些語句解析的不正確,最常見的就是異常處理的反編譯。
總得來說,沒有源碼是很不方便的。
Ⅵ Java中Jar包為什麼能輕易就給反編譯了
java中jar包輕易的被反編譯是由於java的特性決定的。java中的jar包的實質內容是java源代碼編譯後的.class文件,由於java的面向對象特性和java的反射技術,可以很容易的通過對.class文件進行反射來得到java的源代碼,也就是反編譯!對於java的反編譯,並不是所有內容都會反編譯出來,java源文件中的注釋、泛型等內容在經過編譯和反編譯之後會丟失。
Ⅶ app可以被反編譯到什麼程度
Android APK中的Java代碼可以被反編譯到什麼程度主要看APK的加密程度。
第一種情況:無混淆無加密無加殼。
直接利用Dex2jar和JD-GUI可把源碼從APK里摳出來,代碼邏輯清晰,基本上做到可復用,只是資源文件的引用需要計算一下。
第二種情況:混淆。
通常是利用Proguard做的防護。因為是對jar做的不可逆混淆(除非有mapping),因此不能還原成原來的代碼。但是代碼結構,代碼邏輯一致,只要花長時間對代碼進行梳理一樣可找准核心代碼,解密方法跟第一種一致。
第三種情況:加密。
這里以DexGuard為例。對於這種代碼加密的方法,在程序運行中必定會進行解密,只要抽出它解密的邏輯便可。PS:我自己做過DexGuard的解密,如果用Dex2jar反編譯看的話邏輯是不對的,一定要從Smali代碼看。後來發現網上已經有人做了。
解密的腳本:A look inside Dexguard
第四種情況:加殼。
這種情況跟第三種類似。無論你怎麼加殼,運行的時候必定是Dalvik可識別的Odex代碼,建議直接在內存里mp出來。這里推薦Xpose的ZjDroid。
加固可以在一定程度上保護自己核心代碼演算法,提高破解/盜版/二次打包的難度,緩解代碼注入/動態調試/內存注入攻擊等。
目前市面上有很多第三方加固的平台, 如果新應用發布前需要掃描或者加固的話,可以先試試免費的,例如騰訊御安全,建議自己先去掃描測試下。