當前位置:首頁 » 編程軟體 » java反編譯api

java反編譯api

發布時間: 2023-01-10 09:02:07

A. 安卓應用的程序部分僅僅包含在APK根目錄的classes.dex文件裡面嗎

1).AndroidManifest.xml
該文件是每個應用都必須定義和包含的,它描述了應用的名字、版本、許可權、引用的庫文件等等信息,如要把apk上傳到Google
Market上,也要對這個xml做一些配置。在apk中的AndroidManifest.xml是經過壓縮的,可以通過AXMLPrinter2工具解開,具體命令為:java
-jar AXMLPrinter2.jar AndroidManifest.xml
目錄
assets目錄可以存放一些配置文件,這些文件的內容在程序運行過程中可以通過相關的API獲得。具體的方法可以參考SDK中的例子:在sdk的
\SDK\1.6\android-sdk-windows-1.6_r1\platforms\android-1.6\samples\ApiDemos
例子中,有個com.example..android.apis.content
的例子,在這個例子中他把一個text文件放到工程的asset目錄下,然後把這個txt當作普通文件處理。處理的過程在ReadAsset.java
中。同理,asset也可以放置其他文件。
(6).classes.dex文件
classes.dex是java源碼編譯後生成的java位元組碼文件。但由於Android使用的dalvik虛擬機與標準的java虛擬機是不兼容的,dex文件與class文件相比,不論是文件結構還是opcode都不一樣。目前常見的java反編譯工具都不能處理dex文件。Android模擬器中提供了一個dex文件的反編譯工具,dexmp。用法為首先啟動Android模擬器,把要查看的dex文件用adb
push上傳的模擬器中,然後通過adb shell登錄,找到要查看的dex文件,執行dexmp

xxx.dex。另,有人介紹到Dedexer是目前在網上能找到的唯一一個反編譯dex文件的開源工具,需要自己編譯源代碼。classes.dex文件是Java源碼編譯後的代碼文件。通常該文件里都有單詞、語句需要漢化。

B. 如何進行ODEX反編譯實例

0x00 前言

使用開源工具出現問題而且很難在網上查找到解決方案的時候,最好的解決方法就是研究它的源碼,因為那樣能為我們提供更多的信息。

0x01 搭建smali/baksmali源碼調試環境

首先我們在github上拉取smali/baksmali的源碼

git clone https://github.com/JesusFreke/smali.git

可以看出該項目採用了grade自動化構建工具來編譯源碼的,因此我們可以在android studio中導入該項目,如下圖所示:

生成的baksmali在如下目錄下面:

上圖中的Program arguments中,-a選項代表api level,可以通過如下屬性獲得:

報錯如下:

Error occurred while disassembling classLandroid.support.v4.util.TimeUtils; - skipping class

java.lang.RuntimeException: Invalid methodindex: 32

atorg.jf.dexlib2.analysis.InlineMethodResolver$InlineMethodResolver_version36.resolveExecuteInline(InlineMethodResolver.java:175)

atorg.jf.dexlib2.analysis.MethodAnalyzer.analyzeExecuteInline(MethodAnalyzer.java:1512)

atorg.jf.dexlib2.analysis.MethodAnalyzer.analyzeInstruction(MethodAnalyzer.java:982)

atorg.jf.dexlib2.analysis.MethodAnalyzer.analyze(MethodAnalyzer.java:205)

atorg.jf.dexlib2.analysis.MethodAnalyzer.<init>(MethodAnalyzer.java:140)

atorg.jf.baksmali.Adaptors.MethodDefinition.(MethodDefinition.java:463)

atorg.jf.baksmali.Adaptors.MethodDefinition.getMethodItems(MethodDefinition.java:371)

atorg.jf.baksmali.Adaptors.MethodDefinition.writeTo(MethodDefinition.java:238)

atorg.jf.baksmali.Adaptors.ClassDefinition.writeDirectMethods(ClassDefinition.java:282)

atorg.jf.baksmali.Adaptors.ClassDefinition.writeTo(ClassDefinition.java:112)

atorg.jf.baksmali.baksmali.disassembleClass(baksmali.java:225)

atorg.jf.baksmali.baksmali.access$000(baksmali.java:55)

atorg.jf.baksmali.baksmali$1.call(baksmali.java:149)

atorg.jf.baksmali.baksmali$1.call(baksmali.java:147)

atjava.util.concurrent.FutureTask.run(FutureTask.java:266)

atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

atjava.lang.Thread.run(Thread.java:745)

我們直接鎖定出錯的地方,在上面出錯信息標紅色的地方,並且在拋出異常處下斷點,我們可以判斷出錯原因是因為反編譯smali指令execute-line時傳入了一個未知的Dalvik虛擬機的內部java方法索引inlineIndex=32:

然後,我們把inline.txt作為-T選項的參數傳遞進去:

完美反編譯。
http://www.mengzhe.com/Androidkaifa/3129.html

C. java相關!我想要把別人的jar軟體中的1個.class用Xjad反編譯出來,修改裡面的文字,再編譯放回去怎麼弄

用winRar解壓縮文件方式打開你原來反編譯的jar,把你編譯好的某個.class文件放入就行。

D. 用JD-eclipse反編譯出現 throw new RuntimeException("Stub!")

An interesting note on Android SDK is that the code in android.jar is stubbed out. This because the code inside the jar is never runs, so there』s no reason to make the SDK bigger because of this. To better undersand, if you look at these classes using a decompiler (with jad for example) you will only see: public void something(…){ throw new RuntimeException(「Stub!」); }. This means that you use android.jar only for the purpose of compiling the code, use autocomplete and imports in Eclipse.
Moreover, android.jar contains only the APIs exposed for the level of applications development. It』s a promise from Google that if you compile your application using this jar, you are guaranteed your application will run in future versions of Android. There is a part of the compilation process in the Android system that removes methods and classes of API. It』s used internally by the framework and should not be used for an Android developer. Why does Google do it? Well, I believe it』s because Google needs to write too much code to get API exposed. A lot of code starting in the hardware until to get a high-level API, which can be changed from one version to another, even codes that may no longer exist in future versions.

E. JAVAEE 5 API 中文文檔

Java jdk1.6.0.02虛擬機

Java Development Kit(JDK) v1.5

JAVA JDK1.50的中文簡體API文檔

JAVA中文幫助文檔jdk1.5

Java JDK5.0學習筆記(PDF)

Java SE Development Kit (JDK) for Windows 7 Build b26

Java Development Kit(JDK) v1.4.2

Java EE SDK 5 Update 5 (with JDK 6u6)-windows

jdk-6u6-windows-i586-p(JDK 1.6.0 u6 多國語言版)

Java開發工具包 JDK 1.5.02

JDK6API中文參考CHM

JDK 6.0 For Linux

jdk1.6中文幫助文檔

jdk-1_5_0_14-windows-i586-p.exe(54278424 bytes)

jdk-1_5_0_15-windows-i586-p

jdk-7-ea-bin-b23-windows-i586-30_oct

Java SE Runtime Environment (JRE) 6 Update 5

Sun Java Runtime Environment V1.4.2.12

java虛擬機

Java 2 SDK 1.4.2.08

Java 2 Runtime Environment v5.0

JAVA通用模擬器MidpX

Java 2 Platform Standard Edition 5.0 Update 8

Sun Java SE Runtime Environment 6.0 Update 10

JAVA 反編譯器-基於jad內核的Frontend 2.0 plus(cracked)

Java SE Runtime Environment (JRE) 6 Update 5

Java 2 SDK Standard Edition 1.4.2

手機java電子書閱讀器

JAVA 2 1.4.2 編程工具

JAVA控制項

Java V6 Update 5 for XP & Vista

Java電子圖書製作工具

JAVA模擬器 DMIDP2 完美版

==============================

下載地址:
參考資料:
你看看這個地址行不,行的話記得給分,我也是查出來的,你看看可以不

F. 請問一下,我吧一個java軟體反編譯了,我應該怎麼去了解這個軟體的運行流程和類與類間的關系

你可以藉助一些工具輔助你去分析和了解這些類的關系,比如用eclipse 就可以。

G. java加密

可以的,但是對jar包直接加密,目前只支持J2SE,還不支持J2EE。更多的還是用混編器(java obfuscator)。下面是關於HASP的介紹。

-----------------------------------------------------
針對java加密防止反編譯的解決方案

眾所周知,java開發語言提供了很方便的開發平台,開發出來的程序很容易在不同的平台上被移植,現在越來越多的人使用它來開發軟體,與.net語言並駕齊驅。

Java有它方便的一面,同時也給開發者帶來了一個不小的煩惱,就是保護程序代碼變得困難,因為java語言編譯和代碼執行的特殊性,目前,除了HASP外,還沒有一個更好的解決辦法或保護方案,但如果不採取有力的措施,則自己辛辛苦苦開發出來的程序很容易被人復制而據為己有,一般情況下,大多數的人都是用混編器(java obfuscator)來把開發出來的程序進行打亂,以想達到防止反編譯的目的,但是,這種方法在網上很容易找到相關的軟體來重新整理,那麼這個混編器工具也只能控制一些本來就沒有辦法的人,而對於稍懂工具的人幾乎是透明的,沒有任何意義。再說硬體加密鎖,大多數廠商提供的加密鎖只能進行dll的連接或簡單的api調用,只要簡單地反編譯,就很容易把api去掉,這樣加密鎖根本起不了作用,那到底是否還有更好的解決辦法呢?

現提供2種解決辦法:

1、以色列阿拉丁公司的HASP HL加密鎖提供的外殼加密工具中,有一個叫做數據加密的功能,這個功能可以很好的防止反編譯而去掉api的調用,大家知道:硬體加密鎖的保護原理就是讓加密過的軟體和硬體緊密地連接在一起,調用不會輕易地被剔除,這樣才能持久地保護您的軟體不被盜版,同時,這種方式使用起來非常簡單,很容易被程序員掌握,要對一個軟體實現保護,大約只需幾分鍾的時間就可以了,下面簡單介紹一下它的原理:

運用HASP HL的外殼工具先把java解釋器進行加密,那麼,如果要啟動這個解釋器就需要有特定的加密鎖存在,然後,再運用外殼工具中的數據加密功能把java程序(CLASS或JAR包)當作一個數據文件來進行加密處理,生成新的java程序(CLASS或JAR包),因為這個加密過程是在鎖內完成的,並採用了128位的AES演算法,這樣,加密後的java程序,無論你採用什麼樣的反編譯工具,都是無法反編譯出來的。您的軟體也只有被加密過的java解釋器並有加密鎖的情況下才能正常運行,如果沒有加密鎖,程序不能運行,從而達到真正保護您的軟體的目的。

2、HASP HL提供專門針對java外殼加密工具,直接加密jar包,防止外編譯,目前只支持J2SE,將來會進一步支持J2EE,如果情況適合則是最簡單的方法。

H. api反編譯怎麼用windows系統

api函數使windows系統自動提供的軟體調用介面。要反編譯的話一般需要內核調試。可以使用windows系統提供的調試工具包windbg

I. Java反編譯,再回編譯的時候報錯import javax.servlet.Filter

到java項目里
項目名-->右鍵
Property-->選擇
Java Build Path-->選擇
Add External JARs-->選擇
把servlet-api.jar的路徑輸入即可 該包在tomcat里有 搜索即可找到

J. 如何使用Detour3.0來進行相應的API HOOK開發

[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可以強制覆蓋舊文件

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:582
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:713