Android反编译工具apktool

这个工具是个开源项目,地址是:

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

 

我的是Ubuntu平台,下载apktool-install-linux-r04-brut1.tar.bz2和apktool1.4.1.tar.bz2两个文件,然后解压得到apktool.jar,aapt(二进制可执行文件),apktool(SHELL文件)三个文件,把这三个文件复制到/usr/local/bin目录下(需要有ROOT权限)。

确保系统的java命令是Java1.6版本的。

 

这样就可以在系统中使用apktool命令了。

执行:

apktool

可以得到帮助信息。

 

反编译Crasher.apk:

apktool Crasher.apk

反编译后在当前目录下得到Crasher文件夹。


补充于2011.7.26

前面的方法反编译出来的代码可读性很差,比如下面就是反编译出来的一个java方法:

.method public restartGL(Landroid/view/SurfaceHolder;)Ljavax/microedition/khronos/opengles/GL;
    .locals 1

    invoke-direct {p0}, Lcom/ideaworks3d/airplay/AirplayGL;->stop()V

    iget v0, p0, Lcom/ideaworks3d/airplay/AirplayGL;->m_GLVersion:I

    invoke-virtual {p0, p1, v0}, Lcom/ideaworks3d/airplay/AirplayGL;->startGL(Landroid/view/SurfaceHolder;I)Ljavax/microedition/khronos/opengles/GL;

    move-result-object v0

    return-object v0
.end method
要看懂真不容易,网上也有用baksmali.jar的,其实apktool就是包装了一下baksmali.jar,两者是同一个东西。可以参考一下这篇文档:
Android 逆向apk程序(AndroidManifest.xml和class.dex)的心得
http://blog.csdn.net/Zengyangtech/article/details/5807517

真正好使的还是下面这种方法:
先使用dex2jar把apk文件转化成jar,再使用jd-gui把jar转化成.java。这两个工具都是开源项目,分别有windows版本和Linux版本。
http://code.google.com/p/dex2jar/
http://java.decompiler.free.fr/?q=jdgui
具体使用方法很简单,不用任何设置。可以参考文档:Android 反编译apk 到java源码的方法
http://blog.csdn.net/Zengyangtech/article/details/5967263

这个是反编译后的效果

private void stop()
  {
    this.m_Started = 0;
    if (this.m_EglSurface == null)
      return;
    EGL10 localEGL101 = this.m_Egl;
    EGLDisplay localEGLDisplay1 = this.m_EglDisplay;
    EGLSurface localEGLSurface1 = EGL10.EGL_NO_SURFACE;
    EGLSurface localEGLSurface2 = EGL10.EGL_NO_SURFACE;
    EGLContext localEGLContext = EGL10.EGL_NO_CONTEXT;
    boolean bool1 = localEGL101.eglMakeCurrent(localEGLDisplay1, localEGLSurface1, localEGLSurface2, localEGLContext);
    EGL10 localEGL102 = this.m_Egl;
    EGLDisplay localEGLDisplay2 = this.m_EglDisplay;
    EGLSurface localEGLSurface3 = this.m_EglSurface;
    boolean bool2 = localEGL102.eglDestroySurface(localEGLDisplay2, localEGLSurface3);
    this.m_EglSurface = null;
  }


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Batch Apktool 3.7.5 by Bursoft Batch Apktool是一个强大的shell,它结合了多个工具来处理APK文件。 允许批量解码、解码、修改资源和SMALI代码、重新编译、签名、对齐(Zipalign)APK、ZIP、JAR文件。 此外,您还可以连接插件、查看ApkJar和Dex源代码、通过ADB使用设备等。 工作准备: 解压档案。在实用程序路径和正在处理的文件名中,避免长路径、特殊字符(感叹号!,利息、马车等)和俄语字母。 1.脱氧: 1.1将固件/系统文件夹的所有内容放入实用程序的\u系统文件夹中。您可以直接从设备上合并文件,请参阅P。3.4。 1.2指定与Android脱氧固件版本相对应的API级别(菜单项[84])。如果\u system文件夹中有build.prop文件,则将自动定义级别API。 1.3选择SMALI版本(菜单[83]),使用该版本进行脱模。SMALI-1.4.2仅适用于API级别<=17。 1.4选择菜单项[01]。文件将直接在\u system文件夹中脱氧。此文件夹的内容已准备好固件到设备。 1.5如果固件中有Simlinki,则它们将显示在解码日志的末尾。 1.6要复制脱氧APKJAR文件进行进一步处理,请单击菜单[02]或[03]。文件将分别复制到\u input\u apk或\u input\u jar文件夹。 2.分解和重组: 2.1将要处理的文件放入\u input\u apk文件夹。 2.2如果您正在从固件中解析系统文件,请将该固件的System/Framework文件夹中的所有APK文件放入\u Framework实用程序文件夹中;否则,将\u framework文件夹留空。 2.3选择菜单项[1]。在\u input\u apk文件夹中,将出现拆分的应用程序。 2.4进行必要的更改。 2.5如果您正在解析系统文件,请禁用[89]选项-这将保留系统APK的原始签名。如果启用[89]选项,则在重新编译过程中,应用程序将使用[90]中选择的密钥签名。 2.6选择[3]。重新包装、签名(如果启用)和对齐的APK将位于\u out\u APK文件夹中。 3.ADB: 允许您通过Android调试桥与设备一起工作。要使ADB正常工作,必须: 在PC上: -为您的设备安装ADB驱动程序。 在设备上: -启用开发人员设置。要做到这一点,请转到“设置”->“关于手机”,并多次单击“构建号”。 -在“设置”中,为开发人员启用调试模式,在“超级用户模式”中,选择“应用程序和ADB”。 3.1第[10]段应从ADB开始。可能有两种连接选项: -通过USB连接并显示连接的设备。当第一次连接到设备上的弹出窗口时,必须在设备上放置“始终允许从该计算机进行调试”框。 -Wi-Fi连接。模式需要客户端来运行,例如,https://play.google.com/store/apps/details?id=com.ttxapps.wifiadb 3.2第[11]-在设备上安装APK。 3.3第[12]-请求ADB的超级用户权限并重新安装/System文件夹进行记录。 3.4项目[13]-将手机上相应文件夹中的文件复制到系统实用程序文件夹中。 3.5项目[14]-将文件复制到手机上的相应文件夹。 第[1]项直接通过ADB推送复制文件,为此,必须通过第[12]项安装/System文件夹进行记录。如果项目[12]不能挂载要写入的文件夹/系统(ADBD错误无法在生产构建中作为根目录运行等),则必须使用[2]项中的复制。 [2]使用另一种方法使用SU二进制复制(必须为ADB shell授予超级用户权限)。 3.6项目[15]-将屏幕截图保存到项目文件夹中(需要Android 4.0或更高版本)。 3.7项目[16]-从屏幕录制视频并将其保存到项目文件夹(需要Android 4.4或更高版本)。 3.8第[17]-设备终端。 3.9项目[18]-输出关键系统日志(logcat(main、radio、events)、dmesg和bugreport)并将其保存到项目文件夹中的文件中。 [6]项的目的是保存内联固件方法表。如果固件不是用标准方法脱氧(仅适用于Android<5.0),这可能会有所帮助。 3.10第[19]-不同的重新启动选项。 3.11项目[20]-有关Android版本和文件系统的摘要。 3.12[21]-正确关闭ADB服务器。此命令必须终止ADB,否则安全设备检索将失败。 4.附加功能: 4.1项目[04]、[05]、[06]和[07]用于使用Baksmali Smali解压缩和重新编译AP
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值