真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

apk還原為java代碼 apk還原成源代碼

如何把a(bǔ)pk反編譯成java代碼

一、找到apk中的class.dex:

創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、巴東網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為巴東等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

把a(bǔ)pk文件改名為.zip,然后解壓縮其中的class.dex文件,它就是java文件編譯再通過(guò)dx工具打包成的。

1、把class.dex拷貝到dex2jar.bat所在目錄,直接拖動(dòng)class.dex到dex2jar.bat,生成classes.dex.dex2jar.jar。

或者:1.在cmd下進(jìn)入dex2jar.bat所在路徑,然后輸入“dex2jar.bat XXX”,XXX指的是你要反編譯的apk中的classes.dex文件所在路徑及名稱,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路徑下, classes.dex在D:\Android下,所以: 你進(jìn)入dex2jar.bat路徑下后,輸入dex2jar.bat D:\Android\classes.dex,這樣會(huì)生成一個(gè)jar文件。

2.用rar解壓出jar文件中的class文件,然后用jad或DJ Java Decompiler反編譯工具將.class文件反編譯成.java文件

3、運(yùn)行JD-GUI工具,打開(kāi)上面的jar文件,在File下有個(gè)Save JAR Source,它可以生成src源代碼。

APK反編譯,修改了.java源碼,現(xiàn)在怎么編譯回去?

這樣做是行不通的。反編譯一般是不能完全得到源Java代碼的,得到的代碼甚至?xí)姓Z(yǔ)法錯(cuò)誤,除非是簡(jiǎn)單的那些代碼。要改的話就得改.class文件,但這個(gè)非常困難,要在16進(jìn)制下改?;蛘吒膕mali文件,這個(gè)比改.class文件要稍微簡(jiǎn)單一點(diǎn),不用在16進(jìn)制下修改,可直接改代碼,但也是需要一定的smali語(yǔ)法知識(shí)的。

對(duì)于一個(gè)程序的apk,能不能反編譯成代碼

測(cè)試環(huán)境:win 7

使用工具:

apktool

dex2jar

jd-gui

工具介紹:

apktool

作用:資源文件獲取,可以提取出圖片文件和布局文件進(jìn)行使用查看.

dex2jar

作用:將apk反編譯成Java源碼(classes.dex轉(zhuǎn)化成jar文件).

jd-gui

作用:查看APK中classes.dex轉(zhuǎn)化成出的jar文件,即源碼文件.

通過(guò)以上的工具可以實(shí)現(xiàn)程序的apk反編譯成代碼。

如何實(shí)現(xiàn)APK的反編譯得到APK的源碼

最新的反編譯不用此方法, 有最新的一鍵自動(dòng)反編譯工具:

這段時(shí)間在學(xué)Android應(yīng)用開(kāi)發(fā),在想既然是用Java開(kāi)發(fā)的應(yīng)該很好反編譯從而得到源代碼吧,google了一下,確實(shí)很簡(jiǎn)單,以下是我的實(shí)踐過(guò)程。

在此鄭重聲明,貼出來(lái)的目的不是為了去破解人家的軟件,完全是一種學(xué)習(xí)的態(tài)度,不過(guò)好像通過(guò)這種方式也可以去漢化一些外國(guó)軟件。

注:本Android反編譯教程,在Windows7-Ultimate-64bit操作系統(tǒng)上,測(cè)試通過(guò)!

下述所需的反編譯工具包 下載

一、反編譯Apk得到Java源代碼

首先要下載兩個(gè)工具:dex2jar和JD-GUI

前者dex2jar是將apk中的classes.dex轉(zhuǎn)化成Jar文件,而JD-GUI是一個(gè)反編譯工具,可以直接查看Jar包的源代碼。以下是下載地址:

dex2jar:

JD-GUI:

具體步驟:

首先將apk文件,將后綴改為zip,解壓,得到其中的classes.dex,它就是java文件編譯再通過(guò)dx工具打包而成的;

解壓下載的dex2jar,將classes.dex復(fù)制到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄(在DOS命令下CD 目錄)

運(yùn)行

dex2jar.bat classes.dex

生成

classes.dex.dex2jar.jar

生成jar文件的截圖如下:

運(yùn)行JD-GUI(jd-gui.exe),打開(kāi)上面生成的jar包,即可看到源代碼了

HelloAndroid源碼(編譯前的apk源碼對(duì)照)如下:

二、反編譯apk生成程序的源代碼和圖片、XML配置、語(yǔ)言資源等文件

如果是漢化軟件,這將特別有用。首先還是下載工具,這次用到的是apktool

下載地址:

下載:apktool1.4.1.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(兩個(gè)包都下載)

具體步驟:

將下載的兩個(gè)包解壓到同一個(gè)文件夾下,應(yīng)該會(huì)有三個(gè)文件:aapt.exe,apktool.bat,apktool.jar

在命令行下定位到apktool.bat文件夾,輸入以下命令:apktool d C:\*.apk C:\*文件夾,如下圖:

命令行解釋:apktool d [apk文件 ] [輸出文件夾]

反編譯的文件如下(AndroidManifest.xml為例):

特別注意:你要反編譯的文件一定要放在C盤的根目錄里(其實(shí)不用放在C盤根目錄也行)

例如:在D盤目錄D:\apktool1.4.1

cd /d D:\apktool1.4.1 //切換到D盤目錄,包含HelloAndroid.apk以及aapt.exe,apktool.bat,apktool.jar三個(gè)文件

apktool.bat d -f HelloAndroid.apk HelloAndroid // apktool反編譯命令,注意 d和

-f 的寫法

將反編譯完的文件重新打包成apk,很簡(jiǎn)單,輸入apktool b c:\***文件夾(你編譯出來(lái)文件夾)即可,命令如下:這個(gè)主意你文件所在盤

打包apk后的文件在目錄C:\HelloAndroid下,生成了兩個(gè)文件夾:

build

dist

其中,打包生成的HelloAndroid.apk,在上面的dist文件夾下,Ok

最后,再介紹一款剛出來(lái)的反編譯工具 Androidfby ,它是一款對(duì)上述步驟進(jìn)行了封裝的圖形界面工具,下載地址

但是,針對(duì)部分簽名的apk,無(wú)法實(shí)現(xiàn)反編譯,但本博客方法則仍然可以反編譯成功!僅供參考使用

另外,作為應(yīng)用開(kāi)發(fā)者,肯定不希望自己的代碼被反編譯的,下一遍博客將講述如何通過(guò)混淆代碼防止被別人反編譯

Android如何防止apk程序被反編譯

作為Android應(yīng)用開(kāi)發(fā)者,不得不面對(duì)一個(gè)尷尬的局面,就是自己辛辛苦苦開(kāi)發(fā)的應(yīng)用可以被別人很輕易的就反編譯出來(lái)。

Google似乎也發(fā)現(xiàn)了這個(gè)問(wèn)題,從SDK2.3開(kāi)始我們可以看到在android-sdk-windows\tools\下面多了一個(gè)proguard文件夾

proguard是一個(gè)java代碼混淆的工具,通過(guò)proguard,別人即使反編譯你的apk包,也只會(huì)看到一些讓人很難看懂的代碼,從而達(dá)到保護(hù)代碼的作用。

下面具體說(shuō)一說(shuō)怎么樣讓SDK2.3下的proguard.cfg文件起作用,先來(lái)看看android-sdk-windows\tools\lib\proguard.cfg的內(nèi)容:

[html] view

plaincopyprint?

1. -optimizationpasses 5

2. -dontusemixedcaseclassnames

3. -dontskipnonpubliclibraryclasses

4. -dontpreverify

5. -verbose

6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

7.

8. -keep public class * extends android.app.Activity

9. -keep public class * extends android.app.Application

10. -keep public class * extends android.app.Service

11. -keep public class * extends android.content.BroadcastReceiver

12. -keep public class * extends android.content.ContentProvider

13. -keep public class * extends android.app.backup.BackupAgentHelper

14. -keep public class * extends android.preference.Preference

15. -keep public class com.android.vending.licensing.ILicensingService

16.

17. -keepclasseswithmembernames class * {

18. native methods;

19. }

20.

21. -keepclasseswithmembernames class * {

22. public init(android.content.Context, android.util.AttributeSet);

23. }

24.

25. -keepclasseswithmembernames class * {

26. public init(android.content.Context, android.util.AttributeSet, int);

27. }

28.

29. -keepclassmembers enum * {

30. public static **[] values();

31. public static ** valueOf(java.lang.String);

32. }

33.

34. -keep class * implements android.os.Parcelable {

35. public static final android.os.Parcelable$Creator *;

36. }

從腳本中可以看到,混淆中保留了繼承自Activity、Service、

Application、BroadcastReceiver、ContentProvider等基本組件以及

com.android.vending.licensing.ILicensingService,

并保留了所有的Native變量名及類名,所有類中部分以設(shè)定了固定參數(shù)格式的構(gòu)造函數(shù),枚舉等等。(詳細(xì)信息請(qǐng)參考proguard_path/examples中的例子及注釋。)

讓proguard.cfg起作用的做法很簡(jiǎn)單,就是在eclipse自動(dòng)生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了

完整的default.properties文件應(yīng)該如下:

[html] view

plaincopyprint?

1. # This file is automatically generated by Android Tools.

2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED!

3. #

4. # This file must be checked in Version Control Systems.

5. #

6. # To customize properties used by the Ant build system use,

7. # "build.properties", and override values to adapt the script to your

8. # project structure.

9.

10. # Project target.

11. target=android-9

12. proguard.config=proguard.cfg

大功告成,正常的編譯簽名后就可以防止代碼被反編譯了。反編譯經(jīng)過(guò)代碼混淆的apk得到的代碼應(yīng)該類似于下面的效果,是很難看懂的:

如果您使用的是2.3之前的SDK版本也沒(méi)關(guān)系,把上面的proguard.cfg文件復(fù)制一份放到項(xiàng)目中,然后進(jìn)行相同的操作即可

如何反編譯Apk得到Java源代碼

首先APK是一種壓縮格式,普通的解壓工具都可以打開(kāi)。

其次反編譯可以使用常見(jiàn)的jd,當(dāng)然如果人家的源代碼做了代碼混淆,反編譯就比較難了。


當(dāng)前文章:apk還原為java代碼 apk還原成源代碼
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/hhgogo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部