python反編譯 javap和java反編譯有何區(qū)別?
javap和java反編譯有何區(qū)別?通過(guò)javap反編譯只是為了得到匯編指令。反編譯后有很多特殊的信息,比如字符會(huì)變成字符串緩沖區(qū).append(),總之,處理后的代碼是不能完全改變的。反編譯是什么意
javap和java反編譯有何區(qū)別?
通過(guò)javap反編譯只是為了得到匯編指令。反編譯后有很多特殊的信息,比如字符會(huì)變成字符串緩沖區(qū).append(),總之,處理后的代碼是不能完全改變的。
反編譯是什么意思?
反編譯與編譯相反。例如,如果一個(gè)程序是用C語(yǔ)言編寫(xiě)的,它將被編譯成可以被CPU識(shí)別和運(yùn)行的機(jī)器代碼,即生成一個(gè)EXE程序。反編譯是逆向的,將exe反編譯成編程源代碼,即C程序。然而,大多數(shù)反編譯都是從機(jī)器代碼反編譯到匯編代碼。其他語(yǔ)言也是如此。至于如何使用它,這取決于你的目的。但一般來(lái)說(shuō),反編譯主要用于分析沒(méi)有源代碼的程序,比如破解別人的軟件。
jar是否都能被輕易的反編譯?
類(lèi)文件可以反編譯,有很多現(xiàn)成的工具,如:jdgui等。
任何程序都可以反編譯嗎?為什么有一些程序不可以反編譯?
可以說(shuō),大多數(shù)程序都無(wú)法反編譯,因?yàn)樵S多不同高級(jí)語(yǔ)言的程序代碼可以生成相同的機(jī)器代碼。所謂不同的方法導(dǎo)致相同的目標(biāo)。不管代碼看起來(lái)有多不同,編譯后生成的機(jī)器代碼可能完全相同。
這會(huì)導(dǎo)致問(wèn)題。如果反編譯(事實(shí)上,反轉(zhuǎn)上述過(guò)程),應(yīng)該轉(zhuǎn)換成什么樣的源代碼?如果這行代碼和其他代碼之間存在因果關(guān)系,那么問(wèn)題就更復(fù)雜了。到目前為止,沒(méi)有反編譯器軟件能夠?qū)⒕幾g后的可執(zhí)行文件完美地反編譯成源代碼。它最多可以反編譯成一些代碼片段,而這些片段不能被重新編譯成可執(zhí)行文件。