apk 破解之dexdump反编译Android程序 - OMS操作系统平台专区 -

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

O8新手
 
帖子
3605
O币
772 个
沙发
发表于 2009-8-10 20:47 |只看该作者
首先要把apk的class.dex dump出来、 :
具体步骤:1.用winrar或者winzip打开apk,直接拖出来。
2.用android sdk1.1版本以上的一个dexdump工具把class.dex文件dump成文本:
把刚才的class.dex文件放在和dexdump工具同目录 用命令窗口执行 :
dexdump.exe -d classes.dex > spk.dump.txt
意思是将classes.dex dump出来 形成一个txt文件。
下一步就要读懂这个txt文件了,先从header中可以看清楚这个应用的总体信息,有几个类,包括内部类 ,header只是了解概况。要详细去分析下面的每一个class才能真正理解这个软件的设计过程。最好的方法是一边研究里面的opcode一边打开api来查看里面调用到的类和方法,减少误解的机率。。
opcode就是介于高级编程语言和二进制代码之间的一层中间码,operation
code 叫操作码。读懂opcode主要是熟悉里面的逻辑跳转以及一些个别助记符的含义。。
通过opcode你就可以清晰的知道里面每个方法资源的调用过程和逻辑跳转过程。做过的例子都有点复杂,就不举例了。。当然,要破解整个apk最好是翻译opcode和应HexWorkShop查看资源文件相结合比较合理和轻松,尤其是ManiFest.xml这个文件,一定要看清楚里面的activity和service receiver,permissions 这几个部分的信息,这可能会成为整个破译流程的关键部分 。。。能够说的经验暂时就只有这么多,正着手写一个工具专门用来翻译opcode成java代码。。这是一个复杂的过程,普通的资源调用只需要匹配相关的文本就能翻译过来,但是一些复杂的跳转和个别特殊表达式需要费时费力去想想。。。