`

反编译android部署程序

阅读更多

反编译android部署程序

 

 

key words:反编译.apk,反编译android程序

因为学习Android编程的需要,我们有的时候要对网络上发布的项目进行学习,可是Android程序一般是通过apk发布的,我们看不到源代码,嘿嘿,办法总会有的,而且还不止一个... 

 

方法一: apk—>dexàjaràjava (推荐)

1.下载dex2jar,下载地址(见附件):

http://code.google.com/p/dex2jar/downloads/list 

2.下载class反编译工具jad,

下载地址(见附件):

http://www.119.xdowns.com/uploadFile/2010-8/jd-gui-0.3.3.osx.i686.zip 3.使用winrar解压缩.apk文件.我们可以看到classes.dex文件。这个就是Android虚拟机Dalvik支持的字节码文件。 

4.cmd下进入dex2jar.bat所在路径,输入dex2jar.bat D:\project\classes.dex 回车。其中D:\project\classes.dex就是你的classes.dex所在的目录。 

5.然后classes.dex同级目录下会生成一个classes.dex.dex2jar.jar文件 

6jad工具将打开这个jar文件,你就可以看到这个jar文件里面的代码了。而且可以直接保存为java文件。 

 

 

方法二:(推荐)

Apk->加密的XML->解密的XML

apk—>dexàsmali

 此外,上面操作只能得到java代码但是我们可能还需要一些XML文件,APK文件解压缩后,发现其中的XML文件都是经过处理过的,看不到源码。

下面利用Google提供的apktool来获取xml文件 

1. 下载apktool,可以去Google的官方下载(见附件),

地址:http://code.google.com/p/android-apktool/

apktool-1.0.0.tar.bz2apktool-install-windows-2.1_r01-1.zip两个包都要下。

2.解压这两个下载到的文件某个文件夹(例如E盘根目录)。 确保解压缩后得到的aapt.exe,apktool.bat,apktool.jar在同一个文件夹下。

3.将要破解的.apk文件也放入到这个文件夹中来。

4.运行CMD,用cd命令转到这几个文件所在文件夹,输入apktool,假如列出一些帮助的话就成功了(解释d为加压 第一个路径为你的apk所在的位置。第二个是要输出的位置) 
apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC (必须确保当前目录下没有ABC这个文件夹,否则会报错)

5解压后的文件夹中可以得到apkxml配置文件。是不是很熟悉呢。呵呵。

其实用这个方法会得到一个smali文件夹,进去看,用记事本打开其中的一个.smali文件,通过解读里面的信息,就可以一窥代码的全貌,就是有点费力。下面我们通过一个实例来对比一下.smali.java源代码的对照吧:

ApkInstaller.smali文件:


.class public Lcom/tutor/apkinstaller/ApkInstaller;  

.super Landroid/app/Activity;  

.source "ApkInstaller.java"  

# instance fields  

.field private apkWeb:Landroid/webkit/WebView;  

# direct methods  

.method public constructor <init>()V  

    .registers 1  

    .prologue  

    .line 8  

    invoke-direct {p0}, Landroid/app/Activity;-><init>()V  

    return-void  

.end method  

# virtual methods  

.method public onCreate(Landroid/os/Bundle;)V  

    .registers 5  

    .parameter "savedInstanceState"  

    .prologue  

    .line 13  

    invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V  

    .line 14  

    const/high16 v2, 0x7f03  

    invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V  

    .line 15  

    const/high16 v2, 0x7f05  

    invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View;  

    move-result-object v2  

    check-cast v2, Landroid/webkit/WebView;  

    iput-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;  

    .line 16  

    iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;  

    invoke-virtual {v2}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;  

    move-result-object v1  

    .line 17  

    .local v1, webSettings:Landroid/webkit/WebSettings;  

    const/4 v2, 0x1  

    invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V  

    .line 19  

    const-string v0, "http://frankiewei.net/apk/demos/main/index.html#home"  

    .line 20  

    .local v0, apkUrl:Ljava/lang/String;  

    iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;  

    invoke-virtual {v2, v0}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V  

    .line 21  

    return-void  

.end method  

 

ApkInstaller.java的源代码如下

 

package com.tutor.apkinstaller;  

import android.app.Activity;  

import android.os.Bundle;  

import android.webkit.WebSettings;  

import android.webkit.WebView;  

public class ApkInstaller extends Activity {  

     

    private WebView apkWeb;  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

       apkWeb = (WebView)findViewById(R.id.apk_web);  

       WebSettings webSettings = apkWeb.getSettings();  

       webSettings.setJavaScriptEnabled(true);  

        

       String apkUrl = "http://frankiewei.net/apk/demos/main/index.html#home";  

       apkWeb.loadUrl(apkUrl);  

    }  

}  

 

呵呵,通过两者的对比是不是有所感悟呢。的确有点麻烦。所以推荐大家采用方法一来得到java代码,用方法二来获取xml文件。这样就可以获取整个工程的代码了。

但有的时候方法一可能会出错,笔者就曾经遇到过这种情况,这个时候只能用方法二了。

此外介绍另外一种方式,这个方式得到的代码还不如方法二清晰,但是还是介绍一下吧。

 

方法三:apk—>dex->ddx 

ddx文件虽然不能看到源代码,但是可以看出类的结构。有的时候用第一种方法可能不一定能得到源代码,这个时候就用第二种方法来补救吧...

Dedexer 项目主页(见附件): http://dedexer.sourceforge.net/ 

下载地址也在这个网站上。下载后的文件为ddx1.11.jar(目前最新版本为1.11) 

1. 运行CMD 进入ddx1.11.jar的目录,输入如下命令: D:\WINDOWS\system32>java -jar ddx1.11.jar 

2. 出现如下提示 

Usage: java -jar ddx.jar -o -D -r -d <destination> <source> 

<destination> :指定生成的文件放置的目录 

<source> :dex源文件

-D - 指定生成错误信息

-o - 指定生成日志文件(dex.log). 

3.仔细阅读上面的信息,根据:

java -jar ddx1.11.jar -o -D -r -d <destination> <source> 

按此提示,输入: java -jar ddx1.11.jar -o -D -r -d c:\dex\gen c:\dex\classes.dex 4.运行成功,gen 目录生成了ddx 文件.用文本编辑器打开,可看到类大致结构.

 

 

附件一:是目前最新版的java反编译工具,超好用;

  昵称:狂飞

                                                    QQ:18670340

                                                    MSN:zhaojun1717@hotmail.com

                                                    注意事项:本文均为作者个人编写如果纰漏

                                                    请给予指出,转载请标明出处;

<!--EndFragment-->

分享到:
评论

相关推荐

    Android APK反编译工具反编译工具包

    这个“Android APK反编译工具反编译工具包”就是为了这些目的而准备的。它包含了三个核心工具:apktool、dex2jar和jd-gui,这些都是Android反编译流程中的关键组件。 首先,`apktool`是一个开源工具,用于解包和...

    apk反编译工具下载

    这是一款强大的APK反编译和打包工具,可以解压APK,展示资源文件(如图片、布局、字符串表等),反编译.smali文件(Dalvik汇编语言),并允许重新打包和签名,以便修改后的APK可以再次安装到Android设备上。...

    android超强反编译工具

    反编译是将已编译的程序(例如Android的Dalvik字节码或机器码)转换回接近源代码的形式的过程。这对于调试、学习第三方应用的工作原理、安全审计或者二次开发都是非常有用的。 标题中的“android超强反编译工具”...

    android apk 反编译软件

    Android APK 反编译软件是开发者用来探索和学习Android应用程序源码的一种工具。它可以帮助我们了解其他应用的实现逻辑、代码结构以及优化技巧,尤其对于初级开发者来说,这是一个极好的学习资源。通过反编译,我们...

    Android 反编译apk工具

    在Android开发领域,有时我们需要对APK文件进行反编译以查看其源代码、资源文件或理解应用程序的工作原理。这通常用于学习、调试、安全分析或逆向工程。本篇文章将详细探讨Android反编译的相关知识,包括常用工具、...

    android水果忍者反编译工具

    在“android水果忍者反编译工具”中,fruit_dec.exe很可能是主程序,用于执行反编译任务。这样的工具通常包括以下功能: 1. **APK解析**:首先,工具会解析APK文件的结构,提取出AndroidManifest.xml文件,它是应用...

    android反编译工具包集合

    这个“android反编译工具包集合”就是为了满足这样的需求而提供的。它包含了几个关键的开源工具,使得我们能够解包、查看甚至修改Android应用程序的原始代码。 首先,我们要介绍的是`apktool`。这是一个非常流行的...

    安卓APK自动反编译汉化签名ApkTool

    反编译是理解APK结构和修改代码的基础,而自动打包签名则是为了方便快捷地完成部署前的必要步骤,确保应用能够被设备正确识别和安装。 在提供的压缩包文件中,ApkTool.exe是ApkTool的可执行文件,用户可以直接运行...

    Android动态编译需要的包

    在Android开发过程中,有时我们需要对应用的字节码进行深入调试和优化,这时就涉及到动态编译和反编译的概念。动态编译主要是指在运行时对代码进行编译,而不是在应用程序安装时一次性完成。这能让我们在不重新发布...

    APK 反编译

    APK 反编译是移动应用开发领域中的一个重要概念,主要涉及到Android应用程序的逆向工程。APK文件是Android平台上应用程序的打包格式,包含了应用程序的所有代码、资源、配置以及图标等信息。通过反编译APK,我们可以...

    小龟app反编译教程+源码+后端文件+对接cms文档

    本教程主要聚焦于"小龟app"的反编译过程,这是一个与影视相关的应用程序,可能涉及到视频播放、内容管理等功能。"skapp"可能是这款应用的简称或者是特定的技术标识。以下我们将深入探讨反编译、源码分析以及后端文件...

    反编译桌面搬家静默安装

    在IT行业中,"反编译桌面搬家静默安装"是一个涉及到软件逆向工程、自动化部署以及用户界面迁移的复杂过程。下面将详细解释这个主题的相关知识点。 首先,"反编译"是逆向工程的核心技术之一,它指的是将已编译的机器...

    防止java反编译的一些方法

    隔离Java程序适用于网络应用,加密Class文件和使用本地代码则在特定条件下有效,而代码混淆作为综合性强的保护措施,被广泛认为是防止Java反编译的基本方法之一。开发者应根据应用的具体需求和安全等级,灵活选用或...

    apk的反编译工具,及jar的源码查看

    apktool是一款强大的Android反编译工具,由IzzySoft开发,它能帮助开发者解包APK文件,将Dex(Dalvik字节码)转换成Java源代码,并且可以重新打包、签名,甚至添加或修改资源。使用apktool,我们可以完成以下步骤: ...

    MyEclipes反编译插件(超好用)

    "MyEclipse反编译插件(超好用)" 提供了这样的功能,它专为MyEclipse和Eclipse集成开发环境设计,帮助开发者便捷地对JAR、WAR、AAR包以及单独的CLASS文件进行反编译,获取源代码。 首先,我们来了解什么是反编译。反...

    反编译工具

    在IT行业中,反编译工具是一种非常重要的辅助开发和...通过熟练掌握反编译技巧,我们可以深入了解应用程序的工作原理,提高我们的开发效率和安全性评估能力。然而,使用这些工具时应尊重版权,遵循合法和道德的实践。

    Eclipse编写的一个简单Android程序

    首先,你需要在Eclipse中安装ADT插件,这将使Eclipse具备创建、调试和部署Android应用的能力。一旦插件安装完成,你可以通过选择“File” &gt; “New” &gt; “Project” &gt; “Android Project”来创建一个新的Android项目...

    android-build-diagram,[正在工作]显示android应用程序构建的各个阶段、输入和输出的图表。.zip

    8. **混淆和优化**:在release构建中,Proguard或R8工具会进行代码混淆,减少反编译的难度,同时删除未使用的代码以减小APK大小。 9. **签名与对齐**:APK在发布前需要签名,以验证其来源和确保完整性和未被篡改。...

    apk反编译工具

    2. **解析DEX文件**:DEX文件包含应用程序的Java字节码,反编译工具如dex2jar可以将DEX转换为可读的Java源代码。这个过程有助于理解应用的工作原理,查找潜在的漏洞或进行二次开发。 3. **资源文件解析**:APK中的...

    一键反编译工具

    "一键反编译工具"就是这样的一个实用程序集合,它整合了几个关键的工具,使得Android应用的反编译过程变得更加简单和快捷。下面我们将深入探讨这个工具包中的各个组件及其工作原理。 首先,`apktool`是这个工具链的...

Global site tag (gtag.js) - Google Analytics