mac反编译安卓apk

反编译工具

apktool

两种方式

dex2jar

两种方式

jd-gui

apktool 安装

  • 安装方式查看 https://ibotpeaches.github.io/Apktool/install/

  • 下载好带版本号的jar修改名字为apktool.jar

  • apktool文件各式如图

    屏幕快照 2018-10-23 13.47.19.png

  • apktool.jarapktool存放在/usr/local/bin

  • 终端输入apktool 显示下面 安装成功

$ apktool
Apktool v2.3.4 - a tool for reengineering Android apk files
with smali v2.2.2 and baksmali v2.2.2
Copyright 2014 Ryszard Wiśniewski <brut.alll@gmail.com>
Updated by Connor Tumbleson <connor.tumbleson@gmail.com>

usage: apktool
 -advance,--advanced   prints advance information.
 -version,--version    prints the version then exits
usage: apktool if|install-framework [options] <framework.apk>
 -p,--frame-path <dir>   Stores framework files into <dir>.
 -t,--tag <tag>          Tag frameworks using <tag>.
usage: apktool d[ecode] [options] <file_apk>
 -f,--force              Force delete destination directory.
 -o,--output <dir>       The name of folder that gets written. Default is apk.out
 -p,--frame-path <dir>   Uses framework files located in <dir>.
 -r,--no-res             Do not decode resources.
 -s,--no-src             Do not decode sources.
 -t,--frame-tag <tag>    Uses framework files tagged by <tag>.
usage: apktool b[uild] [options] <app_path>
 -f,--force-all          Skip changes detection and build all files.
 -o,--output <dir>       The name of apk that gets written. Default is dist/name.apk
 -p,--frame-path <dir>   Uses framework files located in <dir>.

For additional info, see: http://ibotpeaches.github.io/Apktool/ 
For smali/baksmali info, see: https://github.com/JesusFreke/smali

开始反编译

目录结构

AndroidDecompilation/
├── Decompile
│   └── com.stub.StubApp.apk
├── apktool
├── apktool.jar
├── dex2jar-2.0
│   ├── d2j-baksmali.bat
│   ├── d2j-baksmali.sh
│   ├── d2j-dex-recompute-checksum.bat
│   ├── d2j-dex-recompute-checksum.sh
│   ├── d2j-dex2jar.bat
│   ├── d2j-dex2jar.sh
│   ├── d2j-dex2smali.bat
│   ├── d2j-dex2smali.sh
│   ├── d2j-jar2dex.bat
│   ├── d2j-jar2dex.sh
│   ├── d2j-jar2jasmin.bat
│   ├── d2j-jar2jasmin.sh
│   ├── d2j-jasmin2jar.bat
│   ├── d2j-jasmin2jar.sh
│   ├── d2j-smali.bat
│   ├── d2j-smali.sh
│   ├── d2j-std-apk.bat
│   ├── d2j-std-apk.sh
│   ├── d2j_invoke.bat
│   ├── d2j_invoke.sh
│   └── lib
│       ├── antlr-runtime-3.5.jar
│       ├── asm-debug-all-4.1.jar
│       ├── d2j-base-cmd-2.0.jar
│       ├── d2j-jasmin-2.0.jar
│       ├── d2j-smali-2.0.jar
│       ├── dex-ir-2.0.jar
│       ├── dex-reader-2.0.jar
│       ├── dex-reader-api-2.0.jar
│       ├── dex-tools-2.0.jar
│       ├── dex-translator-2.0.jar
│       ├── dex-writer-2.0.jar
│       └── dx-1.7.jar
├── dex2jar-2.0.zip
├── jd-gui-osx-1.4.0
│   ├── JD-GUI.app
│   │   └── Contents
│   │       ├── Info.plist
│   │       ├── MacOS
│   │       │   └── universalJavaApplicationStub.sh
│   │       └── Resources
│   │           ├── Java
│   │           │   └── jd-gui-1.4.0.jar
│   │           └── jd-gui.icns
│   ├── LICENSE
│   ├── NOTICE
│   └── README.md
└── jd-gui-osx-1.4.0.tar
  • 反编译的目标apkcom.stub.StubApp.apk
    存放路径Decompile/com.stub.StubApp.apk
    进入此目录$ cd /Decompile

  • 执行 $ apktool d com.stub.StubApp.apk

  • 执行$ ls 结果

com.stub.StubApp    com.stub.StubApp.apk
  • 反编译java源文件
    com.stub.StubApp.apk修改为com.stub.StubApp.zip
    JavaSourceCode用来存放源码
$ mv com.stub.StubApp.apk com.stub.StubApp.zip
$ mkdir JavaSourceCode
$ unzip com.stub.StubApp.zip -d JavaSourceCode/
  • 使用dex2jarclasses.dex生成classes.jar
  • JavaSourceCode里面会有一个classes.dex文件
  • 进入$ cd JavaSourceCode/ 执行cp classes.dex ../../dex2jar-2.0/
    执行cd ../../dex2jar-2.0
$ sudo chmod +x d2j_invoke.sh
$ sh d2j-dex2jar.sh classes.dex
  • 会生成classes-dex2jar.jar
  • 使用jd-gui工具打开这个classes-dex2jar.jar包就可以看到java源代码了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在大四最迷茫的时候,我的男友告诉我:想什么就去做,你可以做的很好!于是,我在2016下半年的时间里,同时进行...
    远行与JING阅读 833评论 1 2
  • 外卖的沙拉连续吃了五周,是无论如何再也吃不下去了。 家里有个漂亮的厨房,装修的时候因为到处都选不到喜欢的瓷砖,就用...
    April爱猫爱王菲阅读 688评论 1 50
  • 20170813晴周末 非常顺利的到达扬州,扬州的大巴好长,空气好新鲜,就连阳光都是温温和和,一点也感受不到夏天的...
    三月小女子阅读 404评论 1 0
  • 你若安好 我的每一日子 都是晴天
    阆苑寒梅阅读 302评论 3 4
  • 系统化学习,知其然,知其所以然 每个 iOS 应用程序至少需要一个窗口, 有些可能包含多个窗口。一个窗口对象有几个...
    好_快阅读 469评论 0 0