Android反编译apk逆向分析

Android反编译apk逆向分析

反编译、逆向

反编译 高级语言源程序经过 编译 变成可执行文件,反编译就是逆过程。
  但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。
  计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
  反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但目前还是有许许多多的反编译软件:
  VB: VBExplorer ;只能反编译界面图像,好像代码不能完全反编译
  JAVA: JAD ;java的反编译比较常见,所以反编译比较完全
  C++ : eXeScope
  Dephi: DEDE

软件下载地址

我们对Android apk文件操作,准备工具
共需要四个小软件

1.获取dex
将demo.apk修改后缀为demo.zip(ren命令或者属性直接修改后缀)并解压。得到以下文件:
在这里插入图片描述

2.反编译dex
L3FxXzMzNzIxMzIw,size_27,color_FFFFFF,t_70)
3.解压dex2jar至指定目录,打开cmd至dex2jar目录,执行命令 dex2jar.bat 目录\classes.dex(有些版本中命令不是dex2jar.bat,而是d2j-dex2jar.bat),如图:

可以看到在dex2jar的目录下生了一个文件classes-dex2jar.jar
在这里插入图片描述

4.反编译jar文件,使用JD-GUI查看源代码:
解压JD-GUI文件,打开JD-GUI.exe,将上一步生成的classes-dex2jar.jar文件拖动至JD-GUI窗口,可以看到如下图,代码已经可以查看
在这里插入图片描述

反编译xml资源文件

4.使用apkTool反编译apk文件获取xml
源代码可以查看了,但是xml文件打开还是乱码,使用另外两个工具可以反编译xml文件。
将工具中的apktool-install-windows解压,与apktool.jar存放至同一目录,如图:
在这里插入图片描述

apktool目录下执行命令:apktool d [-s] -f <apk路径> -o <文件输出目录>,如下:

在这里插入图片描述

demo2文件夹中生成的文件如下:

在这里插入图片描述

打来AndroidManifest.xml或者res中的xml文件,就不会乱码啦。

注意事项:
路径中最好不要有中文、空格和特殊的符号。
工具的版本不用可能会有微小的差异,需要自已辨别。apktool百度网片连接各个版本都有。
有些apk使用了proguard,毕竟大家都不想自己的东西随便被人拿走,这种apk并不能完全被反编译,反编译出来后的代码如图:
在这里插入图片描述
可以看到代码中的包名、类名、方法名都变成了a、b、c等,比较影响阅读。
常见问题:
apkTool报错 : Error: Unable to access jarfile \xx\apktool.jar

确保命令中的路径正确,最好无中文和空格

确保文件中夹中包含apktool.jar (即使是apktool2.0.jar也要改成apktool.jar

Input file was not found or was not readable.
通常是apktool版本问题,如果你使用的命令是apktool d <apk路径> <输出目录>
请试一下apktool d [-s] -f <apk路径> -o <输出目录>

Destination directory (C:\Users\user\a) already exists. Use -f switch if you want to overwrite it.
根据提示可以知道使用 -f 覆盖已存在的目录,也可以指定其他目录。
Exception in thread “main” brut.androlib.AndrolibException: Could not decode ars c fil……….
apktool版本过低,升级即可。

书到用时方恨少,纸上得来终觉浅!共同进步!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115045.html原文链接:https://javaforall.net

(1)
上一篇 2021年9月30日 下午4:00
下一篇 2021年9月30日 下午5:00


相关推荐

  • Scala Hello 示例

    Scala Hello 示例

    2021年12月17日
    57
  • @ResponseBody注解作用与原理「建议收藏」

    @ResponseBody注解作用与原理「建议收藏」1、概念注解@ResponseBody,使用在控制层(controller)的方法上。2、作用作用:将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。如果返回值是字符串,那么直…

    2022年5月8日
    90
  • java枚举类型enum用法(java定义枚举常量类)

    文章目录枚举类的使用如何定义枚举类方式一:jdk5.0之前,自定义枚举类方式二:jdk5.0,可以使用enum关键字定义枚举类Enum类的主要方法toString()values()valueOf(StringobjName)使用enum关键字定义的枚举类实现接口的情况情况一:实现接口,在enum类中实现抽象方法情况二:让枚举类的对象分别实现接口中的抽象方法枚举类的使用枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类当需要定义一组常量时,强烈建议使用枚举类如果枚举类中只有一个对象,则

    2022年4月16日
    40
  • 一款小清新版的java代码生成器,springboot脚手架「建议收藏」

    一款小清新版的java代码生成器,springboot脚手架「建议收藏」在我们进行软件开发的时候,很多都只是单纯的增删查改,没有太大的技术含量但是却非常占据我们开发的时间,而且如果稍微一不注意,细节的bug就可能耽误一上午的时间,得不偿失,届于此,自己动手开发了一版代码生成器,java在代码自动化方面做得确实不够好,瞧瞧人家.net,算了,不说了,进入正题吧!首先让我们看一下这款生成器的界面整体…

    2022年5月13日
    46
  • 误删?格式化?恢复出厂设置?拿什么拯救你的数据?

    误删?格式化?恢复出厂设置?拿什么拯救你的数据?现如今 手机已经成为人们日常生活中不可或缺之物 然而 在使用手机的过程中 我们经常会因为误删 手机恢复出厂设置 内存卡格式化 刷机失败 病毒攻击 系统升级 手机浸水或屏幕破碎等原因而丢失许多重要的数据 而在这个大数据时代 手机里的数据对我们的重要性是不言而喻的 所以无论碰到哪种情况 对于我们来说都是巨大的损失 但是 手机并不具备像 Windows 一样的回收站功能 不会自动保存你删除或丢失的文件 所以

    2026年3月18日
    2
  • 值得推荐的五个源码网站[通俗易懂]

    值得推荐的五个源码网站[通俗易懂]CSDN下载-IT资源大本营CSDN下载是一个提供学习资源、源码、在线学习视频、IT电子书、各类免费软件等下载服务的IT资源大本营,致力于为软件开发者提供知识传播、资源共享、共同学习的优质学习资源平台·码云Gitee.com是OSCHINA.NET推出的代码托管平台,支持Git和SVN,提供免费的私有仓库托管。目前已有超过500万的开发者选择Gitee。·Github作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,G

    2022年7月20日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号