Android APK文件的逆向反编译

APK是Android Package的缩写,即Android安装包(APK)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。

APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。

APK反编译就是通过使用APK反编译工具将APK文件中的源文件和资源反编译出来,得到的源文件和资源文件可以进行处理后再进行编译,以达到系统解剖分析,个性化定制,汉化等目的。

APK反编译有很多工具,本次实验中我们使用dex2jar工具。dex2jar 是一个用来将 Android 的 Dalvik Executable (.dex) format 文件转成 Java 类文件的工具。该项目地址是:http://code.google.com/p/dex2jar/

针对JAR包的java反编译工具,我们使用jd-gui工具。jd-gui是针对Java平台的反编译工具,它可以将Java的字节码文件(class文件)反编译获得java文件。反编译得到的代码是非常接近于源代码,但是或多或少与源代码有一些差异,这点需要使用时注意。

实验步骤一

文件解压

进入实验环境,在C盘根目录“APK逆向分析实验”文件夹下找到SD-Booster_1.5.2.apk文件。将文件重命名为zip后缀。然后使用WinRAR程序将文件解压。

实验步骤二

获得JAR包

要从APK文件获得JAR包需要使用专门的工具dex2jar。dex2jar 是一个用来将 Android 的 Dalvik Executable (.dex) format 文件转成 Java 类文件的工具。

首先在C盘根目录“APK逆向分析实验”文件夹下找到dex2jar-0.0.9.15.zip文件,将其解压。

将APK文件解压获得的classes.dex文件放到dex2jar解压后的文件中。如下图示。

然后在该目录下进入Windows命令行窗口。输入命令:

d2j-dex2jar classes.dex

执行完成后,在相同目录下得到JAR包。

实验步骤三

源代码分析

要从JAR包进行源代码分析,需要使用反编译工具jd-gui。jd-gui是针对Java平台的反编译工具,它可以将Java的字节码文件(class文件)反编译获得java文件。

首先在C盘根目录“APK逆向分析实验”文件夹下找到jd-gui文件,双击打开。将JAR包拖入jd-gui窗口,将自动对JAR包进行反编译。

此时,你可以从jd-gui对JAR包中的文件逐个分析

原文地址:https://www.cnblogs.com/ahacker15/p/12228873.html

时间: 2024-08-03 18:06:59

Android APK文件的逆向反编译的相关文章

Android APK XML解析与反编译方法

APK中的XML为何不能直接打开,是否只是简单的二进制文件,难道被加密了?为什么AXMLPrinter2反编译的时候竟然报错了,如何解决? java.lang.ArrayIndexOutOfBoundsException: 128 at android.content.res.StringBlock.getShort(StringBlock.java:231) at android.content.res.StringBlock.getString(StringBlock.java:91) at

.Net 转战 Android 4.4 日常笔记(7)--apk的打包与反编译

apk(android package)就是我们安卓系统的安装文件,可以在模拟器和手机中直接打开安装,从项目中打包apk有几种方式可取 一.最简单的方法(类似我们的winfrom) 只要我们调试或者运行过项目,在项目下的bin debug下就有同名apk文件了(Eclipse)下是这样的.在Android下变成了\app\build\apk下了 当然我们不能把这个apk放在商店.没有签名会被人家的apk替换 二.签名发布 1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过

『原』在Linux下反编译Android .apk文件 使用apktool dex2jar JD-eclipse

一.使用apktool 将 apk反编译生成程序的源代码和图片.XML配置.语言资源等文件 具体步骤: (1)下载反编译工具包:apktool 官方的打不开 http://apktool.shoujifans.com/2014/12/21.html 里有网盘下载 需要下载下边两个文件 apktool1.5.2.tar.bz2 apktool-install-linux-r05-ibot.tar.bz2 (2)将下载好的两个包解压到“同一个”文件夹apktool里面. 注意是同一个 (3)在命令行

android apk 文件反编译

最近,自己坑逼的把一个android 项目修改版本的代码删除了.这个项目居然还没上传到源代码管理器.幸好还有apk文件,修改的代码也不多可以反编译一下. 1.下载 dex2jar  获取源码工具  地址:https://sourceforge.net/projects/dex2jar/   下载 jd-gui     查看源码工具     地址:http://jd.benow.ca/ 2.解压 dex2jar  . 3.修改 apk 文件后缀为 .rar 或 .zip ,然后解压文件,找到解压文

Android对apk源代码的改动--反编译+源代码改动+又一次打包+签名【附HelloWorld的改动实例】

最近遇到了须要改动apk源代码的问题,于是上网查了下相关资料.编写了HelloWorld进行改动看看可行性,经过实验证明此方案可行,而且后来也成功用这种方法对目标apk进行了改动,仅仅只是须要改动的部分比HelloWorld复杂些,可是仅仅要了解下smali也能进行相关的改动,以下讲下详细的步骤,文中所用到的资源会在文章的结尾给出,感兴趣的能够下载试试. 首先介绍下要用到的工具: jdk:这个不用多说了 baksmali:把classes.dex转为为smali文件的工具 dex2jar:cla

APK中java代码反编译

Android APK中的Java代码可以被反编译到什么程度主要看APK的加密程度. 第一种情况:无混淆无加密无加壳.直接利用Dex2jar和JD-GUI可把源码从APK里抠出来,代码逻辑清晰,基本上做到可复用,只是资源文件的引用需要计算一下. 第二种情况:混淆.通常是利用Proguard做的防护.因为是对jar做的不可逆混淆(除非有mapping),因此不能还原成原来的代码.但是代码结构,代码逻辑一致,只要花长时间对代码进行梳理一样可找准核心代码,解密方法跟第一种一致. 第三种情况:加密.这里

Android安全攻防战,反编译与混淆技术完全解析(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情.不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了.另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术.那么最近的两篇文章我们就围

android 如何防止代码被反编译

作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用. 在工程的"default.properties"中添加这样一句话

Android学习:签名与反编译

1:为什么要apk签名 AndroidManifest.xml下面 package="com.example.helloworld" 定义一个apk程序. 如果另外一个程序用相同的包名安装,就会覆盖之前的应用. 需要进行apk签名: 为了保证每个应用程序开发商合法Id,防止部分开发商可能 通过使用相同的Package Name来混淆替换已经安装的程序, 我们需要对我们发布的APK文件进行唯一的签名,保证我们 每次发布的版本的一致性.(如自动更新不会因为版本不一致而 无法安装) 2:如何