• 反编译安卓apk文件(基于Mac环境)


    之前搜索了网上的一些方法,感觉我用起来不是很顺手,可能是有些大神写的省略了很多步骤,对于我这种命令行小白不是很友好,踩了几个坑之后我还是尽量把我自己的过程记录下来吧,我尽量把每个基础步骤写下来。  

    先说下我的这种方法要用到的四个东西:apktool,apktool.jar,dex2jar,jd-gui.这四个东西是需要自己去下载的,我后面会写下载地址和使用方式

    先下载好apktool.jar和apktool,下面是下载的链接地址

    https://bitbucket.org/iBotPeaches/apktool/downloads/

    下载我圈起来的两个文件,下载好后给第二个文件改名字,把apktool_2.3.4.jar改成apktool.jar,这里的版本没有固定,尽量下最新的版本吧。

    找出在第一个文件中的apktool文件。

    把下载好的这两个文件放进/usr/local/bin/目录下

    首先命令行操作进入这两个文件的所在的目录:cd 路径

    增加这两个文件的可执行权限:chmod a+x 文件

    apktool d xxx.apk是反编译当前目录下的文件,所以需要注意你的apk文件的文件路径是不是正确的,如果apk文件是放在其他目录的话,在编译apk文件前需要进入apk文件的目录,在apktool.sh d xxx.apk代码前加cd 文件路径

    下面是进入我的apk路径:cd 路径

    进入apk路径之后就可以进行编译了:apktool d xxx.apk

    下面效果就是反编译成功了,会在apk当前的目录生成一个和apk名字相同的文件夹,这个新生成的文件夹就是反编译apk后获得的资源文件夹了

    我把整个命令行的操作步骤截图放这里,方便对照:

    这一步完成后就已经可以看到apk的xml布局文件和可以获取到apk的图片资源了,如果需要看java代码就需要进行下面的步骤

    获取java代码前需要做些准备工作:

      对反编译apk后的文件进行回编译,apktool既可以对apk文件进行反编译,也可以对apk反编译后的文件夹进行回编译,进行回编译这一个步骤主要是要获取classex.dex文件。

    输入命令行:apktool b 反编译的文件夹名

    执行完这一步会在反编译文件夹中生成一个build文件,这里面的classes.dex文件就是我们需要的了

    注:如果只是单纯的要获取这个classes.dex文件,有一种更加简便的方法。我们可以把xxx.apk的后缀改成xxx.zip,然后把这个压缩包进行解压缩,在解压后的文件夹中也可以找到这个classes.dex文件

    有了classes.dex文件之后去下面的地址下载一个dex2jar文件

    https://sourceforge.net/projects/dex2jar/

    把classes.dex文件拷贝进dex2jar文件中去

    接下来就可以用dex2jar这个工具,运用命令行去生成classes-dex2jar.jar文件,这个文件就是最终的java文件了,步骤如下:

    第一步当然是使用命令行进入dex2jar这个工具的目录了:cd 路径

    然后是给d2j-dex2jar.sh文件添加运行权限(这一步可以省略,但是还是加上安全的,等得后面实现不了效果更加麻烦):chmod +x d2j-dex2jar.sh

    最后是运行命令生成classes-dex2jar.jar文件:sh d2j-dex2jar.sh classes.dex

     执行完这一步就可以在dex2jar文件夹目录中看到classes-dex2jar.jar文件了

    最后当然是下载一个可以查看jar文件的工具了,我这里用的是jd-gui,下面是下载地址:

    http://jd.benow.ca

    生成了java的jar文件之后我们只要通过特定的工具就可以看到里面的java内容了,把之前下载好的jd-gui打开,把classes-dex2jar.jar文件直接拖进jd-gui的界面就行了

     ok,搞定

  • 相关阅读:
    javascript执行机制
    PhpStorm常用的一些快捷键
    php值传递和引用传递的区别是什么?
    echo与print,var_dump()和print_r()的区别
    PHP错误类型及屏蔽方法
    工作中常用的正则表达式
    Linux环境变量配置文件/etc/profile、/etc/bashrc、~/.bashrc的区别以及一些隐藏文件的作用
    log4j配置不生效
    Java执行CMD命令
    jar的解压与打包
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/9619902.html
Copyright © 2020-2023  润新知