文章主要介绍apktool,jd-gui,dex2j的编译步骤,若有其他需要可直接滑到文章最后有自动化工具下载地址。自动化工具不需要代码操作,直接拖动反编译出源代码。

1.Apk反编译步骤

准备工具

apktool,jd-gui,dex2jar也可以从连接中下载链接: https://pan.baidu.com/s/1alC03YxFefyHlM7BFl6ELw 提取码: jsjs

(1) ApkTool拆包,得到AndroidManifest和res等资源文件

使用apktool.jar文件进行拆包,命令如下

java -jar apktool.jar d yourApkFile.apk
// 注意`apktool.jar`是刚才下载后的jar的名称,`d`参数表示decode
// 在这个命令后面还可以添加像`-o -s`之类的参数,例如
// java -jar apktool.jar d yourApkFile.apk -o destiantionDir -s
// 几个主要的参数设置方法及其含义:
-f 如果目标文件夹已存在,强制删除现有文件夹
-o 指定反编译的目标文件夹的名称(默认会将文件输出到以Apk文件名命名的文件夹中)
-s 保留classes.dex文件(默认会将dex文件解码成smali文件)
-r 保留resources.arsc文件(默认会将resources.arsc解码成具体的资源文件)

apk拆包结果

(2) dex2jar反编译dex文件,得到java源代码

上一步中,我们得到了反编译后的资源文件,这一步我们还想看java源代码。这里要用的工具就是dex2jar。将dex格式的文件,转换成jar文件。

将.apk文件拷贝并将后缀名更改成.zip,将.zip文件解压缩。

建议将解压缩的classes.dex和classes2.dex文件复制到dex2jar文件夹下。

使用命令给dex2jar文件夹授权,chmod -R 777 dex2jar,windows启动时使用管理员启动即可。

打开下载的dex2jar文件夹,里面有shell和bat脚本,进入终端,就可以在命令行使用了,windows使用cmd也可以执行,运行文件。

命令如下

d2j-dex2jar.sh classes.dex
d2j-dex2jar.sh classes2.dex
// 获取classes.dex文件在最前面说过,只要把Apk当做zip解压出来,里面就有dex文件了
// 或者用apktool反编译时带上 `-s` 参数

运行后,可以看到classes.dex已经变成了classes-dex2jar.jar

解压后目录

(3) jd-gui查看java源代码

用法:下载后双击既可以运行这个工具,直接把上一步得到的classes-dex2jar.jar拖到jd-gui程序的界面上即可打开了,效果如下图所示。


二、自动化工具汇总(一键反编译Apk)

1.谷歌提供的工具:android-classyshark

下载地址:https://github.com/google/android-classyshark/releases,下载下来之后是一个可执行的jar文件,win下或者mac下都只要双击即可运行。

2.Python实现的工具:AndroidGuard

下载地址:https://github.com/androguard/androguard/releases

3.Mac专属工具:Android-Crack-Tool

下载地址:https://github.com/Jermic/Android-Crack-Tool/releases,在Mac环境下使用的App,集成了Android开发中常见的一些编译/反编译工具

apk文件反编译成android代码相关推荐

  1. 对Android APK文件反编译查看其源码

    概述 作为android的开发者,相信你会有那么一刻,比如,对于手机中某一款App,有一项功能或者效果你蛮喜欢的,想学习一下它具体是怎么实现的.追求高一点的话,我想深究它这个App的项目架构,本着一探 ...

  2. 什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件

    文章目录 1 什么是pyc文件 1.1 什么是pyc文件 1.2 pyc文件是怎么生成的,有什么好处 2 把python的py文件编译成pyc文件 2.1 使用python内置库py_compile把 ...

  3. android apk 文件反编译

    Android 反编译APK 的好处 第一,当自己代码加混淆的时候,代码找不到CLASS 可以反编译下看看,到底是没有屏蔽,还是有其他的问题 第二,参考下别人的代码是怎么写的 使用工具 就一个 htt ...

  4. 关于APK文件反编译方法(图文详解)

    今天晚上利用个把小时,终于把apk反编译彻底弄明白了,现在详细讲解一下apk反编译的具体过程. 1.下载三个工具 APK Multi-Tool    作用:获取apk的配置资源文件 dex2jar-0 ...

  5. so文件反编译为python代码_【反编译系列】四、反编译so文件(IDA_Pro)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程 ...

  6. android技巧:apk文件反编译以及签名打包,APKTool 反编译,打包,签名

    apktool 主要用于逆向apk文件.它可以将资源解码,并在修改后可以重新构建它们.它还可以执行一些自动化任务,例如构建 apk 下载地址 反编译APK 命令格式:apktool d [ apk文件 ...

  7. apk文件反编译d2j-dex2jar.bat/dex2jar.bat遇到的问题

    使用apk反编译软件dex2jar与jdgui时,出现了以下两种情况: I:\Android_decode\APK_decode\dex2jar>dex2jar.bat classes.dexv ...

  8. Python文件反编译,还原代码(xxd、uncompyle6)

    这里有难度的就是如何复制文件的完整内容,如果能直接下载既下载,否则就要用方法完整拷贝内容 首先复制文件的十六进制的内容 xxd命令转换二进制文件为十六进制文件 xxd .configuration.c ...

  9. s19文件反编译成c语言,S19文件反编译器使用说明.ppt

    S19文件反编译器使用说明 S19 decoder Sep 2008 lzbing Decoder Find decoder.exe in codewarrior installation direc ...

最新文章

  1. 一个普通AI程序员的内心独白...
  2. 《STL源码剖析》学习--traits
  3. android 自定义安全键盘,android 实现自定义安全键盘 且每次数字随机变换位置
  4. Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT
  5. P2742-二维凸包/圈奶牛Fencing the Cows【凸包】
  6. python的matplotlib库怎么安装_为Python安装matplotlib库
  7. C++之实现优先队列
  8. java.lang.NoSuchMethodError: org.springframework.web.context.ConfigurableWebApplicationContext.setId
  9. npm ERR! code EINTEGRITY 解决方案
  10. 2022年前端面试宝典【1万字带答案】
  11. 视频教程-C++Windows之WDM驱动程序开发(实战篇)上-驱动/内核开发
  12. java身份证实名认证-身份证二要素实名认证-身份证实名校验-身份证一致性实名认证
  13. 寻中华文化之根 承抗战先烈之志
  14. python读取fits第三方库_如何读取FITS
  15. JavaSE_day02【类型转换、进制、运算符】
  16. 世界杯 叮当 机器人 树莓派_世界杯营销大战,移动互联网谁捧起了大力神杯
  17. Linux内核模块管理
  18. 北京考虑分时分区单双号限行预期效果遭质疑-北京-分时分区-单双号限行
  19. 麦当劳中国推出全新平台“麦麦夜市”;美联航订购5000万加仑可持续航空燃料 | 美通企业日报...
  20. sap 个模块 含义 FI/CO/MM/PP/QM/WM 及其它 分别指什么模块?是干什么用的?

热门文章

  1. Python基本语法的练习题及题解
  2. 数据分析实战 - 超市销售数据分析,csv输入输出(附带样本集)
  3. 学SQL,要安装什么软件?
  4. DingTalk钉钉机器人单聊互动卡片消息的一次实现(附仓库)
  5. c语言能调用refprop软件么,如何用C++6.0调用refprop物性查询软件 - 能源 - 小木虫 - 学术 科研 互动社区...
  6. 计算从指定日期开始的第几周的周几的日期
  7. Python超详细基础教程,从入门到实践
  8. loading页面加载(等待页面加载完毕再隐藏loading页面)
  9. IEEE ACCESS的latex模板中全文\emph{}无法正常显示
  10. 小程序服务器gbk编码,微信小程序实现GBK和UTF-8互转