Ⅰ 為何C和C++編寫生成的可執行程序不可反編譯回源程序
因為不同的源程序經過編譯可能得到相同的可執行程序,因此如果反向操作就存在二義性了
Ⅱ 安裝jadClipse插件後,還是不能反編譯.class:
完整步驟如下:
1.下載jad.exe(Jad v1.5.8g版本)和net.sf.jadclipse_3.3.0.jar;
2.將jad.exe放進\java\jdk1.7.0\jre\bin目錄底 下,如果你的環境變數設置的沒有問題,那麼在DOS環境下敲入cmd->jad,你會發現jad命令已經可以使用了,但是要與 MyEclipse6.5結合使用,請看下一步;
3.將net.sf.jadclipse_3.3.0.jar放到下面的目錄下 D:\MyEclipse 6.5\eclipse\plugins;
4.重新啟動MyEclipse6.5,進入 Preferences->Java->JadClipse,設置(1)Path to decompiler路徑為Jad.exe的全路徑,例如:C:\Program Files (x86)\Java\jdk1.6.0_07\jre\bin\jad.exe設置(2)在Directory for temporary files中指定臨時文件的路徑 如:C:\Program Files (x86)\MyEclipse 6.5\myeclipse\temp(如果沒有temp文件夾,自己創建一個空的取名為temp就行)點擊Apply->OK;
5.Window->Preferences->General->Editors->File Associations,將.class文件默認成通過JadClipse Class File Viewer打開。
Ⅲ 反編譯java核心類 能不能反編譯java核心類,比如java.lang.String,再編寫自己的代碼放到裡面去
我估計你是想重編譯String.class文件並覆蓋吧,這個目前行不通,據說像HotSpot這種商業JVM內部都存有一張關於核心類庫的裝載信息表專供根載入器使用,這個表內容是以通過硬寫在JVM底層C\C++程序中的方式存在的,在裝載核心類庫的.Jar文件時不僅要比對其中.class文件的有效性,還要比較.Jar文件的SHA1哈希值與裝載信息表中的記錄是否一致!(或許哈希弱無碰撞演算法出現時會有希望,呵呵)同時JVM會運行各種安全沙箱機制(比如裝載約束、訪問許可權等等)來保護運行環境的安全性,所以除非重編譯JVM否則目前沒有什麼好方法。
Ⅳ C++程序可以被反編譯嗎
c/c++程序是不能被反編譯的,除非是debug版本(包含各種標識符及調試信息),release版本沒有任何有關源碼的信息,是不能被反編譯的
Ⅳ MD5碼是不可逆的,但是他的加密演算法是公開的,為什麼不能反向編譯呢
在MD5裡面一些演算法是在理論上可以反向但實際中是很難反向實現的!