前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

Android如何防止apk程序被反编译 - 风曦云飞 - ITeye技术网站 首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 招聘 搜索 您还未登录 ! 登录 注册 风曦云飞 博客 微博 相册 收藏 留言 关于我 zhuxinzx Android如何防止apk程序被反编译 博客分类: android 作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。 Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。 下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容: [html] view plaincopyprint? 1. -optimizationpasses 5 2. -dontusemixedcaseclassnames 3. -dontskipnonpubliclibraryclasses 4. -dontpreverify 5. -verbose 6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7. 8. -keep public class * extends android.app.Activity 9. -keep public class * extends android.app.Application 10. -keep public class * extends android.app.Service 11. -keep public class * extends android.content.BroadcastReceiver 12. -keep public class * extends android.content.ContentProvider 13. -keep public class * extends android.app.backup.BackupAgentHelper 14. -keep public class * extends android.preference.Preference 15. -keep public class com.android.vending.licensing.ILicensingService 16. 17. -keepclasseswithmembernames class * { 18. native <methods>; 19. } 20. 21. -keepclasseswithmembernames class * { 22. public <init>(android.content.Context, android.util.AttributeSet); 23. } 24. 25. -keepclasseswithmembernames class * { 26. public <init>(android.content.Context, android.util.AttributeSet, int); 27. } 28. 29. -keepclassmembers enum * { 30. public static **[] values(); 31. public static ** valueOf(java.lang.String); 32. } 33. 34. -keep class * implements android.os.Parcelable { 35. public static final android.os.Parcelable$Creator *; 36. } 从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、 ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService, 并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考<proguard_path>/examples中的例子及注释。) 让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了 完整的default.properties文件应该如下: [html] view plaincopyprint? 1. # This file is automatically generated by Android Tools. 2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3. # 4. # This file must be checked in Version Control Systems. 5. # 6. # To customize properties used by the Ant build system use, 7. # "build.properties", and override values to adapt the script to your 8. # project structure. 9. 10. # Project target. 11. target=android-9 12. proguard.config=proguard.cfg 大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的: 如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可 分享到: Android text文字阴影设置 | Android下载后自动安装 2013-03-05 11:51 浏览 66 评论(0) 分类:移动开发 相关推荐 评论 发表评论 您还没有登录,请您登录后再发表评论 zhuxinzx 浏览: 78562 次 性别: 来自: 深圳 最近访客 更多访客>> dylinshi126 flbird longer619 dixin 文章分类 全部博客 (109) ORACLE (19) JAVA (23) Weblogic (3) flex (3) Java 异常 (7) 杂谈 (2) svn (2) linux (5) android (39) 社区版块 我的资讯 (0) 我的论坛 (0) 我的问答 (0) 存档分类 2013-12 (2) 2013-09 (1) 2013-07 (2) 更多存档... 最新评论 zhuxinzx: natian306 写道我也遇到同样的问题,始终找不到解决办法 ... An internal build error has occurred. Right-click for more information. natian306: 我也遇到同样的问题,始终找不到解决办法?楼主解决了吗? An internal build error has occurred. Right-click for more information. take: 解决了.. XXX could not be redeployed because it could not be completely removed in the un nophaern: 做了1年java-今天才弄明白,学习了 jdk1.4和jdk1.5的区别 & JDK 1.6 新特性 zhuxinzx: linpz 写道 不错,不错,赞一个!!! 谢谢啦。。 Myeclipse 快捷键大全 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。若作者同意转载,必须以超链接形式标明文章原始出处和作者。 &copy; 2003-2014 ITeye.com. All rights reserved. [ 京ICP证110151号 京公网安备110105010620 ]