博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android反编译
阅读量:5348 次
发布时间:2019-06-15

本文共 1327 字,大约阅读时间需要 4 分钟。

目录


概述

Android有多少种反编译方式,我并不清楚,在现阶段,使用一些工具就能做到一键反编译,但是每种工具反编译出的源码都不尽相同,这点值得我思考了,这些工具的反编译原理是什么?是不是各自有各自的侧重?后期搞清楚这些反编译的原理,在写个文章分享。

下面介绍3种反编译的方式:

  • dex2jar + jd-gui
  • jadx-gui
  • apktool

apk编译和反编译流程

android打包流程

.java ------> .class ------> .dex ------> .apk

apk反编译流程

.apk ------> .dex ------> .class ------> .java

dex2jar + jd-gui

反编译出来的是java代码;

工具下载地址

使用流程

1..apk ------> .dex

将apk文件的后缀名改为zip,解压后得到classes.dex文件。

有时候会得到classes.dex ,classes2.dex ... 多个文件,这个是因为Android分包MultiDex机制造成的,我没想出什么好办法合并起来,只能分别做反编译操作即可。

2..dex ------> .class

打开cmd终端,cd 进入到dex2jar 所在目录,输入如下命令 d2j-dex2jar.bat classes.dex
1552062-20190328171249702-1873733953.png

3..class ------> .java

使用 jd-gui 打开 classes-dex2jar.jar 文件。

jadx-gui 在file选项中,点击 Save All Sources 保存源码,得到 classes-dex2jar.jar.src.zip 文件。

将 classes-dex2jar.jar.src.zip 解压,即可得到源码,导入到ide中方便阅读。

jadx-gui

反编译出来的是java代码;

工具下载地址

使用流程

打开jadx-gui-0.8.0.exe后,open打开.apk文件即可。

apktool

反编译出来的是smali代码;apktool不但能反编译,还能重新编译打签名。其实AndroidKiller和ApkIDE改之理这两款反编译的图形工具,底层都是基于apktool实现的,因为我查看它们两个软件的目录里都有apktool.bat;

工具下载地址

使用流程

打开cmd终端工具,输入如下命令

# 先cd进到apktool_2.3.4.jar所在的目录java -jar apktool_2.3.4.jar d -f G:\安装包\APK反编译\物流助手2.0.apk -o OK

解压出来的源码就是当前目录下OK文件夹里面。

重新编译

# 在修改了里面smali代码之后apktool.bat b OK

apktool还能生成keystore 和 对编译好的apk打签名

实战经验

如果碰到dex反编译的时候,比如源文件classes.dex为几M,反编译之后只为几百KB,说明该app经过了加壳处理。

转载于:https://www.cnblogs.com/mysticbinary/articles/10616239.html

你可能感兴趣的文章
C#中Monitor和Lock以及区别
查看>>
【NOIP2017】奶酪
查看>>
$ 一步一步学Matlab(3)——Matlab中的数据类型
查看>>
5.6.3.7 localeCompare() 方法
查看>>
Linux下好用的简单实用命令
查看>>
常用web字体的使用指南
查看>>
描绘应用程序级的信息
查看>>
poj2406-Power Strings
查看>>
2018/12/18 JS会像Linux一样改变编程
查看>>
php环境搭建脚本
查看>>
FTP主动模式与被动模式说明
查看>>
php 编译常见错误
查看>>
MES架构
查看>>
【Python3 爬虫】15_Fiddler抓包分析
查看>>
高性能JavaScript-JS脚本加载与执行对性能的影响
查看>>
关于标签之间因为换行等问题造成的空白间距问题处理
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>