Jar包的反編譯:
Java的世界是透明的,當編譯java程序的時候,是將java源文件轉成.class文件,java虛擬機去執行這些字節碼從而得到執行java程序的目的。那么從.class文件能不能得到java源文件呢?答案是肯定的!如今就為大家推薦一款神器jd-gui.exe,界面例如以下圖:
它能將.class文件轉成java文件,就能看到源代碼了!想copy代碼的、想漢化的、想盜版的、想學習人家源代碼的統統沒問題!我們經常見到java中的jar包,通過這個工具能看到jar包中的詳細實現,近期公司在做支付寶的手機支付,全部這里去看看支付寶提供的jar包,學習一下:
點擊File后選擇jar包就可以,出現界面例如以下:
那么就看到了支付寶手機jar包的源碼了,比方Http請求對象、返回狀態等等哪些。那么這不就看到了支付寶的數據封裝了且不是泄密了嗎?當然沒有那么嚴重,支付寶那么多牛人,他們肯定早就知道了反編譯會透明java代碼了,所以這個jar包中的核心代碼不是用java來實現的,任你怎么反編譯也看不到詳細的實現。
Android的反編譯
Android應用程序是用java語言來寫的,所以在反編譯方面也跟java一樣的。這里推薦一款android反編譯工具ApkDec,該反編譯工具將Apk直接分解成java源文件的jar包和資源文件,java源文件的jar包通過jd-gui.ext就能看到源代碼,包含androidproject中引用的jar包中的源代碼!資源文件直接打開就能夠看到源代碼。

假設某個Apk全然是用java寫的,通過這個工具反編譯之后就相當於全然開源了,這對商家的版權和商業機密是很不利的,所以建議在開發具有商業機密和高度保密的apk時,這些重要的部分用其它語言來實現,防止java反編譯后被別人看出了端詳,比方在android里面使用jni,重要的部分用C/C++去實現。即使是被反編譯,也僅僅能看出接口,看不出詳細的實現。
好了,詳細就是這種。關於反編譯工具,見例如以下地址:http://download.csdn.net/detail/main_stage/7477111