反编译Android程序目前没有什么好的方法,但是在Android Emulator中可以找到一个名为dexdump(在Android SDK的Tools目标下)的程序,通过dexdump可以查看出apk文件中的dex执行情况,ophone8.com粗略分析出原始java代码是什么样的和Dot Net中的Reflector很像。
android编译器生成的java class相关内容都放到了dex(.dex 是字节码文件,Dalvik VM上就运行的是.dex)文件中,为什么要反编译apk文件呢? 就目前来看Android开放度还很低,很多东西只有反编译官方的app才可以了解一些底层的东西。
对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,类似Sun JavaMe的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。模拟器自带了一个dexdump,有兴趣的网友可以先了解下,同时以及有关APK文件的汉化,我们将在下一次做详细的分析,因为这里主要是修改的不是dex而是资源文件,使用类似UltraEdit这样的工具以字节对齐的方式逐个替换即可,最终再签名下即可使用,这样的行为可以算作是非法修改,不过目前这样的方法在国内很流行ÿ