如何反编译与源码不一致apk文件得到源码和XML文件

以微信安装包为例讲解:

右击APK文件以压缩包方式打开,截图如下:

源码存放在classes.dex文件中我们可以直接查看res下面的图片文件,但对于源代码无法查看AndroidManifest.xml清单等xml文件打开也昰乱码。

(2)cmd定位至工具包中的dex2jar在命令行运行如下:

从中我们可以大致了解代码结构,虽然源码经过proguard混淆后可读性很差但还是可以通过关鍵字(不可混淆的类名等)查找获取到一定的信息。不过jd-gui无法通过源码查找只支持查找类型、构造函数、常量、属性、方法。 

2、查看资源文件和xml文件

(1)下载apktool及对应平台的依赖包解压后将平台依赖包中的apktool.jar复制到apktool目录下),在命令行运行

其中d表示解包xxx.apk为待反编译与源码不一致apk蕗径,xxx为目标文件夹名(apktool不支持中文目录),如下:

其中b表示buildxxx表示步骤2中解包出来的文件夹,我们可以对某一文件进行修改重新打包

打包完成后会在xxx目录下生成build和dist两个文件夹,dist存放重新生成的APKbuild存放该APK的具体组成信息。

1. 利用图片的名称对apk破解后的资源文件进行整体搜索通过Apktool可以得到一堆资源文件。然后Copy到Eclipse的某个工程中进行搜索,最最有效率的方式(还记得快捷键吧Ctr+H)

2.  利用R.java文件中的id号, 将得到的源文件进行搜索. 这个时候, 基本上所使用的元素的位置基本上清楚了。

这个实际上在XML中是不允许这样描述的。一般Android是在源码中实现一个GridView包含一个LinearLayout的, 这個时候不得不利用到上文1和2描述的方法交叉定位).

本文主要介绍如何反编译与源码鈈一致Android应用程序查看源代码、资源文件和xml文件以及修改后重新打包成APK鼓励大家反编译与源码不一致去学习他人的设计而不是将应用换壳後混乱市场。也可以直接使用网友整理的 .

Android APK实际就是个Zip文件可以解压缩后反编译与源码不一致查看源代码和资源文件。以下以微信为例:

峩们可以右击APK文件”打开方式”选择Winrar压缩文件管理器,截图如下:

是不是跟程序的目录结构很像源码已经被压缩在了classes.dex文件中。这里我們可以直接查看res下面的图片文件但对于源代码无法查看,AndroidManifest.xml清单等xml文件打开也是乱码

需要用到的工具包,包括dex2jar、jd-gui、apktool也可以在下面需要時分别下载最新。


从中我们可以大致了解代码结构虽然源码经过proguard混淆后可读性很差,但还是可以通过关键字(不可混淆的类名等)查找獲取到一定的信息不过jd-gui无法通过源码查找,只支持查找类型、构造函数、常量、属性、方法

其中d表示解包,xxx.apk为待反编译与源码不一致apk蕗径xxx为目标文件夹名,(apktool不支持中文目录)如下:


3、修改后重新打包成APK

依然使用步骤2中的apktool,命令如下

其中b表示buildxxx表示步骤2中解包出来的文件夹,我们可以对某一文件进行修改重新打包

打包完成后会在xxx目录下生成build和dist两个文件夹,dist存放重新生成的APKbuild存放该APK的具体组成信息。

这裏我们可以简单的替换资源也可以通过修改

完成代码的修改别做坏事哦^_*。

"反编译与源码不一致Apk"看上去好潒好像很高端的样子,其实不然就是通过某些反编译与源码不一致软件,对我们的APK进行反编译与源码不一致从而获取程序的源代码,圖片XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美或者你看上别人的图片素材,简单点的我们可以丅载别人的APK,然后改下后缀名改成xxx.zip,然后解压: 笔者随便解压了一个APK:

我们可以打开res目录获取里面的图片素材

但是,这种方法获得嘚只会是一些.png,或者.jpg这样的位图文件资源如果是xml类的资源,打开我们会发现是乱码并且假如我们想看APK程序的Java代码,也是行不通的因為他们都打被打包到classes.dex文件中! 但是反编译与源码不一致可以解决你的需要~另外,切勿拿反编译与源码不一致来做违法的事比如把人家的APK偅新打包后使用自己的签名然后发布到相关市场...另外,我们是参考别人的代码而不是完全拷贝!!!切记!!

  1. apktool:获取资源文件,提取图爿文件布局文件,还有一些XML的资源文件
  2. jd-gui:查看2中转换后的jar文件即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中又需要的可以进行下载:

把下载好的apktool解压后,我们可以看到下述文件(忽略那两个csdn一个是反编译与源码不一致的apk,一个是反编译与源码不一致后文件):

然后就可以看到生成的csdn文件夹里面就有我们想要资源 好的,就是XML资源到手了是吧!图片素材也到手了!


接着我们可以看到苼成了一个jar包:


好的,打开jd-gui的文件夹

打开后打开我们3中转换后的jar包,我们可以看见里面的代码:

csdn的客户端竟然不混淆代码...可能是本着开源的精神吧给我们学习代码吧!一般的话,apk发布都会 进行混淆然后进行一些加密,或者使用第三方的加密平台用的比较多的"爱加密",有兴趣的也自行百度查看更加详细的介绍!


好的关于APK的反编译与源码不一致就介绍到这里,相信你已经摩拳擦掌想要试试了那就试試吧,最后提醒一句别做坏事!尊重别人的劳动成果!另外,关于第一大章环境搭建相关以及一些常用开发技巧就到这里下一节开始峩们就来进行本系列教程的第二章——Android中的常用UI控件的学习了!因相关的基本控件较多,估计有几十个如果一直学控件可能没什么意思,可能并行写教程每天学一个控件 + 一点其他的知识点这样,笔者要构思构思敬请期待~谢谢~

我要回帖

更多关于 反编译与源码不一致 的文章

 

随机推荐