zoukankan      html  css  js  c++  java
  • 关于有的Apk无法反编译的探究

    Android的apk包,其实就是zip包,只不过后缀名换了而已!使用“好压”等解压缩工具解压,就可以看到里面的内容了。简单介绍一下吧。

    以下就是解压出来的apk的内容:

    关于有的Apk无法反编译的探究
    其中:

    assets                 对应工程目录下的 assets目录,存放附加资源。

    lib                    对应工程目录下的 lib目录,存放程序引用库。

    META-INF               存放apk签名信息。

    res                    对应工程目录下的res目录,存放程序资源,如图片等

    AndroidManifest.xml    程序的声明文件,包括SDK版本、Activity声明,权限声明等。

    classes.dex            java字节码,即代码文件。

    resources.arsc         资源标识文件,存放字符串等内容。

    关于反编译的方法,百度一搜就一大堆,这个我就不多说了!

    附上几个链接吧:

    1、Android APK反编译详解(附图)

    http://blog.csdn.net/sunboy_2050/article/details/6727581

    2、真正强大的APK反编译工具 DoAPK 1.0 发布!图形化操作,有图有真相

    http://bbs.hiapk.com/thread-1226617-1-1.html

    第1种方法,

    通过使用“dex2jar”工具,

    把“classes.dex”文件转换为“classes.dex.dex2jar.jar”,

    然后再使用“JD-GUI”工具直接打开“classes.dex.dex2jar.jar”文件,

    就可以看到详细的Java代码了。

    通常会有3种情况:

    1、如果开发者没有使用代码混淆的话,那么,你将看到100%的源代码。

    2、如果开发者加入了代码混淆的话,那么,你将看到a,b,c,d之类的名字的代码。

    3、还有一种情况是,你什么都看不到。这也是我写这篇文章的重点所在。

    针对这个问题,我在网上搜索了三天,均没有任何相关的解决方法。

    今天早上,偶尔看到有人说是系统问题,在win7下无法查看,但在xp下又可以查看。

    于是,我就试着用虚拟机的windows 2003系统看看,结果,还是不行。

    后来,仔细一想,怀疑是dex2jar工具版本有问题

    于是在2003我安装了新的dex2jar,版本为0.9.8

    结果,真的可以看到JAVA代码了。

    下图是使用dex2jar 0.9.8的效果:

    关于有的Apk无法反编译的探究



    下图是dex2jar 0.7.0的效果:

    关于有的Apk无法反编译的探究



    由此可知:

    有的apk无法反编译,是因为dex2jar的版本太低了!

    建议:

    在使用dex2jar工具的时候,最好使用最新版,以确保反编译的成功。

    后来补充:

    有些朋友喜欢使用apktool来进行反编译,操作过程中经常会出现各种问题,无法顺利反编译。

    一般来说,这种APK在发布的时候动了手脚(比如加壳、增加特殊代码让apktool出异常……)

    解决方法是,

    1、首先确保apktool用了最新版本;

    2、然后看看apktool出了什么错误,打开apktool.jar,定位到具体代码查看原因

    这种情况比较复杂,也比较麻烦,有兴趣的朋友可以去“看雪论坛”多看看。

    首先说APK反编译个人经验,2.0之后的APKTOOL(目前任何一款反编译工具都是基于APKTOOL)需要JDK1.8以上的兼容性。第二点,APK的路径是否包含中文,或空格。最好在磁盘盘符根目录下反编译编译。第三点,可以试着删除错误提示中的字行,重新编译。还有就是升级APKTOOL.JAR文件。

    最新解决,apktool用的是apktool_2.0.0rc3.jar解决了这个问题,谢谢

    apktool反编译时经常会出现下面的信息
     

    1.Input file  was not found or was not readable.

    2.Destination directory (C:Usersusera) already exists. Use -f switch if you want to overwrite it.
    3.Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars c fil..........
     
    解决方案:
    1和2是因为apktool升级到2.0以上时,使用方式已经替换,格式为:apktool d [-s] -f <apkPath> -o <folderPath>,参数具体的意思可以直接打apktool回车(windows)查看帮助
    3是因为apktool版本过低导致,请升级到最新版本,地址:https://bitbucket.org/iBotPeaches/apktool/downloads,我使用的apktool是2.0版本,生成的xml文件没有乱码。
  • 相关阅读:
    oracle 11.2.0.4 ADG+linux+补丁升级11.2.0.4.181016(28204707)
    审计信息清理及审计表迁移时遇到的坑
    与其他schema下表同名视图实验
    Oracle 11gr2 RAC到单实例的DG搭建(落地备份)
    Oracle数据文件名乱码问题
    Vmware12+centos7:固定IP
    Vmware12+OracleLinux5.4+Oracle 11.2.0.3+ASM
    OracleLinux文件名最后带空格生成了新的文件???
    OGG新增DataPump进程下发(多个进程共用队列文件)
    OGG BIGDATA从版本12.2升级到12.3.2.1.1
  • 原文地址:https://www.cnblogs.com/yaowen/p/5943722.html
Copyright © 2011-2022 走看看