前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

反编译android部署程序 首 页 阅览室 馆友 我的图书馆 反编译android部署程序 收藏人:blankice 2012-03-02 | 阅: 转: | 分享 | 大 中 小 反编译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文件 6.用jad工具将打开这个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.bz2和apktool-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. 解压后的文件夹中可以得到apk中的xml配置文件。是不是很熟悉呢。呵呵。 其实用这个方法会得到一个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 文件.用文本编辑器打开,可看到类大致结构. 来自:blankice > 献花(0) +1 类似文章 更多 Android - 反编译android apk文件 Hero/Evo Rom 制作教程 – HtcDialer,Ph... andriod的apk文件相关的编译反编译工具 Android 反编译 Android APK反编译 将jar文件与dex文件的转换 三星力桌下拉开关程序 android 文件的APK反编译之详解 热门推广 猜你喜欢图解摄影技巧教师必知的七个心理学规律教你一百二十八个说话的技巧阳台种菜新手3句半多数人不知道怎么穿大衣 发表评论: 最新文章Android开发教程10:Activity启...Service关闭又自动启(AlarmMana...Android对话框传送数据Android Animation学习笔记android代码速查,常用一些基本... 更多 热门文章 古代情诗名句 选谁做朋友?30秒的答案! 跟我学腌菜1-60条 194 秘书文字工作常用词语汇编 【生男生女征兆】民间传统的四... 中国王陵之谜 「育儿」中国孩子的13种烦恼! 为了您的健康 请把这个存下来 数独游戏技巧(图解) 教你自制各种零食,小资生活走... 我国的行政区域划分及各地的标... 启功书法壁纸18幅! 更多>> 关闭 关闭