linux下反编译android apk

【自取】最近整理的,有需要可以领取学习:

1、所需要的工具

1)apktool,功能:反编译出apk所需要的资源文件和布局设置文件等,

下载地址:https://code.google.com/p/android-apktool/downloads/list

需要下载apktool1.5.2.tar.bz2 和apktool-install-Linux-r05-ibot.tar.bz2 这两个文件,并把解压后的文件放在同一个文件夹中。

2)dex2jar,功能:反编译出jar文件,即apk的源程序文件的字节码,

下载地址:http://code.google.com/p/dex2jar/downloads/list

3)jdgui,功能:查看dex2jar反编译出的jar文件,使用该工具可以看到字节码对应的Java源代码,这个我在官网上没有找到,然后自己在网上下载的,但试验过能用。点击打开后,如下图所示:

2、反编译过程
1)反编译出资源文件
使用apktool工具,进入apktool所在的目录下,使用如下的命令:
./apktool d ./xxx.apk(apk所在的路径)

d表示decode,在当前目录下就会生成一个名为xxx的目录,里面就是反编译出来的各种资源文件,其中res 表示资源文件,smali 表示源代码,不过是字节码,不能直接查看。

以本人的实验为例子,如下图所示:

linux下反编译android apk

此时会在当前目录下生成一个目录app-debug。

2)源代码的反编译
a)因为apk文件其实是使用zip进行打包压缩生成的文件,所以先把xxx.apk文件改名为xxx.zip文件,并对其进行解压。
b)进入解压后的目录,其中有一个classes.dex文件,这个文件就是java文件编译再通过dx工具打包而成的,源代码就包含在这个文件中。
c)把前一步生成的文件classes.dex复制到dex2jar工具的根目录中,并使用如下命令对其进行反编译:
./dex2jar.sh d classes.dex
就会在当前目录下生成一个classes_dex2jar.jar文件

d)点击打开jdgui工具,这是一个图形化的工具,然后打开上上述的classes_dex2jar.jar文件就可以看到apk对应的源代码。

对于本人的实验如下:

源代码与反编译后的代码比较如下(反编译后的内容为白色,原始内容为黑色):

[En]

The source code is compared with the decompiled code as follows (white for decompiled content, black for the original content):

Original: https://www.cnblogs.com/kluan/p/6047332.html
Author: Nicat
Title: linux下反编译android apk

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10136/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部