欢迎来到天天文库
浏览记录
ID:11676921
大小:115.93 KB
页数:10页
时间:2018-07-13
《android软件代码反编译方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GoogleAndroid平台选择了JavaDalvikVM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,类似SunJavaMe的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序
2、。Google最然在AndroidMarket上设置了权限保护app-private文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取到需要的文件。一、dexdump方法dexdump是emulator自带提供的查看dex文件的工具,可使用类似这样的命令将dex文件dump到txt文件中:D:ProgramFilesandroid-sdk-windows-1.6_r1platformsandroid-1.6tools>dexdump.exe-dclasses.dex>spk.dump.txt得到的文件内容,描述了类的
3、信息,但是不怎么好阅读二、AXMLPrinter2.jar+baksmali.jar+smali.jar方法这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具操作方式如下:1.1、java-jarAXMLPrinter2.jarD:playAndroidManifes
4、t.xml>AndroidManifest.txt2.2、java-jarAXMLPrinter2.jarD:playreslayoutmain.xml>main.txt3.3、java-jarbaksmali-1.2.5.jar-oclassout/d:playclasses.dex复制代码baksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是能看懂,比如以下片段:1.2.3.viewplaincopytoclipboardprint?4..classLcom/paul
5、/test/a;5..superLandroid/view/View;6.7.#staticfields8..fieldprivatestaticfinala:Landroid/graphics/Typeface;9.10.#instancefields11..fieldprivateb:I12..fieldprivatec:I13..fieldprivated:Z14..fieldprivatee:J15..fieldprivatef:I16..fieldprivatel:[Ljava/lang/String;17.18.#dir
6、ectmethods19..methodstaticconstructor()V20..registers221.sget-objectv0,Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;22.const/4v1,0x023.invoke-static{v0,v1},Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/
7、Typeface;24.move-result-objectv025.sput-objectv0,Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;26.return-void27..endmethod28.#29.#othermethods..........30.#31.#virtualmethods32..methodpubliconKeyUp(ILandroid/view/KeyEvent;)Z33..registers434.const/16v0,0x4235.if-eqp1,v
8、0,:cond_836.const/16v0,0x1737.if-nep1,v0,:cond_b38.:cond_839.invoke-direct{p0},Lcom/paul/test/a;->d()V40.:cond_b41.co
此文档下载收益归作者所有