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

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;  }


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. android 随手记 读写文件的几种方式
  6. 深入了解Android图形管道-part1
  7. adb.exe无法运行,提示0xc000007b错误
  8. Android学习笔记-ProgressBar和ListView使用方法(一)
  9. Android(安卓)Studio 断点调试和高级调试

随机推荐

  1. Mstar虚拟按键触摸屏驱动(芯片msg2133,按键
  2. Android绘图之绘制太极图
  3. 查询能够响应某一Intent的所有Activity
  4. android日期选择器,从底部弹出的日期选择
  5. Androidstudio开发button按钮的操作以及
  6. Android利用shape画虚线
  7. android Q版本外部存储问题以及获取空间
  8. android Zxing二维码扫描 竖屏切换问题的
  9. Android开发:创建项目后报错,com.android.i
  10. android 通过正则表达式遍历html中所有的