热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Mac上进行安卓反编译

   最近在研究逆向工程,感觉安卓(apk)的反编译还是比较简单的,在这里记录一下,也算是一个简单的教程吧。这里是需要的文件:安卓反编译工具(Mac)下载。   第一步,准备工作。

      最近在研究逆向工程,感觉安卓(apk)的反编译还是比较简单的,在这里记录一下,也算是一个简单的教程吧。这里是需要的文件:安卓反编译工具(Mac)下载。

      第一步,准备工作。下载上面的文件,完成后解压,将apktool目录下的三个文件(aapt、apktool、apktool.jar)复制到/usr/local/bin目录下,这样就已经配置好环境变量了,在终端中使用 apktool 命令查看是否成功,这里用的是目前最新的2.1.1版,如下图。

《在Mac上进行安卓反编译》 复制文件
《在Mac上进行安卓反编译》 使用的是2.1.1版

       第二步,反编译资源文件。任意下载一个安卓App(这里以meilijia.apk为例),记住下载路径,在终端中,用cd命令进到这个apk文件的目录下,再执行apktool d meilijia.apk命令,如下图。

《在Mac上进行安卓反编译》 执行 apktool d 命令

      执行成功后,会在当前目录下生成一个meilijia文件夹,点进去就可以看到相关apk的资源文件了,选中AndroidManifest.xml,然后空格键,就可以预览反编译后的内容了,如下图。

《在Mac上进行安卓反编译》 反编译资源

      第三步,反编译java 源文件。这里要用到dex2jar和jd-gui,将meilijia.apk重命名改成meilijia.zip,然后使用解压缩软件解压,得到一个meilijia-1目录(因为当前目录已经存在meilijia目录了,这个无关紧要),拿到里面的classes.dex文件,将这个文件复制到dex2jar-2.0目录下,如下图。

《在Mac上进行安卓反编译》 解压 meilijia.zip 文件
《在Mac上进行安卓反编译》 复制 classes.dex 文件

      同样,使用cd命令进入dex2jar-2.0目录,执行sh d2j-dex2jar.sh classes.dex命令,成功后会在当前目录下生成一个classes_dex2jar.jar文件,如下图。

《在Mac上进行安卓反编译》 生成 classes_dex2jar.jar 文件

      最后,用jd-gui工具打开这个jar包就可以看到java源代码了,如下图。

《在Mac上进行安卓反编译》 反编译 java 源码

    如果在第三步执行sh d2j-dex2jar.sh classes.dex命令时提示类似“d2j-dex2jar.sh: line 36: ./d2j_invoke.sh: Permission denied”的错误,可以执行sudo chmod +x d2j_invoke.sh命令来增加可执行权限。

      如果上面的文件链接不可用,这里附上备份地址:安卓反编译工具(Mac)下载。

      至此,全部步骤结束。另外,在Windows上反编译apk比较简单,这里推荐一个很强大的工具:ApkIDE。


推荐阅读
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
author-avatar
疯疯癫癫丶是一种掩饰_954
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有