java程序來解析class文件實(shí)現(xiàn)反編譯

java程序來解析class文件實(shí)現(xiàn)反編譯

ID:8891306

大小:40.50 KB

頁數(shù):8頁

時間:2018-04-10

java程序來解析class文件實(shí)現(xiàn)反編譯_第1頁
java程序來解析class文件實(shí)現(xiàn)反編譯_第2頁
java程序來解析class文件實(shí)現(xiàn)反編譯_第3頁
java程序來解析class文件實(shí)現(xiàn)反編譯_第4頁
java程序來解析class文件實(shí)現(xiàn)反編譯_第5頁
資源描述:

《java程序來解析class文件實(shí)現(xiàn)反編譯》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、[B01][java程序解析class文件]Type:[B01][Solution]Submit:[abc@163.com][2012.11.06][V1.00]From:http://blog.163.com/jtf975/blog/static/18135128720112612517429/我們都知道,Java編譯器負(fù)責(zé)將.java文件編譯成.class文件,class文件存儲的是java字節(jié)碼,與.java文件無關(guān)(只要你愿意寫一個編譯器,也可以將別的語言寫的源代碼編譯成.class文件),本文預(yù)備具體解剖class

2、文件的內(nèi)部結(jié)構(gòu),并且把class文件結(jié)構(gòu)讀取并顯示出來。  Class文件的格式由JVM規(guī)范規(guī)定,一共有以下部分:  1.magicnumber,必須是0xCAFEBABE,用于快速識別是否是一個class文件?! ?.version,包括major和minor,假如版本號超過了JVM的識別范圍,JVM將拒盡執(zhí)行?! ?.constantpool,常量池,存放所有用到的常量?! ?.accessflag,定義類的訪問權(quán)限?! ?.thisclass和superclass,指示如何找到thisclass和superclass。

3、  6.inte***ces,存放所有inte***ces?! ?.fields,存放所有fields?! ?.methods,存放所有methods?! ?.attributes,存放所有attributes?! ∠葘懸粋€Test.java:  packageexample.test;  publicfinalclassTestClass{  publicintid=;  publicvoidtest(){}}然后編譯,放在C:DocumentsandSettingsAdministrator桌面解析class文件

4、TestClass.java?! ∥覀冇肑ava來讀取和分析class,ClassAnalyzer的功能便是讀取Test.class,分析結(jié)構(gòu),然后顯示出來,DOS下顯示的內(nèi)容比較少,我們通過StringBuffer最后輸出到txt文件,實(shí)現(xiàn)由文件到文件的轉(zhuǎn)變:packageorg.edeye.common.util;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.DataInputStream;impor

5、tjava.io.DataOutputStream;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;publicclassClassAnalyzer{publicstaticStringBuffersb=newStringBuffer();publicstaticbyte[]analyzeConstant_tag;publicstaticString[]analyzeConstant_utf8;pub

6、licstaticDataOutputStreamdataout;publicstaticStringdesk="C:\Users\k\Desktop\";publicstaticStringmyClass=desk+"test1.class";publicstaticStringmyClassTmp=myClass+".tmp";publicstaticvoidmain(String[]args){DataInputStreaminput=null;try{FileOutputStreamout=newFileOu

7、tputStream(myClassTmp);BufferedOutputStreambuffout=newBufferedOutputStream(out);dataout=newDataOutputStream(buffout);input=newDataInputStream(newBufferedInputStream(newFileInputStream(myClass)));//獲取文件大小FileSize(newDataInputStream(newBufferedInputStream(newFileInpu

8、tStream(myClass))));//解析數(shù)據(jù)analyze(input);}catch(Exceptione){System.out.println("解析失敗!");}finally{try{input.close();dataout.close();}catch(Excepti

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。