前往Shuct.Net首页

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

关于反编译的搜索

Android如何防止apk程序被反编译 - IT-Homer - 博客频道 - CSDN.NET IT-Homer Where There is Life, There is Hope.... 目录视图 摘要视图 订阅 新年新气象------CSDN2014新版导航就要跟大家见面了 2014年1月微软MVP当选名单揭晓! 消灭0回答,赢下载分 “我的2013”年度征文活动火爆进行中! 专访何海涛:“不正经”程序员的进阶之路 Android如何防止apk程序被反编译 分类: Android 2011-08-28 23:07 55365人阅读 评论(56) 收藏 举报 androidclasspropertiestoolsapplication 作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容:-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }从脚本中可以看到,混淆中保留了继承自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文件应该如下:# This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # # This file must be checked in Version Control Systems. # # To customize properties used by the Ant build system use, # "build.properties", and override values to adapt the script to your # project structure. # Project target. target=android-9 proguard.config=proguard.cfg大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可博客之星评选,请投我一票:http://vote.blog.csdn.net/blogstaritem/blogstar2013/sunboy_2050 更多 上一篇:Android APK反编译详解(附图) 下一篇:Android自动化测试工具——Monkey 顶 51 踩 3 查看评论 * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场 核心技术类目 全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BI HTML5 Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP Spark HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap 个人资料 sunboy_2050 访问:4380787次 积分:40177分 排名:第25名 原创:583篇 转载:218篇 译文:14篇 评论:2275条 博客之星评选 --> 支持你一票 创业专访 学习经历 中科院、百度、创新工场、小米 系统架构设计师(2013) 软件设计师(2008) 爱黑客,爱技术 QQ交流群: 320296250 python、ruby、perl、awk、shell 程序人生的平凡生活 QQ交流群: 282297696 汇聚有百度、小米、微软、腾讯、 创新工场、阿里巴巴、日本雅虎 个人博客 博客地址:http://blog.ithomer.net 论坛:forum.ithomer.net --> 博客专栏 Clojure 学习总结 文章:15篇 阅读:36970 Python 学习入门 文章:49篇 阅读:173086 设计模式 文章:3篇 阅读:37703 Android开发的点点滴滴 文章:32篇 阅读:1172860 文章搜索 文章分类 Algorithm(85) C/C++/C#(114) Linux/Shell(139) QT(13) Script(126) NetWork(21) SQL Index(61) SoftWare(33) Java/JSP(45) Learn(50) IT Trend(56) Android(96) Cloud(11) iOS(4) 文章存档 2014年01月(5)2013年12月(45)2013年11月(13)2013年10月(20)2013年09月(18)2013年08月(20)2013年07月(16)2013年06月(11)2013年05月(20)2013年04月(50)2013年03月(10)2013年02月(11)2013年01月(11)2012年12月(10)2012年11月(15)2012年10月(12)2012年09月(15)2012年08月(16)2012年07月(10)2012年06月(10)2012年05月(14)2012年04月(16)2012年03月(16)2012年02月(10)2012年01月(10)2011年12月(10)2011年11月(12)2011年10月(10)2011年09月(10)2011年08月(12)2011年07月(10)2011年06月(10)2011年05月(10)2011年04月(10)2011年03月(10)2011年02月(11)2011年01月(12)2010年12月(15)2010年11月(15)2010年10月(31)2010年09月(17)2010年08月(16)2010年07月(12)2010年06月(45)2010年05月(16)2010年04月(6)2010年03月(9)2010年02月(12)2010年01月(27)2009年12月(53)2009年09月(2)2009年08月(11) 阅读排行 Android APK反编译详解(附图)(496346) SVN常用命令(130466) Android 获取屏幕尺寸与密度(126156) Ubuntu搭建Eclipse+JDK+SDK的Android(102230) Linux 抓取网页实例(shell+awk)(96538) Windows搭建Eclipse+JDK+SDK的Android(88115) 各种基本算法实现小结(五)—— 排序算法(86032) Android 创建与解析XML(一)—— 概述(85344) Android如何防止apk程序被反编译(55361) 去360还是留百度?(54239)