【订购 .net源码】【ARTNET转码器源码】【java中修改源码】apk的xml回编译源码_apk xml文件反编译

时间:2024-11-15 05:54:02 分类:开店如何注册溯源码卖货 来源:觅仙源码

1.如何反编译apk文件得到源码和XML文件
2.如何进行APK反编译
3.apk反编译,编译回编出错了?

apk的xml回编译源码_apk xml文件反编译

如何反编译apk文件得到源码和XML文件

       最近因为一些事所以需要得到师兄的某个apk的源代码,但师兄说那个项目包已经删了,文件哎,反编没办法,编译只能自己想办法了。源码译订购 .net源码后来找到了反编译apk的文件方法,现在拿出来分享下。反编其实这个方法网上都有,编译我只是源码译记载一下自己这段时间的学习情况。

       1.下载工具

       首先,文件要反编译需要下面这

       4个工具:

       dex2jar:将apk中的反编classes.dex转化成Jar文件。

       JD-GUI:反编译工具,编译可以直接查看Jar包的源码译源代码。

       apktool:反编译工具,文件通过反编译APK中XML文件,直接可以查看。ARTNET转码器源码

       apktool-install-windows-r-ibot:辅助windows批处理工具。

       2.解压apk

       直接右键解压apk就行了,这没什么好说的。解压后会有个dex后缀的文件,下面会用到

       3.反编译dex文件

       1)解压下载的dex2jar,把解压后的文件夹放到系统盘跟目录中并把这个目录加到系统path变量中,就可以直接用:dex2jar.bat或dex2jar.sh转换dex文件了。

       2)DOS行命令如下:dex2jar.bat

       xx\classes.dex(xx是java中修改源码classes.dex文件所在的路径)。

       将在同目录得到普通jar包:classes_dex2jar.jar,就可以用处理普通jar包的方法来反编译这个jar包得到原文件。

       4.反编译jar文件

       1)解压压缩文件JD-GUI

       2)运行该文件夹里的jd-gui.exe,打开上面生成的jar包,

       即可看到源代码了。

       5.反编译xml文件

       为什么要发编译xml文件呢?因为直接解压apk得到的xml文件是乱码来的,我们需要用工具把它调会正常来

       具体操作方法:

       1)将下载的apktool和apktool-install-windows-r-ibot两个包解压到同一个文件夹下,这个文件夹有三个文件:aapt.exe,纯c绘制源码apktool.bat,apktool.jar。

       2)把这个文件夹也放到系统盘的根目录中并把这个目录加到path变量中。以HelloWord.apk为例:

       3)在DOS命令行中输入:apktool

       d

       xx\HelloWord.apk

       HelloWord得到HelloWord文件夹,此文件夹中的xml文件就是编译好的可以正常查看的文件。

       6.后话

       不过,说到底反编译还是反编译,还是linux软件源码网站不能完全地还原出真正的源代码的,比如一般会出现下面这样的问题:

       setContentView();

       在真正的源代码中其实是这样的:

       setContentView(R.layout.welcome)

如何进行APK反编译

       å¦‚何进行APK反编译

        我们下载到某些apk的时候,可能总想学习下别人是怎么进行程序设计的,或者怎样使用xml文件布局的,这时就想到将apk文件的后缀改为rar并解压,最终得到一些图片资源和很多打开为乱码的文件,可见这种方式不可行,这就需要使用下面的工具对apk进行反编译了。

        一、工具准备:apktool、dex2jar、jd-gui

        工具包也可以在这里下载。

        1、dex2jar可以在这里下载,jd-gui可以在这里下载。

        2、apktool,可以到Google官方下载,apktool-1.0.0.tar.bz2(里面有apktool.jar)和apktool-install-windows-2.1_r-1.zip两个包都要下。解压apktool.jar到 C:\Windows,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。

        二、使用dex2jar + jd-gui 得到apk的java源码,步骤如下:

        1、用.rar打开apk文档,将classes.dex文件解压出来,然后使用工具反编译成.jar文件。

        在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径下,classes.dex在D:\Android下,所以你进入到dex2jar.bat路径后,输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。

        2、用jd-gui反编译工具将得到.jar文件反编译成.java文件。

        三、使用apktool得到apk的xml文件

        1、Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入命令:

        apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC

        2、 在解压后的文件夹中可以得到apk的xml配置文件。

        四、第二步得到的程序源代码和第三步得到的xml文件组合下,就成一个android工程,即可得到完整的apk源码。

apk反编译,回编出错了?

       不影响正常运行,只是编译环境,

       compileSdkVersion 告诉 Gradle 用哪个 Android SDK 版本编译你的应用。使用任何新添加的 API 就需要使用对应 Level 的 Android SDK。

       需要强调的是修改 compileSdkVersion 不会改变运行时的行为。当你修改了 compileSdkVersion 的时候,可能会出现新的编译警告、编译错误,但新的 compileSdkVersion 不会被包含到 APK 中:它纯粹只是在编译的时候使用。(你真的应该修复这些警告,他们的出现一定是有原因的)

       因此我们强烈推荐总是使用最新的 SDK 进行编译。在现有代码上使用新的编译检查可以获得很多好处,避免新弃用的 API ,并且为使用新的 API 做好准备。

       注意,如果使用 Support Library ,那么使用最新发布的 Support Library 就需要使用最新的 SDK 编译。例如,要使用 .1.1 版本的 Support Library ,compileSdkVersion 就必需至少是 (大版本号要一致!)。通常,新版的 Support Library 随着新的系统版本而发布,它为系统新增加的 API 和新特性提供兼容性支持。

       解决办法有两种(我测试的前提是反编译的母包是没有包含这两个属性的):

       (1)使用apktool 2.3.2版本,因为2.3.3之后版本针对appt和appt2做了修改,最后AndroidManifest.xml里面不在包含compileSdkVersion和compileSdkVersionCodename

       (2)清除原本的1.apk,重新指定framework-dir:java -jar apktool_2.4.0.jar empty-framework-dir --force,最后发现可以回编译成功,但是AndroidManifest.xml还是会包含compileSdkVersion和compileSdkVersionCodename。