应用程序的混淆


混淆步骤:
1、在工程的根目录,找到project.properties文件
2、将下面一句注释给打开
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt  
3、然后将\sdk\tools\proguard\proguard-android.txt复制到工程的根目录下,并将project.properties下句改成:
proguard.config=proguard-android.txt
4、\工程名\proguard\mapping.txt 混淆的映射文件,混淆后对应的名字
4、混淆后,apk大小也会变小,因为名字都变短了
5、四大组件和自定义view对象也没有改变,因为在布局文件中用到了,如果给混淆了,那么将找不到,还有反射的类也不要给混淆
6、proguard-android.txt详解
proguard-android.txt详解:
自己保留自己的类,如:
-keep class  cn.zengfansheng.mobilesafe.domain.AppInfo


# This is a configuration file for ProGuard.

# http://proguard.sourceforge.net/index.html#manual/usage.html

-dontusemixedcaseclassnames  不要使用混合大小写的类名

-dontskipnonpubliclibraryclasses  三方使用的类库也会混淆

-verbose 日志 \proguard\*.txt 否则,下面的几个txt文件将会没有

# Optimization is turned off by default. Dex does not like code run

# through the ProGuard optimize and preverify steps (and performs some

# of these optimizations on its own).

-dontoptimize   不要被代码优化(会将没有使用的方法删除,如回调函数)

-dontpreverify 不要对代码预先的校验

# Note that if you want to enable optimization, you cannot just

# include optimization flags in your own project configuration file;

# instead you will need to point to the

# "proguard-android-optimize.txt" file instead of this one from your

# project.properties file.

-keepattributes *Annotation* 带注解的保留(反射)

-keep public class com.google.vending.licensing.ILicensingService

-keep public class com.android.vending.licensing.ILicensingService

# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native

-keepclasseswithmembernames class * {

native <methods>;

}

# keep setters in Views so that animations can still work.

# see http://proguard.sourceforge.net/manual/examples.html#beans

-keepclassmembers public class * extends android.view.View {  保留view

void set*(***);

*** get*();

}

# We want to keep methods in Activity that could be used in the XML attribute onClick

-keepclassmembers class * extends android.app.Activity { 保留Activity

public void *(android.view.View);

}

# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations

-keepclassmembers enum * { 保留枚举

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

-dontwarn net.youmi.android.**

-keep class net.youmi.android.** {   有米的保留

*;

}

-keep class  cn.zengfansheng.mobilesafe.domain.AppInfo

-keepclassmembers class **.R$* { 保留R文件

public static <fields>;

}

# The support library contains references to newer platform versions.

# Don‘t warn about those in case this app is linking against an older

# platform version.  We know about them, and they are safe.

-dontwarn android.support.**

问题:
解决:由于第三方(如广告平台有米),已经对代码进行的混淆,此时需要忽略掉

-dontwarn net.youmi.android.**

-keep class net.youmi.android.** {

*;

}

解决2:升级Proguard。目前最新的proguard是4.7版,我这边升级到Proguard4.6就OK了。

从proguard官网下载4.6的,覆盖到tools/proguad/bin、lib这两个文件夹就OK了.我这边是这样解决的。

下载地址:http://sourceforge.net/projects/proguard/files/latest/download?source=files

来自为知笔记(Wiz)

时间: 2024-12-05 19:51:28

应用程序的混淆的相关文章

字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串

原文:字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串 关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串  实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来讲第三篇,如何应用上面所学内容,设计一个字符串混淆程序. 先设计一个控制台程序,它是将要被我混淆的程序集文件: public static void Main() { try { RunSnippet(); } cat

android应用程序的混淆打包规范

1.在工程文件project.properties中加入下proguard.config=proguard.cfg , 如下所示: target=android-8 proguard.config=proguard.cfg Eclipse会通过此配置在工程目录生成proguard.cfg文件,但是这只能混淆不含第三方包的工程. 而我们的项目中大量使用了第三方包,在用自动生成的混淆文件会导致打包不成功,或者打包成功不能运行的情况,所以必须在基本代码的基础加上其他的属性将第三方库隔离开来不被混淆.

对.net 程序进行源码混淆

还是那个一卡通的程序,这几天做了一点更新. 因为里面涉及到对数据库的链接,含IP地址和账户密码,一旦被反编译窃取,则源码泄露不说,也给服务器带来一定的风险! 下载ILSpy程序,对自己开发的.net程序进行反编译,结果不到几秒钟,里面的所有源码全部展现出来: 看来只能通过源码混淆器进行混淆了 下载.net Reactor 5.0最新版对程序进行混淆,顺便把dll文件打包进去exe里: 下载地址:Download 把下面该勾上的都勾上了. 点击“Protect”按钮进行混淆! 接下里对混淆过的.n

使用Dotfuscator加密混淆程序以及如何脱壳反编译

混淆演示 首先介绍如何使用Dotfuscator对.net程序加密码混淆/加壳 C#或vb.net编写的应用程序或DLL. 这里随便创建了一个C#的命令行控制台程序.程序很简单,对当前的时间进行了AES的加解密并输出. 接下来使用Dotfuscator对程序进行混淆. 一,运行dotfuscator.exe 二,添加ConsoleApplication1.exe 三,对混淆选项进行一些配置 四,开始混淆. 五,查看混淆结果. 这里使用ILSPY工具,打开混淆后的程序.如图: 可以发现,代码被混淆

android 混淆 与 反编译

1, 文件 project.properties 修改: target=android-14proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 必须这个顺序. 2,proguard-project.txt 注意排除使用反射的源码. # To enable ProGuard in your project, edit project.properties# to define the

Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} -dontwarn com.hyphenate.** 即:混淆规则. 自己没写过关于混淆打包的文章,在此补上. 下面了解Android studio环境下 项目混淆打包的操作. ------------------------------------------------------------

AndroidStudio 混淆打包

AndroidStudio中的项目可以用compile的形式引入github上的开源项目,可以引用module,而不一定都要用libs文件夹中添加jar包的形式.在最终realease打包时,混淆的设置是比较重要的,否则会导致生成的包有很多功能不能正常使用.下面列举一个基本的app的build.gradle和混淆文件.并注意,混淆打包后的apk文件大小会比不使用混淆要小. 在app根目录下设置build.gradle和混淆文件,然后把混淆选项写入混淆文件就可以.虽然app项目中可能引用了一些mo

浅谈Android保护技术__代码混淆

浅谈Android保护技术__代码混淆 代码混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为.将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字.比如改写成单个字母,或是简短的无意义字母组合,甚至改写成"__"这样的符号,使得阅读的人无法根据名字猜测其用途.对于支持反射的语言,代码混淆有可能与反射发生冲突.代码混淆并不能真正阻止反向工程,只能增大其难度.因此,对于对安全性要求很高的场合,仅仅

Android Studio混淆模板及常用第三方混淆(看了都说好)

首先要在build.gradle中开启混淆,也就是minifyEnabled true,我用的build.gradle具体如下所示: def releaseTime() { return new Date().format("yyyy.MM.dd", TimeZone.getTimeZone("UTC")) } android { .... buildTypes { release { // 混淆 minifyEnabled true // Zipalign优化 z