• 概述
    作为android的开发者,相信你会有那么一刻,比如,对于手机中某一款App,有一项功能或者效果你蛮喜欢的,想学习一下它具体是怎么实现的。追求高一点的话,我想深究它这个App的项目架构,本着一探究竟的原则,我需要查看工程的源代码。
  • 所需工具
    apktool:由apk获得dex文件
    dex2jar:dex文件反编译成java包
    jd-gui:查看jar文件的java源码
  • 过程
    网上下载一个**.apk文件,解压缩后可看到以下几个目录

    其中res里的图片我们可以拿来用,但是xml等资源文件是经过优化的,我们并不能直接查看,classes.dex是android系统直接运行在dalvik虚拟机上的文件,我们也不能直接查看到里面的内容。
    目前有很多反编译apk的工具,我选择了APKTool,由google提供的反编译以及回编译apk,同时安装反编译系统apk所需要的framework-res框架,清理上次反编译文件夹等功能的一款工具。需要java的支持。
    我是在http://ibotpeaches.github.io/Apktool/网站下载的,虽然有很多软件站有下载,但很难找到最新的,我推荐大家以后下载软件尽量到官方推荐的网址去下载,有时遇到什么软件操作使用问题,版本区别对待问题,官网上都会有一个很好的解释。我下载的是目前最新版:apktool-2.0.2.jar(不过而2.x和1.x版本安装是有区别),重命名为apktool.jar,
    将这段文本 @echo off
    if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
    set PATH=%CD%;%PATH_BASE%;
    java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
    另存为apktool.bat文件。将这两个文件放至系统盘或者配置环境变量将文件路径映射到path,这样你在cmd里运行apktool命令就能查看是否配置成功了!(该方式只适用于windows)
    下面我们cd到apk所在路径并运行apktool d xx.apk命令,此时图说话看看与解压缩后的文件有啥不一样的,现在你可以看到清单文件和res文件的具体内容了,不过我想看源文件呢,我点进smali文件夹,咦,好熟悉的包名,不过后面咋全是以.smali为后缀的文件呀(关于smali大家可以自行百度,它是android字节码的反汇编语言),我想看.java源码啊(细心的你可能会去看smali文件内容,稍微了解语法你就能推测出源码的大致内容)!好吧,我们还得依靠其它工具,网上工具比较少,没有具体的官网,比如smali2java,这样就能看到源码呢,不过它有局限性,对于数字型数据的是16进制的,可能还有其他弊端吧,我是用的另外一种方式。
    跳过上一个步骤,我们可直接对classes.dex文件进行反编译,接下里我们使用dex2jar工具,大家可以去http://sourceforge.net/projects/dex2jar/下载,解压dex2jar-2.0.zip,运行cmd进入d2j-dex2jar.bat所在目录,输入命令:d2j-dex2jar.bat XXX(XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称),命令完成后便会生成classes-dex2jar.jar文件(不同版本名字会有所差异),此时此刻,相信你对jar感到很熟悉,没错,对于java包,相信你可以查看了,用JD-JUI工具就可以直接打开并查看整个工程的源码啦啦啦~~~
  • 总结
    其实吧,反编译过程算是简单,只不过看了网上其它的操作流程都是记录的老版本的操作流程,也没有具体的汇总,所以自己花了一些时间找资料,找来找去,还是官网靠谱。至此,我希望大家养成一个从官网上去查资料的好习惯,最新的是最好上手的。好吧,第一次写博客,花的时间有点久,排版什么的都不熟练,嗯,吾将上下而求索。

对Android APK文件反编译查看其源码相关推荐

  1. android apk 文件反编译

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

  2. 转: android apk 防止反编译技术(1~5连载)

    转: android apk 防止反编译技术 做android framework方面的工作将近三年的时间了,现在公司让做一下android apk安全方面的研究,于是最近就在网上找大量的资料来学习. ...

  3. android apk 防止反编译技术第三篇-加密apk

    经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术和运行时修改字节码,如果有不明白的可以查看我的博客的前两篇中关于这两种技 ...

  4. android apk 防止反编译技术第三篇-加密

    经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法.前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blo ...

  5. android apk 防止反编译技术加壳技术(转)

    2019独角兽企业重金招聘Python工程师标准>>> 一.加壳技术原理 所谓apk的加壳技术和pc exe的加壳原理一样,就是在程序的外面再包裹上另外一段代码,保护里面的代码不被非 ...

  6. Android APK包反编译详细步骤教程

    下载安卓apk包反编译软件: https://download.csdn.net/download/LordForce/87485642 1. 解压 dex2jar-2.0.rar 文件. 2. 将 ...

  7. apk文件反编译成android代码

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

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

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

  9. Android odex文件反编译

    odex 是经过优化的dex文件,且独立存在于apk文件.odex 多用于系统预制应用或服务.通过将apk中的dex文件进行 odex,可以加载 apk 的启动速度,同时减小空间的占用.请参考ODEX ...

最新文章

  1. mysql教程左右链接_mysql的左右内连接用法实例
  2. python tab键自动补全_Python Tab自动补全
  3. 30张图 讲述真实的人性
  4. Python代码加密,将python文件编译成so文件
  5. oracle 索引回表,oracle 索引简单总结
  6. 富文本编辑器:Typora(编辑与预览一体化)
  7. 苹果侧边滑动返回_后置指纹、侧边指纹、屏幕指纹到底哪个更好用? 来讨论一下!...
  8. 走向ASP.NET架构设计--第一章:走向设计
  9. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!
  10. Python+OpenCV:图像修复(Image Inpainting)
  11. MySQL数据库优化的几种方式
  12. 如何在linux系统开发gd32,对于GD32VF103一些想法
  13. 各种文件后缀名与打开方式大全
  14. STM32学习笔记——HC05
  15. 中台详解(上)-什么是中台
  16. Flutter 电子签名
  17. js版身份证省市性别查询
  18. PDF里面复制出来的文章,在word里去掉回车符
  19. Android中JNI开发之常见错误
  20. 关于trunk的几个端口模式

热门文章

  1. 【机器学习百科全书思维导图】PRML ESL MLAPP 西瓜书 花书 RLAI 统计学习方法 蒲公英书
  2. 应聘求职自荐信优秀范文5篇
  3. Dockerfile构建镜像最佳实践
  4. python中wxpython_wxPython和VPython中的程序
  5. Fanuc数据控机床数据采集Focus2基于c#的数据采集
  6. 好书好人生--读书的步骤
  7. 计算机病毒进化趋势,计算机病毒的遗传自进化研究预测.doc
  8. 十二天宫之摩羯篇(一)——一个冷酷的星座
  9. 数据分析之共同好友统计
  10. 海康SDK对接系列教程(一)- 总览