之前做过反编译apk文件的,原本想的就是应该做下总结的,后来。。。不知道后来发生了什么,一定不是因为我懒了。总之,今天领导让我研究下一个口碑比较好的app,看下它某个功能怎么实现的,用的什么技术,又扒拉了半天才找好工具去查看,就觉得还是有必要做个总结的。废话少说,下面开始:

此次主要用到了三个工具,dex2jar,JD-GUI,apktool,其实还有一个windows下的批处理工具,最近已经和apktool打包到一起了,下面说说这几个工具具体怎么用。

先附上下载地址,以免你们像我一样又找了好久:

dex2jar下载链接: https://pan.baidu.com/s/13_IKg7AMBOzfeUbSNOsCPw 密码: 4f83

JD-GUI下载链接: https://pan.baidu.com/s/17zTC28C7oDKmUpvmb9eBnQ 密码: 4fmi

apktool下载链接: https://pan.baidu.com/s/1xECSBEvcVSbi7EBqz7T_VA 密码: qsij

三个工具一起打包下载地址http://download.csdn.net/download/yeluofengchui/10272356

以上地址长期有效,如果下载失败请私信我或者下面留言。

第一步:首先呢,拿到一个apk直接拿解压缩工具解压了,就能看到如下图所示的工程目录结构

lib下有引用的三方类库(.so资源),.java代码和.jar中的代码都被压缩到了classes.dex中了,res和assets中有想要的资源等。这个时候去打开AndroidManifest或者res中的layout、string等.xml资源,一定会看到一堆乱码,这个时候我们需要用到的是apktool。

第二,使用apktool反编译xml文件

将下载的apktool压缩包解压出来的三个文件aapt.exe,apktool.bat,apktool.jar放到同一个文件夹,把这个文件夹也放到系统盘的根目录中并把这个目录加到path变量中。PS:其实放哪里都行,重点是添加到系统的环境变量中方便调用;另外,这些文件夹包括后面其它文件的目录,都要采用英文,以免不必要的麻烦。在DOS命令行中输入:apktool d xx\yy.apk yy,得到yy文件夹,此文件夹中的xml文件就是编译好的可以正常查看的文件。包括strings.xm,AndroidManifest.xml等文件都可以正常查看了。

第三,使用dex2jar反编译dex文件

下载的dex2jar的压缩包解压后,会发现这个压缩包里可不止dex2jar,还有jar2dex的反向编译等工具,

然后,也将这个文件夹目录加到系统path变量中,就可以直接用:dex2jar.bat或dex2jar.sh转换dex文件了。

DOS行命令如下:d2j-dex2jar.bat  xx\classes.dex(xx是classes.dex文件所在的路径)。

生成的jar如图所示

然后反编译jar包

得到jar包后,下载自已喜欢的反编译工具,推荐使用JD-GUI,有比较简单的图形界面,可以反编译单个class文件,也可以反编译jar包,比较方便。

打开压缩文件JD-GUI,运行jd-gui.exe,打开上面生成的jar包,即可看到源代码了。截图如下:

文章来源:https://www.jianshu.com/p/1913695de091

反编译apk文件查看源码,反编译apk获取资源相关推荐

  1. 如何反编译apk文件得到源码和XML文件

    相信很多开发者都知道反编译APK,正常情况下,如果我们想要看看xml,看看java源代码,是看不了的.用压缩工具解压apk得到的文件也都是二进制文件,打开后全是乱码. 开发者能够用的也仅仅是图片资源, ...

  2. android源码编译烧鸡,android4.0源码下载 编译 系统体验~图解

    近来着眼于ANDROID4.0的关注与研究,第一时间把ANDROID4.0源码下 下来了,只是时间问题,所以没能第一时间把过程记录下来,今天算是富裕点时间就给写下来,希望能给灼热于ANDROID继续平 ...

  3. linux从源码编译软件,linux软件源码的编译安装

    软件包的组成: 1二进制文件/bin,/sbin /usr/bin ,/usr/sbin /usr/local/bin /usr/local/sbin 2库文件 /lib, /usr/lib /usr ...

  4. 源码包编译安装python_Python3.7源码包编译安装-Go语言中文社区

    环境: [root@localhost python3]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@loc ...

  5. linux编译安装含义,linux源码包编译安装详解

    linux下安装软件包有两种方法:源文件编译安装(source)和 rpm 安装. 1.源文件包安装的通用方法. 一般安装源代码的程序你得要看它的README,一般在它的目录下都有的. 01.配置: ...

  6. 源码下编译APK,却是总是提示,找不到符号:SystemProperties 。。。

    >>>>>在DeskClock下任意一个java文件中,import android.os.SystemProperties;然后添加user库,将layoutlib.j ...

  7. Python GUI制作实例 wxPython使用多线程 防假死含wxFormBuilder的文件及源码

    wxFormBuilder使用的教程较少,网上的文件源码也少. 最近使用 python 写了一个GUI,可以打开设置文件,并对xlsx文件进行处理,可以将部分信息输出到gui界面,像print输出到c ...

  8. nacos源码修改编译(亲测)

    nacos源码修改编译 文章目录 nacos源码修改编译 内容概述 源码修改 源码编译 测试 内容概述 生产项目选型时选择nacos作为项目的注册中心,但是由于内网安全要求,用户名和密码必须加密传输, ...

  9. 使用java反编译查看java生成的exe文件的源码

    第一次写博客,也些有些问题. 上网下载一个java反编译软件,我使用的是jd-gui这款软件. 在编译时,不能直接用编译软件打开exe执行文件,有些软件是可以打开的,不过显示的是汇编代码. 首先打开e ...

最新文章

  1. demo解析 小程序node.js_小程序-demo:小程序示例
  2. Android 中文API (91) —— GestureDetector
  3. 这些你都了解么------程序员跳槽法则
  4. 【PC工具】200324更新百度网盘下载工具——最新百度网盘下载工具使用方法及注意事项...
  5. Avalonia-.NET 的跨平台 UI 框架
  6. Linux计算求取文件长度
  7. java学完jdk后学什么_学完了javase之后要学什么?
  8. JS-面向对象-This的指向---简单的函数调用 / 作为对象的方法调用时 / 作为构造函数调用时
  9. 学习MySQL,怎么能不会数据类型和schema优化!
  10. [转]写一个块设备驱动(第一章)
  11. 【渝粤教育】国家开放大学2018年秋季 1058t商法 参考试题
  12. 干了4年程序员年薪20万,高中同学当牙医,对比收入后懵了
  13. 安信可IDE 1.5编译ESP8266 RTOS 3.0
  14. 从头到尾彻底理解KMP(转载自July)
  15. cocos2d-x 从win32到android移植的全套解决方案
  16. hostent实例详解
  17. Android图片压缩、加水印
  18. traceroute的工作原理
  19. 官方解释:Windows Vista和OpenGL
  20. 前端多次绑定click的坑

热门文章

  1. ArcMap 制图教程 : 中国人口分布图制图完整步骤
  2. 关于业务用例和系统用例区别
  3. 画册印刷的3项注意事项
  4. springboot项目如何访问项目中的html页面
  5. python装饰器的十种用法
  6. 【软件工程】软件设计概述
  7. iframe的简单使用
  8. 运动耳机也有降噪?飞利浦降噪真无线耳机A7507开箱
  9. 惠普p2055dn怎么停止打印_惠普LJ2055激打 设置和更改ip地址详解
  10. selenium模拟登录示例