




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 Filesandroid-sdk-windows-1.6_r1platformsandroid-1.6toolsdexdump.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. 1、java -jar AXMLPrinter2.jar D:playAndroidManifest.xml AndroidManifest.txt2. 2、java -jar AXMLPrinter2.jar D:playreslayoutmain.xml main.txt3. 3、java -jar baksmali-1.2.5.jar -o classout/ d:playclasses.dex复制代码baksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是能看懂,比如以下片段: 1.2.3. view plaincopy to clipboardprint?4. .class Lcom/paul/test/a; 5. .super Landroid/view/View; 6. 7. # static fields 8. .field private static final a:Landroid/graphics/Typeface; 9. 10. # instance fields 11. .field private b:I 12. .field private c:I 13. .field private d:Z 14. .field private e:J 15. .field private f:I 16. .field private l:Ljava/lang/String; 17. 18. # direct methods 19. .method static constructor ()V 20. .registers 221. sget-object v0, Landroid/graphics/Typeface;-SANS_SERIF:Landroid/graphics/Typeface; 22. const/4 v1, 0x023. invoke-static v0, v1, Landroid/graphics/Typeface;-create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface; 24. move-result-object v0 25. sput-object v0, Lcom/wiyun/ad/a;-a:Landroid/graphics/Typeface; 26. return-void27. .end method 28. # 29. # other methods . 30. # 31. # virtual methods 32. .method public onKeyUp(ILandroid/view/KeyEvent;)Z 33. .registers 434. const/16 v0, 0x4235. if-eq p1, v0, :cond_8 36. const/16 v0, 0x1737. if-ne p1, v0, :cond_b 38. :cond_8 39. invoke-direct p0, Lcom/paul/test/a;-d()V 40. :cond_b 41. const/4 v0, 0x042. invoke-virtual p0, v0, Lcom/paul/test/a;-setPressed(Z)V 43. invoke-super p0, p1, p2, Landroid/view/View;-onKeyUp(ILandroid/view/KeyEvent;)Z 44. move-result v0 45. return v0 46. .end method47. .class Lcom/paul/test/a;48. .super Landroid/view/View;49.50. # static fields51. .field private static final a:Landroid/graphics/Typeface;52.53. # instance fields54. .field private b:I55. .field private c:I56. .field private d:Z57. .field private e:J58. .field private f:I59. .field private l:Ljava/lang/String;60.61. # direct methods62. .method static constructor ()V63. .registers 264. sget-object v0, Landroid/graphics/Typeface;-SANS_SERIF:Landroid/graphics/Typeface;65. const/4 v1, 0x066. invoke-static v0, v1, Landroid/graphics/Typeface;-create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;67. move-result-object v068. sput-object v0, Lcom/wiyun/ad/a;-a:Landroid/graphics/Typeface;69. return-void70. .end method71. #72. # other methods .73. #74. # virtual methods75. .method public onKeyUp(ILandroid/view/KeyEvent;)Z76. .registers 477. const/16 v0, 0x4278. if-eq p1, v0, :cond_879. const/16 v0, 0x1780. if-ne p1, v0, :cond_b81. :cond_882. invoke-direct p0, Lcom/paul/test/a;-d()V83. :cond_b84. const/4 v0, 0x085. invoke-virtual p0, v0, Lcom/paul/test/a;-setPressed(Z)V86. invoke-super p0, p1, p2, Landroid/view/View;-onKeyUp(ILandroid/view/KeyEvent;)Z87. move-result v088. return v089. .end method90.复制代码认真一看,就知道:# static fields 定义静态变量的标记# instance fields 定义实例变量的标记# direct methods 定义静态方法的标记# virtual methods 定义非静态方法的标记以onKeyUp方法为例,其中定义了处理逻辑,if-eq p1, v0, :cond_8 表示如果p1和v0相等,则执行cond_8的流程: 1.2. :cond_83. invoke-direct p0, Lcom/paul/test/a;-d()V4.复制代码调用com.paul.test.a的d()方法不相等: if-ne p1, v0, :cond_b 则执行cond_b的流程: 1.2. :cond_b3. const/4 v0, 0x04.5. invoke-virtual p0, v0, Lcom/paul/test/a;-setPressed(Z)V6.7. invoke-super p0, p1, p2, Landroid/view/View;-onKeyUp(ILandroid/view/KeyEvent;)Z8.9. move-result v010.复制代码大概意思就是调用com.paul.test.a的setPressed方法,然后再调用父类View的onKeyUp方法最后 1. return v0复制代码 该方法,能把外部引用的lib包类也解析出来,能开到包的全貌。缺点在于,解析出的smali文件并不是反编译出的java文件,可读性降低了,但仔细研究也能看出大概。三、dex2jar + XJad 方法一、反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:本帖隐藏的内容dex2jar:/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI:/files/jdgui.zip具体步骤:首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录运行dex2jar.bat classes.dex生成classes.dex.dex2jar.jar生成jar文件的截图如下:2012-3-28 17:19 上传下载附件 (144.9 KB) 发送到手机运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了2012-3-28 17:22 上传下载附件 (805.93 KB) 发送到手机HelloAndroid源码(编译前的apk源码对照)如下:2012-3-28 17:27 上传下载附件 (537.3 KB) 发送到手机二、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件如果是只是汉化软件,这将特别有用。首先还是下载工具,这次用到的是apktool下载地址: 本帖隐藏的内容/p/android-apktool/downloads/list下载:apktool1.4.1.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(两个包都下载)具体步骤:将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:*.apk C:*文件夹,如下图:2012-3-28 17:28 上传下载附件 (519.97 KB) 发送到手机命令行解释:apktool d apk文件 输出文件夹反编译
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西物流职业技术学院招聘教职人员控制数205人模拟试卷带答案详解
- 2025福建三明机场发展集团有限公司招聘3人模拟试卷有完整答案详解
- 2025贵州贵阳学院高层次人才引进15人考前自测高频考点模拟试题及答案详解(新)
- 2025江苏兴化市招聘教师67人模拟试卷及完整答案详解1套
- 安全培训教师安全职责课件
- 2025年东北农业大学专职辅导员公开招聘16人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025江西吉安市井冈山大学招聘177人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025内蒙古赤峰市克旗银都矿业招聘4人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025年湖南湘西州吉首市石家冲街道卫生服务中心招聘见习生考前自测高频考点模拟试题附答案详解(考试直接用)
- 河北省【中职专业高考】2025年中职高考对口升学(理论考试)真题卷【财经商贸大类】模拟练习
- 2025年新版中层副职面试题及答案
- 智慧树知道网课《工业机器人技术基础》课后章节测试满分答案
- (一检)泉州市2026届高三高中毕业班质量监测(一)数学试卷(含标准答案)
- 2025年福建省榕圣建设发展有限公司项目招聘12人笔试参考题库附带答案详解
- 矿山设备检修安全培训课件
- 2025-2030数据安全合规审计服务市场爆发及等保测评机构并购价值评估
- 智慧农业信息化解决方案
- 二十四山开门放水作灶真诀
- 生物基础电子教案分享
- 小学六年级体育教案(全册48课时)
- 不可撤销跟单信用证申请书中英文
评论
0/150
提交评论