Android 将 apk 反编译为源码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 将 apk 反编译为源码相关的知识,希望对你有一定的参考价值。

参考技术A 将 apk 解压,在解压后的文件夹中可以找到 classes.dex 文件。(除了 classes.dex 文件,可能还会有 classes2.dex , classes3.dex 等等,本文以 classes.dex 为例,对其他几个 dex 文件的操作是类似的)

使用 dex2jar 工具,将 dex 文件转换为 jar 文件

使用方式:

执行命令后,生成的 classes-dex2jar.jar 就是我们需要的 jar 文件。

使用 Luyten 工具查看 jar 文件,就能看到反编译后的源码了。

本例中, classes.dex 文件中存储的是 android 的一些基础库,实际编写的源码在 classes3.dex 中,对 classes3.dex 执行第二步,查看生成的 classes3-dex2jar.jar 文件,可以看到如下内容:

这就是反编译 apk 的基本操作了。

Cmder 是一个非常好用的命令行工具。

效果如下:

只需要执行 apk2jar 命令,就可以实现把 apk 解压到 apk_ 文件夹中,并将 apk_ 文件夹中的 classes.dex 文件转换为 jar 。原理就是通过 Cmder 添加别名,把上述的第一步和第二步中执行的命令行组合起来了。

为 Cmder 添加别名很简单,编辑 Cmder安装目录\config\user_aliases.cmd 文件,将别名添加到里面即可。本例添加的别名如下:

其中:

将 EXE 反编译为 ASM

【中文标题】将 EXE 反编译为 ASM【英文标题】:Decompiling EXE to ASM 【发布时间】:2009-10-22 10:00:41 【问题描述】:

我想在空闲时间制作一个基本的防病毒软件。 基本上我了解了EXE(windows)文件的基本结构。 如何从文件和 PE 头中提取 ASM 代码?

【问题讨论】:

你为什么认为,杀毒软件中需要反汇编程序?? 那么我将如何检测病毒部分呢? @zxcat 你会怎么做呢? 【参考方案1】:

你可以安装Cygwin并使用objdump将一个exe反编译成asm。确保在安装 cygwin 时选择 binutils。安装 cygwin 后,您可以从 bash shell 运行以下命令:

objdump -Slx yourpgm.exe

【讨论】:

是的,或者在虚拟机上运行 Linux 并在那里使用 objdump。听起来像是黑色幽默;)【参考方案2】:

您可以使用一些免费的分布式反汇编程序。例如:ollydbg diassembler。

注意:PE 标头中只有一些 MS-DOS 存根可执行代码。

【讨论】:

"PE 标头中只有一些 MS-DOS 存根可执行代码。"如果没有呢?你永远不知道病毒会选择隐藏在哪里,而且标头也会加载到内存中,对吧?

以上是关于Android 将 apk 反编译为源码的主要内容,如果未能解决你的问题,请参考以下文章

安卓apk反编译

为啥将class反编译为java后,java直接编译时有错误

反编译 APK 上的 .smali 文件 [重复]

Android APK 反编译工具 JADX

java 反编译

安卓apk反编译修改重新打包签名全过程