Category Archives: Android

[转]Android APK反编译

dex2jar和JD-GUI这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享。

dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI下载地址:
windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz

1.首先找到Android软件安装包中的classes.dex

把apk文件改名为.zip,然后解压缩其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件

2.把classes.dex拷贝到dex2jar.bat所在目录。
windows系统下:
在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar

Ubuntu系统下:

在终端下定位到dex2jar.sh所在目录,运行
sh dex2jar.sh classes.dex

则可生成classes.dex.dex2jar.jar

3.运行JD-GUI工具(它是绿色无须安装的)

打开上面的jar文件,即可看到源代码

Android ERROR: unknown virtual device name: 'myavd'

只是想在Eclipse中写一个Hello World程序,没想按照Google Android Dev Guide的说明做,最后出现了

ERROR: unknown virtual device name: ‘myavd’

这样的错误,整了半天终于找到解决方法。我用的是Vista,而我又喜欢将所有可以设置的用户文件的位置改至D盘下。这样在用Eclipse或者从命令行创建Android Emulator时,相应的文件是被放置到 “D:\Users\<username>\.android“ 下面了,而程序运行时仍然从 “C:\Users\<username>\.android“ 下查找相应的配置文件,从而导致上面的错误,把 “D:\Users\<username>\.android“ 下的文件复制到 “C:\Users\<username>\.android“ 下面即可解决这个问题。