① 怎麼反編譯class
安裝java jdk後
看安裝目錄里有沒有jad.exe,沒有要下載,一般都有的
配置Java環境變數
開始-運行-cmd-回車-進入命令行窗口:
cd+空格+class文件所在路徑:
按下面的命令進行反編譯:
例如:[2] jad -sjava example.class 回車
在目錄里可以看到example.java源文件
[1] 反編譯一個class文件:jad example.class,會生成example.jad,用文本編輯器打開就是java源代碼
[2] 指定生成源代碼的後綴名:jad -sjava example.class,生成example.java
[3] 改變生成的源代碼的名稱,可以先使用-p將反編譯後的源代碼輸出到控制台窗口,然後使用重定向,輸出到文件:jad -p example.class > myexample.java
[4] 把源代碼文件輸出到指定的目錄:jad -dnewdir -sjava example.class,在newdir目錄下生成example.java
[5] 把packages目錄下的class文件全部反編譯:jad -sjava packages/*.class
[6] 把packages目錄以及子目錄下的文件全部反編譯:jad -sjava packages/**/*.class,不過你仍然會發現所有的源代碼文件被放到了同一個文件中,沒有按照class文件的包路徑建立起路徑
[7] 把packages目錄以及子目錄下的文件全部反編譯並建立和java包一致的文件夾路徑,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 當重復使用命令反編譯時,Jad會提示「whether you want to overwrite it or not」,使用-o可以強制覆蓋舊文件
[9] 還有其他的參數可以設置生成的源代碼的格式,可以輸入jad命令查看幫助,這里有個人做了簡單的翻譯:jad命令總結
[10] 當然,你會發現有些源文件頭部有些注釋信息,不用找了,jad沒有參數可以去掉它,用別的辦法吧。
② 安卓系統APK反編譯的問題——設置里添加新選項
我想問如何在一個已經編譯的軟體里添加新的事件(不是res)(不是我寫的軟體,沒有源碼)
我想你這個情況,應該換上原來的簽名試試,我反編譯改的都是res,不懂添加新的事件,只改res,就必須用原來的簽名,
③ APK反編譯怎麼添加新的界面
1,下列com.htc.resources.apk和框架res.apk(每個不同的系統在原則上提取一次您的系統\框架的抽取系統,注意兩個文件反編譯或編譯可能會失敗);
2,前兩名放置在C盤根目錄下,無論你把這個,只要在命令中輸入相同的路徑即可; 3,打開cmd或者command提示,即DOS窗口;
④ 如何:使用「反匯編」窗口
默認情況下隱藏只有在「選項」對話框中的「調試」節點下啟用了地址級調試後,該功能才可用。
但對於腳本或
SQL
調試是不可用的。
「
反匯編
」窗口顯示與
編譯器
所創建的指令對應的匯編代碼。
如果正在調試
託管代碼
,則這些
匯編指令
對應於由實時
(JIT)
編譯器創建的本機代碼,而不是由
Visual
Studio
編譯器生成的
Microsoft
中間語言
(MSIL)。
除匯編指令外,
「反匯編」窗口還可顯示如下可選信息:
每條指令所在的
內存地址
對於本機應用程序,這是實際內存地址。
對於
Visual
Basic、C#
或託管代碼,這是距離函數開頭的偏移量。
程序集
代碼派生於的源代碼。
代碼位元組
—
實際計算機或
MSIL
指令的位元組表示形式。
內存地址的符號名。
對應於源代碼的行號。
匯編語言指令由
助記符
(指令名稱的縮寫)和代表變數、寄存器以及常量的符號所組成。
每一條
機器語言
指令由一個匯編語言助記符代表,通常其後還跟有一個或多個變數、寄存器或常量。
如果您無法閱讀匯編語言但又想充分利用「反匯編」窗口,請參考有關匯編語言編程的好書。
匯編語言編程超出了我們對「反匯編」窗口進行簡單介紹的討論范圍。
匯編語言代碼在很大程度上依賴處理器的寄存器(對託管代碼而言,依賴公共語言運行時寄存器),您將發現協同使用「反匯編」窗口和「寄存器」窗口將很有用,可以允許您檢查寄存器內容。
您很可能願意使用匯編語言,而從來不會願意或需要查看原始的、數字形式的
機器代碼
指令。
不過,如果願意的話,可以利用「內存」窗口或從「反匯編」窗口的
快捷菜單
中選取「代碼位元組」來查看。
注意顯示的對話框和菜單命令可能會與「幫助」中的描述不同,具體取決於您現用的設置或版本。
若要更改設置,請在「工具」菜單上選擇「導入和導出設置」。
有關更多信息,請參見使用設置。
⑤ VS2010 的反匯編窗口在哪而不是列出匯編!
調試的時候,點擊菜單調試,點擊窗口選項,右側彈出一系列,倒數第二個,反匯編
⑥ myeclipse怎麼安裝反編譯
方法/步驟
下載jadClipse反編譯插件,然後將net.sf.jadclipse_3.3.0.jar拷貝到eclipse的plugins目錄下
其次要刪除configuration目錄下org.eclipse.update文件,重新啟動eclipse;
重啟後要設置jad的可執行文件路徑以及生成的臨時文件路徑,如圖所示:
⑦ keil調試的時候出現反編譯窗口怎麼關閉了顯示代碼窗口
如果你只適應源碼級調試,那麼可以通過 View >> Disassembly 關閉反匯編窗口。
不過不看反匯編窗口的話,很多底層運行情況是看不明白的,尤其是有庫調用的時候。而且通過查看匯編可以檢查編譯結果是否理想、編譯器有沒有曲解你的意願。
⑧ 如何將java中的.class文件反編譯
安裝Java jdk後
看安裝目錄里有沒有jad.exe,沒有要下載,一般都有的
配置Java環境變數
開始-運行-cmd-回車-進入命令行窗口:
cd+空格+class文件所在路徑:
按下面的命令進行反編譯:
例如:[2] jad -sjava example.class 回車
在目錄里可以看到example.java源文件
[1] 反編譯一個class文件:jad example.class,會生成example.jad,用文本編輯器打開就是java源代碼
[2] 指定生成源代碼的後綴名:jad -sjava example.class,生成example.java
[3] 改變生成的源代碼的名稱,可以先使用-p將反編譯後的源代碼輸出到控制台窗口,然後使用重定向,輸出到文件:jad -p example.class > myexample.java
[4] 把源代碼文件輸出到指定的目錄:jad -dnewdir -sjava example.class,在newdir目錄下生成example.java
[5] 把packages目錄下的class文件全部反編譯:jad -sjava packages/*.class
[6] 把packages目錄以及子目錄下的文件全部反編譯:jad -sjava packages/**/*.class,不過你仍然會發現所有的源代碼文件被放到了同一個文件中,沒有按照class文件的包路徑建立起路徑
[7] 把packages目錄以及子目錄下的文件全部反編譯並建立和java包一致的文件夾路徑,可以使用-r命令:jad -r -sjava packages/**/*.class
[8] 當重復使用命令反編譯時,Jad會提示「whether you want to overwrite it or not」,使用-o可以強制覆蓋舊文件
[9] 還有其他的參數可以設置生成的源代碼的格式,可以輸入jad命令查看幫助,這里有個人做了簡單的翻譯:jad命令總結
[10] 當然,你會發現有些源文件頭部有些注釋信息,不用找了,jad沒有參數可以去掉它,用別的辦法吧。
⑨ .net網頁發布後進行反編譯
.Net有兩個很好的工具可以反編譯.NET程序集:Salamander .Net Decomplier和Reflector.Net ,Salamander .Net Decomplier功能非常強大,可以反編譯混淆過的.NE代碼,也可以直接將程序集中的類反編譯成一個文件,但是它是需要money的,試用版提供的功能又非常有限。相對而言呢,Reflector.net 是完全免費的,但是它只能一個方法一個方法的查看,不能將程序集直接反編譯成一個文件,這樣也比較麻煩,好就好在它支持插件add-in功能。針對它的缺點,很多人開發了很好用的插件,可以將整個程序集的代碼反編譯成源文件,比如說Reflector.FileDisassembler 、Reflector.FileGenerator 都是很好用的。
另外再提供一些Reflector的相關插件下載,enjoy!!!!
插件FileGenerator 使用方法:
最開始下載了FileGenerator插件不知如何使用,後來經過摸索,還是學會使用了,所以拿來和大家分享。
FileGenerator插件的作用是:根據dll文件,把裡面的源文件導出成文件,導出來的文件除了沒有注釋,變數名也變了,其它的可謂是沒有 差別。對於一些比較好的控制項,如果不是開源的,完全可以導出成文件,然後自己加上注釋,少許修改,很好的利用起來。(不開源的dll,用起來也不放心啊)
先根據上面的地址下載FileGenerator並解壓縮,然後運行Reflector.exe,然後點擊View->Add- Ins...,彈出一個窗口,然後點擊Add->選擇FileGenerator裡面的唯一一個dll文件: "FileGenerator.dll",點擊close.
然後回到Reflector窗口,Tool->Generator File(s)... 右邊就出現了插件的窗口,選中左邊的dll文件,點擊右邊的導出文件,源代碼就全部導出來了,真是爽啊!
使用.NET Reflector插件FileDisassembler還原源碼
.NET Reflector,它是一個類瀏覽器和反編譯器,可以分析程序集並向您展示它的所有秘密。.NET 框架向全世界引入了可用來分析任何基於 .NET 的代碼(無論它是單個類還是完整的程序集)的反射概念。反射還可以用來檢索有關特定程序集中包含的各種類、方法和屬性的信息。使用 .NET Reflector,您可以瀏覽程序集的類和方法,可以分析由這些類和方法生成的 Microsoft 中間語言 (MSIL),並且可以反編譯這些類和方法並查看 C# 或 Visual Basic ?.NET 中的等價類和方法。
為了演示 .NET Reflector 的工作方式,我將載入和分析前面已經顯示的 NUnitExample 程序集。下圖顯示了 .NET Reflector 中載入的該程序集。
在 .NET Reflector 內部,有各種可用來進一步分析該程序集的工具。要查看構成某個方法的 MSIL,請單擊該方法並從菜單中選擇 Disassembler。
除了能夠查看 MSIL 以外,您還可以通過選擇 Tools 菜單下的 Decompiler 來查看該方法的 C# 形式。通過在 Languages 菜單下更改您的選擇,您還可以查看該方法被反編譯到 Visual Basic .NET 或 Delphi 以後的形式。以下為 .NET Reflector 生成的代碼:
public void HashtableAddTest(){
Hashtable hashtable1;
hashtable1 = new Hashtable();
hashtable1.Add("Key1", "value1");
hashtable1.Add("Key2", "value2");
Assert.AreEqual("value1", hashtable1["Key1"], "Wrong object returned!");
Assert.AreEqual("value2", hashtable1["Key2"], "Wrong object returned!");
}
前面的代碼看起來非常像我為該方法實際編寫的代碼。以下為該程序集中的實際代碼:
public void HashtableAddTest(){
Hashtable ht = new Hashtable();
ht.Add("Key1", "value1");
ht.Add("Key2", "value2");
Assert.AreEqual("value1", ht["Key1"], "Wrong object returned!");
Assert.AreEqual("value2", ht["Key2"], "Wrong object returned!");
}
盡管上述代碼中存在一些小的差異,但它們在功能上是完全相同的。
雖然該示例是一種顯示實際代碼與反編譯代碼之間對比的好方法,但在我看來,它並不代表 .NET Reflector 所具有的最佳用途 — 分析 .NET 框架程序集和方法。.NET 框架提供了許多執行類似操作的不同方法。例如,如果您需要從 XML 中讀取一組數據,則存在多種使用 XmlDocument、XPathNavigator 或 XmlReader 完成該工作的不同方法。通過使用 .NET Reflector,您可以查看 Microsoft 在編寫數據集的 ReadXml 方法時使用了什麼,或者查看他們在從配置文件讀取數據時做了哪些工作。.NET Reflector 還是一個了解以下最佳實施策略的優秀方法:創建諸如 HttpHandlers 或配置處理程序之類的對象,因為您可以了解到 Microsoft 工作組實際上是如何在框架中生成這些對象的。
.NET Reflector 由 Lutz Roeder 編寫