如何进行android APK的反编译

1.反编译的意义:
      通过反编译我们可以获得已打包好的apk的资源文件(layout、drawable)和 java程序代码(经过混淆打包的apk是无法看到正常的源码的(出现a,b,c,d,e,f...))等,让我们可以尽情去观赏大神们写代码逻辑结构以及是如何去布局的。
2.认识反编译的工具:
apktools:
  - apktool
  - dex2jar
  - jd-gui.exe
   阐述各个文件的作用:
     (1) apktool 可以反编译出App的layout布局等xml文件和drawable图片、清单文件。
     (2) dex2jar 可以将classes.dex反编译成classes_dex2jar.jar 文件。
     (3) jd-gui.exe 可以打开classes_dex2jar.jar 就可看到java源代码。
3.如何使用反编译工具:
  1.将apktools文件到电脑本地磁盘;(后面会附上apktools的下载地址)
  2.获取资源文件:
     打开dos命令提示符(快捷键: Windows + R,输入cmd),输入dos命令将当前目录移至到apktools所在的目录(为了方便直接将apktools放到了C盘根目录);

      
具体命令操作如图:

    

确保当前目录为反编译文件夹的目录后执行以下操作:(这里我以前段时间的项目为例)
将 点读.apk 拷贝至D盘,如下图
    
拷贝好目标apk后继续执行 :

(1)输入命令:  cd apktool1.5.2  (进入apktool1.5.2目录命令)
(2)继续输入:  apktool d D:\点读.apk D:\apk\点读 (假设我们要将反编译文件放到 D:\apk\点读 目录下)
                  
        :当   D:\apk\点读 目录存在时,反编译不会成功且会出现相关提示,我们只需要把命令行改为: apktool d –f  D:\点读.apk   D:\apk\点读 即可。

出现下图的提示后我们的资源文件的反编译就成功了!

     

让我们去看一下到底输出了神马东西?
穿越到我们的输出目录会看到:
      1)lib目录 是我们项目中用到的.so文件
      2)res 就是我们想要的各种资源文件
      3)AndroidManifest.xml 清单文件

     
3. 获取java 代码:
首先将目标apk :点读.apk 改后缀为 .zip 的压缩文件

     
双击打开 点读.zip 

    
 
将其中的classes.dex 文件拷贝到  D:\apk 目录下

在当前目录继续执行dos命令:
 (1)  cd.. (返回上一级目录)
 (2)  cd dex2jar-0.0.9.15  (进入dex2jar-0.0.9.15目录)
 (3)  dex2jar D:\apk\classes.dex   (反编译命令)

出现下图提示即成功反编译java源码!

   

反编译出来的源码文件为:    默认与 classes.dex 在相同目录下!(如下图)

   

4.打开 java 源码:
将 classes_dex2jar.jar 拷贝至 apktools 目录下,将其拖到 jd-gui.exe 上即可打开文件!(如下图)

   

让我们来看一下混淆打包与非混淆打包反编译后的区别:(出现了很多前文提到的abcd...,混淆打包一定程度上提高了你发布apk的安全系数)

   

还有其他反编译的方法:答案是肯定的! ...

1. Androidfby  (图形化反编译工具) 
   
   

不知道什么原因,只是反编译出了清单文件与classes.dex ... 没有drawable就算了,难道这是让我们获得 .dex后继续使用dex2jar工具吗? (我第一次用时提示   不是坑爹吗?) 算了,求知欲强的小伙伴可以自己去试试...

(暂时只找到比较靠谱的这两种方式,第一次发博客希望各位看官多多包涵,高手 绕行勿喷..)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值