真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

逆向java代碼還原 逆序java代碼

我用反編譯文件將class編譯后成了java然后什么都沒改結(jié)果沒法還原成class了

就拿目前最流行的反編譯工具jad來說,目前他也無法正常反編譯class中

瑪多網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),瑪多網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為瑪多上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的瑪多做網(wǎng)站的公司定做!

關(guān)于try catch finally的部分,同時(shí)他的官方網(wǎng)站上也有說明他反編譯

的內(nèi)容僅為java文件的主體流程,其中如果出現(xiàn)參數(shù)或方法名錯誤很正常

因此反編譯文件不能正常還原java.class很正常,這就是為什么java有不開源

的程序,如果都可以反編譯class文件,那些不開源的豈不都是免費(fèi)的了,因此該

工具僅能夠參考,不能夠照抄,希望對你有幫助

什么是Java代碼的編譯與反編譯?

Java代碼的編譯與反編譯

2017-02-21Hollis數(shù)盟

一、什么是編譯

1、利用編譯程序從源語言編寫的源程序產(chǎn)生目標(biāo)程序的過程。

2、用編譯程序產(chǎn)生目標(biāo)程序的動作。編譯就是把高級語言變成計(jì)算機(jī)可以識別的2進(jìn)制語言,計(jì)算機(jī)只認(rèn)識1和0,編譯程序把人們熟悉的語言換成2進(jìn)制的。編譯程序把一個源程序翻譯成目標(biāo)程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯誤,給出提示信息。

二、什么是反編譯

計(jì)算機(jī)軟件反向工程(Reverseengineering)也稱為計(jì)算機(jī)軟件還原工程,是指通過對他人軟件的目標(biāo)程序(可執(zhí)行程序)進(jìn)行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所使用的思路、原理、結(jié)構(gòu)、算法、處理過程、運(yùn)行方法等設(shè)計(jì)要素,某些特定情況下可能推導(dǎo)出源代碼。反編譯作為自己開發(fā)軟件時(shí)的參考,或者直接用于自己的軟件產(chǎn)品中。

三、Java類的編譯與反編譯

我們在最初學(xué)習(xí)Java的時(shí)候,會接觸到兩個命令:javac和java,那個時(shí)候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。

class文件打破了C或者C++等語言所遵循的傳統(tǒng),使用這些傳統(tǒng)語言寫的程序通常首先被編譯,然后被連接成單獨(dú)的、專門支持特定硬件平臺和操作系統(tǒng)的二進(jìn)制文件。通常情況下,一個平臺上的二進(jìn)制可執(zhí)行文件不能在其他平臺上工作。而Javaclass文件是可以運(yùn)行在任何支持Java虛擬機(jī)的硬件平臺和操作系統(tǒng)上的二進(jìn)制文件。

那么反編譯呢,就是通過helloworld.class文件得到j(luò)ava文件(或者說是程序員能看懂的Java文件)

四、什么時(shí)候會用到反編譯

1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那么我們可以把它反編譯成我們可以看得懂的文件。

2、學(xué)習(xí)Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時(shí)候我們想知道Java一些實(shí)現(xiàn)細(xì)節(jié),我們可以借助反編譯。

五、反編譯工具

1、javap

2、Jad:官網(wǎng)(墻裂推薦)

客戶端:

可以在官網(wǎng)下載可執(zhí)行文件,找到對應(yīng)的操作系統(tǒng)的對應(yīng)版本,然后進(jìn)行安裝使用。

因?yàn)槲沂褂玫氖莑inux操作系統(tǒng),所以我下載的是Linux版本的工具,這個工具下載好之后會有一個執(zhí)行文件,只要在執(zhí)行文件所在目錄執(zhí)行./jadhelloworld.class就會在當(dāng)前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼

Eclipse插件:

下載地址在官網(wǎng)下載插件的jar包,然后將jar包放到eclipse的plugins目錄下‘在打開Eclipse,Eclipse-Window-Preferences-Java,此時(shí)你會發(fā)現(xiàn)會比原來多了一個JadClipse的選項(xiàng),單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時(shí)文件的目錄。當(dāng)然在JadClipse下還有一些子選項(xiàng),如Debug,Directives等,按照默認(rèn)配置即可。基本配置完畢后,我們可以查看一下class文件的默認(rèn)打開方式,Eclipse-Window-Preferences-General-Editors-FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認(rèn)的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼

java寫的exe文件怎么反編譯成 java代碼 求高手

那是不可能的 。只能把exe文件通過反匯編工具反編譯成匯編文件 ,就像你把中文翻譯成英語,再把英語翻譯成中文后肯定與原來的有差異

Java反編譯代碼解釋:

public static String format(long paramLong)//paramLong是一個傳遞進(jìn)來的long型整數(shù)

{

int i = 60 * 60;定義i=60乘60就是3600

long l1 = paramLong / i;定義l1等于paramLong除以i

long l2 = (paramLong - l1 * i) / 60;定義

long l3 = paramLong - l1 * i - l2 * 60;定義

String str1;聲明字符串

label64: String str2;label是監(jiān)聽

if (l1 10L)如果l1小于10

{

str1 = "0" + l1;字符串拼接

if (l2 = 10L)如果l2大于等于10

break label175;結(jié)束監(jiān)聽

str2 = "0" + l2;字符串拼接

label92: if (l3 = 10L)監(jiān)聽如果l3大于等于10

break label195;結(jié)束監(jiān)聽

}

for (String str3 = "0" + l3; ; str3 = l3)for循環(huán),

{

return str1 + ":" + str2 + ":" + str3;

str1 = l1;

break label64:

label175: str2 = l2;

label195: break label92:

}

}

主要研究一下監(jiān)聽是怎么用的吧


分享名稱:逆向java代碼還原 逆序java代碼
網(wǎng)址分享:http://weahome.cn/article/ddsoege.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部