反编译工具jd-gui、luyten学习使用
1、反編譯
1.1介紹
要了解反編譯,首先需要了解計算機語言,它包括機器語言、匯編語言、高級語言三種。其中,機器語言和匯編語言通常被稱之為低級語言。
簡單來說,可以這樣簡單的理解:低級語言是計算機認識的語言、高級語言是程序員認識的語言。
所謂編譯,就是指高級語言轉換成低級語言讓計算機執行的過程。反編譯則相反,通過低級語言進行反向工程,獲取其源代碼。
1.2作用
1. Java這門編程語言,有許多如泛型、自動裝箱拆箱等語法糖。因為java虛擬機不認識這些,所以就會在編譯的時候進行相應的解糖,得到class文件。反編譯工具就可以幫我們反編譯class文件,獲得一份java文件,讓我們了解到這些語法糖是如何實現的。
2.可以對其他人的代碼進行反編譯,學習代碼實現。或者通過源代碼查找bug,制作外掛等。
1.3防止反編譯
由于我們有工具可以對Class文件進行反編譯,當然就要有對應的技術可以應對反編譯,從而保護java程序。比較典型的應對策略如下:
(1)隔離Java程序,讓用戶接觸不到你的Class文件
(2)對Class文件進行加密,提高破解難度
(3)代碼混淆,將代碼轉換成功能上等價,但是難于閱讀和理解的形式
2、jd-gui的使用
首先我們可以自制一個demo的class文件來測試使用反編譯工具。在自定義路徑下,新建一個demo的java文件。簡單測試即可,具體內部代碼如下圖。
圖2-2 demo.java
然后我們在該路徑下,用cmd進入命令界面,輸入javac demo.java指令,即可將java文件編譯成class文件,并在同目錄下出現。
圖2-3 編譯demo.java文件
圖2-4 同目錄下出現demo.class文件
得到class文件以后我們就可以來測試反編譯功能了。首先還是打開jd-gui.exe文件。單擊【file】從中選擇【Open File ...】選項,彈出一個文件選擇框,可以選擇要打開的文件,或者直接單擊文件夾圖標,直接彈出文件選擇框;從文件選擇框中選擇要打開的.class類型的文件,單擊【確定】。在打開的文件里,左側可以看到文件的保存位置,類及方法,右側顯示類的具體內容,注釋不會顯示
圖2-5 打開文件進行反編譯
圖2-6 反編譯結果
Jd-gui同時也支持高級搜索。點擊下圖所示圖標,即可進入搜索界面,快速定位需要的東西。
圖2-7 高級搜索
搜索方法。類似電腦的快捷鍵Ctrl+F,此時不會打開小窗,在界面的下方會顯示一個輸入框,輸入想要查找的方法名,即可。
圖2-8 搜索方法
搜索類。菜單欄快捷方式,在彈框內輸入想要查找的類名。
圖2-9 搜索類
3、luyten的使用
同樣,那前面做的demo.class文件進行舉例使用。打開luyten工具進入圖形界面,打開文件,可以看到展示如下圖。
圖3-1 luyten反編譯界面
可以看到,編碼格式有些問題,默認為Unicode顯示。我們可以點擊【Settings】做一些配置,如勾選【Force Explicit Imports】,顯示全部引入包的路徑,默認為*顯示;同時勾選【Enable Unicode Replacement】,正常顯示中文。具體如下圖。
圖3-2 luyten配置
之后就可以正常顯示了。反編譯中,點擊【save as】是生成當前指定文件源碼,【save all】是生成當前jar包的全部文件源碼。
圖3-3 生成源碼
總結
以上是生活随笔為你收集整理的反编译工具jd-gui、luyten学习使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MIPI屏数据发送命令解析
- 下一篇: 腾讯电脑管家具有计算机病毒查杀功能,腾讯