當前位置:首頁 » 編程軟體 » 手機jdk反編譯

手機jdk反編譯

發布時間: 2023-03-28 07:48:07

java編譯

如今JAVA語言在全世界范圍正如火如荼般的流行,它廣范地應用在INTERNET的資料庫、多媒體、CGI、及動態網頁的製作方面。1999年在美國對JAVA程序員的需求量首次超過C++!

作者因最近分析一些JAVA程序,對JAVA的反編譯進行了一番了解,下面將我所了解的情況作以下介紹,希望對JAVA愛好者有所幫助。

JAVA是採用一種稱做「位元組編碼」的程序結構,分為小程序(嵌入到HTML文件中)和應用程序(直接在命令狀態下執行)兩種類型。無論哪種結構,一旦用JAVAC 命令編譯後,均變成後綴為CLASS的同名可執行文件。這種文件是不可閱讀的代碼。

經查閱了SUN公司的JDK(JDK1.1.3)文檔資料後,我找到了一個據稱是可反編譯JAVA的JAVAP文件(EXE),這個文件位於\JDK\BIN\ 下面,經按說明使用後,感到失望,原來這個「反編譯」僅可反編譯出JAVA程序的數據區(定義)、若干方法和類的引用等。

這里我用了一個簡單例子來說明問題。

JAVA的源程序hello_java.java如下:

import java.applet.*;
import java.awt.*;
public class hello_java extends Applet
{
public void paint(Graphics g)
{
g.drawString("Hello Java!\n",20,20);
}
}

經用反編譯命令:javap -c -package -public -private hello_java hello.java

得到的反編譯結果(hello.java)如下:(有關javap命令的選擇參數請見其使用說明,這里-c表示選擇了反編譯)

Compiled from hello_java.java
public synchronized class hello_java extends java.applet.Applet
/* ACC_SUPER bit set */
{
public void paint(java.awt.Graphics);
public hello_java();
Method void paint(java.awt.Graphics)
0 aload_1
1 ldc #1
3 bipush 20
5 bipush 20
7 invokevirtual #6
10 return
Method hello_java()
0 aload_0
1 invokespecial #5 ()V>
4 return
}

㈡ jad反編譯工具怎麼用

下好以後解壓就可以用了,軟體就只有一個exe文件和一個幫助文件,為了方便使用,我直接將exe文件放到JDK的bin目錄里了:)
下面先來看看從網上搜集來的介紹:在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front
End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java
Decompiler、NMI』s Java Class Viewer和國產的JAVA源代碼反編譯專家。
JAD本身是一個命令行工具,沒有圖形界面,上述的這些工具大多是在JAD內核的基礎之上加了一個圖形界面而已。這么多種產品的共同選擇,足可證明JAD
在JAVA反編譯領域中的尊貴地位。 JAD是使用Microsoft Visual
C++開發的,運行速度非常快,可以處理很復雜的JAVA編譯文件。眾多的參數使JAD可以靈活應付多種加密手段,令反編譯的代碼更加優化和易讀。由於
JAD參數太多,沒必要一一解釋,其中有幾個最常用的如下:

-d - 用於指定輸出文件的目錄

-s - 輸出文件擴展名(默認為: .jad),通常都會把輸出文件擴展名直接指定為.java,以方便修改的重新編譯。

-8 - 將Unicode字元轉換為ANSI字元串,如果輸出字元串是中文的話一定要加上這個參數才能正確顯示。
最常用的反編譯指令如下所示:

Jad -d c:\test -s .java -8 HelloWorld.class

這將當前目錄下的HelloWorld.class反編譯為HelloWorld.java並保存在c:\test目錄里,其中的提示輸出為中文,
而不是Unicode代碼。
附件:對下載後的說明文檔的簡單翻譯,希望對你有所幫助(mathsfan修改於2006.10.29,翻譯的不好請見諒)0、1略去2、怎樣使用JAD
反編譯一個簡單的java class文件'example1.class'用如下命令: jad example1.class
這個命令將在當前目錄下創建一個'example1.jad'文件,假如當前目錄下存在這個文件,則JAD會提示你覆蓋它與否。選項
-o 允許覆蓋時沒有任何提示。選項 -s 允許改變輸出文件的後綴名: jad -sjava example1.class
這個命令將要創建'example1.java'文件。在一起使用-o 和
-sjava選項時請小心,因為JAD會附帶的重寫你的源文件。JAD使用JAVA
class的名字作為輸出文件的名字。例如,假如class文件'example1.class'包含JAVA class
'test1'那麼JAD將會創建文件'test1.jad'而不是'example1.jad'。假如你想具體指明你的輸出文件的名字使用輸出重命名:

jad -p example1.class > myexm1.java

選項 –d允許你具體指明另外的輸出文件目錄,不管這個目錄是新建的、默認的或者當前目錄。例如:

jad -o -dtest -sjava *.class

(或者 jad -o -d test -s java *.class, 這個有同樣的效果)

這個命令將在當前目錄下反編譯所有的.class文件並在'test'文件夾下建立所有擴展名為.java的輸出文件。

假如你想反編譯整個目錄樹下的JAVA classes,使用如下命令:

jad -o -r -sjava -dsrc tree/**/*.class

這個命令將反編譯當前目錄樹里所有的.class文件並且在當前目錄下建立src文件夾後根據包的名字來輸出文件。例如,假如有一個文件
'tree/a/b/c.class'在包'a.b'下包含了class 'c',那麼輸出文件的名字為'src/a/b/c.java'。

在先前的命令上將通配符那裡注釋掉。則它是用JAD來處理而不是command殼,所以在UNIX上的最後一次參數將會被單獨引用。

jad -o -r -sjava -dsrc 'tree/**/*.class'

你想檢查編譯後的文件的正確性或者出於好奇的情況下,這里有一個選項 –a 將會告訴JAD給輸出的JAVA虛擬位元組碼註解。

㈢ 手機上怎麼把apk反編譯成AIDE可用源碼

安裝android插件 - 安裝SDK 環境 - 肯定要有JDK 環境 將插件導入 到 Eclipse 然後再做樓上方式的導入工作空間 、 謝謝 回答完畢

㈣ 如何在myexilpse8.5設置反編譯

Jad是一個Java的一個反編譯工具,是用命令行執行,和通常JDK自帶的java,javac命令是一樣的。不過因為是控制台運行,所以用起來不太方便。不過幸好有一個eclipse的插件JadClipse,二者結合可以方便的在eclipse中查看class文件的源代碼。
介紹一下如何配置:
方法/步驟
1. 下載JadClipse,注意選擇與eclipse版本一致的版本
2. 下載Jad,下載相應版本
3. 將下載下來的Jadclipse,如net.sf.jadclipse_3.3.0.jar拷貝到Eclipse下的plugins目錄即可。
4. 將Jad.exe拷貝到JDK安裝目錄下的bin文件下(方便,與java,javac等常用命令放在一起,可以直接在控制台使用jad命令)
5. 然後,重新啟動Eclipse,找到Eclipse->Window->Preferences->Java,此時你會發現會比原來多了一個JadClipse的選項,單擊,在Path to decompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄,如圖所示。當然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認配置即可。
6. 基本配置完畢後,我們可以查看一下class文件的默認打開方式,Eclipse->Window->Preferences->General->Editors->File Associations,我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的Class File Viewer,而JadClipse是默認的。
7. 全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼

㈤ 有哪些防止反編譯 Java 類庫 jar 文件的辦法

反編譯工具(如手做jdk帶的javap、或jad)將TestSimplePlus反賀薯友編譯成Java Byte Cod,命令如下:jad -o -a -s d.java TestSimplePlus.classjavap -c DocFooter >禪槐 F://test.txt再上傳個反編譯的神器(批量編譯)

㈥ apk怎麼反編譯換圖標比較簡單的方法

一、准備工作
1、下載安裝java jdk
2、配置java環境
3、下載apktools反編譯工具包
二、具體操作
1、將下載來的apktools工具包解壓至c:\目錄下,然後將需要反編譯(修改)的apk文件放入解壓文件夾內。今天就用一鍵鎖屏來做試驗吧。

2、打開一鍵apktools.exe工具,因為不是系統文件所以就直接反編譯,不需要安裝環境!選擇2,然後選擇文件名。這里我們是lockscreen.apk所以我們選2!

3、等待解壓完成,我們在lockscreen文件夾內的res目錄里去修改 程序名稱和程序圖標。程序名稱的文件路徑為 lockscreen\res\values-zh-rCN\strings.xml 我們使用記事本打開 找到app_name 在 兩個>< 修改自己需要顯示的程序名稱,我們就把 一鍵鎖屏改為 鎖屏,修改好以後保存即可~

4、然後在 lockscreen\res\drawable-hdpi 文件夾內替換圖標。先找到現在的程圖標,因為一鍵鎖屏很簡單,所以只有一個圖標。我們記下圖標的名字 lock.png 然後刪除它,將我們准備好的圖標放入目錄下,改名為剛才的名字 lock.png。

5、然後返回到apktools解壓文件夾,編譯後的文件在 回編apk生成目錄 下,我們將其簽名,然後安裝即可。

㈦ 如何將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沒有參數可以去掉它,用別的辦法吧。

㈧ JAVA的環境變數java_home,PATH, CLASSPATH,按要求設置了,apk反編譯時但還是不行,求解決

  1. 確定都是32bit或者都是64bit。

  2. 使用javac -version來確定java版本。

  3. 刪除之前的JDK之後需要刪除相關的環境變數喊讓。

  4. 這個軟體我沒有過,可能是固有漏洞或兄瞎者需要修改其配置文件。羨滲空

㈨ android apk 反編譯需要什麼環境

有jdk環境就可以然後下載一個 ApkDec-Release-0.1 一鍵android反編譯工具、快速反編譯試試吧、記得給分哦

㈩ 求教JDK中的反編譯命令

用習慣了著名的反編譯工具jad的話,如果有的時候單給出class文件,要快速看這個class文件

的JDK版本號等,其實不用工具,也可以用JDK自帶的javap命令進行反編譯輸出,下面小結

其用法:


1,javap -verbose 類名

得到的信息如下:


Compiled from "Test.java"

public class Test extends java.lang.Object

SourceFile: "Test.java"

minor version: 0

major version: 50

Constant pool:

......


可以看出jdk的版本,這個用在判斷某些CLASS的版本是否兼容的時候很有用.


2 最常見的不帶參數的情況:javap 類名


比如某個類:

Java代碼

packagetest;

publicclassTest{

intnumber=5;

publicvoidsayHello(){
System.out.println("Hello");
}
}


則:

C: empjavaptest>javap Test

Compiled from "Test.java"

public class test.Test extends java.lang.Object{

int number;

public test.Test();

public void sayHello();

}


帶參數-c:

則可以看到位元組碼了:


Java代碼

C:	empjavaptest>javap-cTest
Compiledfrom"Test.java"
publicclasstest.Testextendsjava.lang.Object{
intnumber;

publictest.Test();
Code:
0:aload_0
1:invokespecial#1;//Methodjava/lang/Object."<init>":()V
4:aload_0
5:iconst_5
6:putfield#2;//Fieldnumber:I
9:return

publicvoidsayHello();
Code:
0:getstatic#3;//Fieldjava/lang/System.out:Ljava/io/PrintStream;
3:ldc#4;//StringHello
5:invokevirtual#5;//Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
8:return

}


帶參數-l: 將顯示行號和局部變數表


-public 只顯示 public 類及成員。

-protected 只顯示 protected 和 public 類及成員。

-package 只顯示包、protected 和 public 類及成員。這是預設設置。

-private 顯示所有類和成員。

熱點內容
光遇腳本輔助下載免費ios 發布:2024-04-19 15:22:11 瀏覽:241
表格VB腳本 發布:2024-04-19 15:13:07 瀏覽:778
python生成器表達式 發布:2024-04-19 15:12:10 瀏覽:745
獲取文件夾文件名 發布:2024-04-19 14:45:51 瀏覽:247
嗶咔本地緩存怎麼看 發布:2024-04-19 14:36:00 瀏覽:105
linux的alarm 發布:2024-04-19 14:26:22 瀏覽:333
松江麻將源碼 發布:2024-04-19 14:06:06 瀏覽:958
明日之後怎麼實名認證安卓 發布:2024-04-19 13:35:55 瀏覽:936
數據加密解密演算法 發布:2024-04-19 13:25:52 瀏覽:945
安卓平板存儲空間不知道用在哪裡 發布:2024-04-19 12:58:57 瀏覽:765