AndroidAPK反编译教程.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HYPERLINK /thread-505062-1-1.htmlAndroid APK反编译教程 ——原帖地址:/thread-505062-1-2.html Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,类似 Sun JavaMe的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中 去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法 来查看,当然这需要借助一些我们自己编写的跟踪程序。Google最然在Android Market上设置了权限保护app-private文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取到需要的文件。 一、dexdump方法 dexdump是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件dump到txt文件中: D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\toolsdexdump.exe -d classes.dex spk.dump.txt 得到的文件内容,描述了类的信息,但是不怎么好阅读 二、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法 这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。 baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具 操作方式如下: 1、java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml AndroidManifest.txt 2、java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml main.txt 3、java -jar baksmali-1.2.5.jar -o classout/ d:\play\classes.dex 复制代码 baksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是能看懂,比如以下片段: view plaincopy to clipboardprint? .class Lcom/paul/test/a; .super Landroid/view/View; # static fields .field private static final a:Landroid/graphics/Typeface; # instance fields .field private b:I .field private c:I .field private d:Z .field private e:J .field private f:I .field private l:[Ljava/lang/String; # direct methods .method static constructor clinit()V .registers 2 sget-object v0, Landroid/graphics/Typeface;-SANS_SERIF:Landroid/graphics/Typeface; const/4 v1, 0x0 invoke-static {v0, v1}, Landroid/graphics/Typeface;-create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface; move-result-object v0 sput-object v0, Lcom/wiyun/ad/a;-a:Landroid/graphics/Typeface; return-void .end method # # other methods .......... # # vir

文档评论(0)

shujukd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档