`
andy_叶
  • 浏览: 67968 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android源码中混淆编译

 
阅读更多

1.在需要混淆的工程目录下(package/apps/下的工程)添加proguard.flags文件,该文件即为网络传说中的proguard.cfg,只是命名不一样而已,然后再Android.mk中添加如下两句:
LOCAL_PROGUARD_ENABLED := full
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
上面的full 也可以是custom,如果不写这句,那还得添加如下一句:
TARGET_BUILD_VARIANT := user或者TARGET_BUILD_VARIANT := userdebug

 

这样后在工程目录下执行mm便可以看到在out/target/common/obj/APPS/目录下生成了形如proguard.classes.jar的东东,这就说明已在编译中启动了proguard

 

但反编译一看,并未出现网络云说的abcd替代符号,其实代码并未真正混淆:

android在编译时默认关闭了混淆选项,有去研究build/core目录的同志会发现这里也有个proguard.flags文件,其实在 proguard的过程中,编译器会调用包括本地目录下和系统定义了的多个proguard.flags文件,而在这个文件中混淆的选项被禁止了,故而编 译出来的apk仍未混淆。因此将如下句子注释掉便可实现真正的混淆编译:
# Don't obfuscate. We only need dead code striping.
-dontobfuscate(将该句加个#号注释掉)

 

2.proguard.flags的源码如下:

 

-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>;    
 
 }       
 
-keepclasseswithmembers class * {    
 
public <init>(android.content.Context, android.util.AttributeSet);    
 
}      
-keepclasseswithmembers class * {    
 
public <init>(android.content.Context, android.util.AttributeSet, int);    
 
}    
  
-keepclassmembers class * extends android.app.Activity {    
 
public void *(android.view.View);    
 
 }    
    
 
-keepclassmembers enum * {    
 
public static **[] values();    
 
public static ** valueOf(java.lang.String);    
 
}      
 
-keep class * implements android.os.Parcelable {    
 
public static final android.os.Parcelable$Creator *;    
 
}

 

 

 

3 。好奇的同志还可以继续看看,为什么TARGET_BUILD_VARIANT := user和LOCAL_PROGUARD_ENABLED := full二选一即可,详见build/core/package.mk:

 

LOCAL_PROGUARD_ENABLED:=$(strip $(LOCAL_PROGUARD_ENABLED))
ifndef LOCAL_PROGUARD_ENABLED
ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),)
    # turn on Proguard by default for user & userdebug build
    LOCAL_PROGUARD_ENABLED :=full
endif
endif
ifeq ($(LOCAL_PROGUARD_ENABLED),disabled)
    # the package explicitly request to disable proguard.
    LOCAL_PROGUARD_ENABLED :=
endif
proguard_options_file :=
ifneq ($(LOCAL_PROGUARD_ENABLED),custom)
ifneq ($(all_resources),)
    proguard_options_file := $(package_expected_intermediates_COMMON)/proguard_options
endif # all_resources
endif # !custom
LOCAL_PROGUARD_FLAGS := $(addprefix -include ,$(proguard_options_file)) $(LOCAL_PROGUARD_FLAGS)

分享到:
评论
2 楼 andy_叶 2013-04-03  
hold_on 写道
有 android proguard 语法文档吗?
google 网站不稳定

hold_on 写道
有 android proguard 语法文档吗?
google 网站不稳定



有的!网上也有很多介绍!
1 楼 hold_on 2013-03-27  
有 android proguard 语法文档吗?
google 网站不稳定
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    android源码混淆避免反编译定义.pdf

    android源码混淆避免反编译定义.pdf

    android源码混淆避免反编译[参照].pdf

    android源码混淆避免反编译[参照].pdf

    android混淆与签名与反编译方法

    包括android工程源码混淆方法、apk签名方法和apk反编译方法

    android反编译工具包(亲测效果完美)

    安卓反编译工具包,有效的获取资源文件和源码(混淆后的),内附使用说明

    android安卓反编译

    首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk 通过反编译,你可以获知该应用用到了什么第3方的库文件,它的代码是如何编写的等等。 然而,如果该APK...

    详解Android的反编译和代码混淆

    作用:查看APK中classes.dex转化成的jar文件,即源码文件 下面进行反编译资源文件和类文件: 反编译资源文件 资源文件:包括图片资源、布局资源、动画、样式等其他资源       这样资源文件都可以看得到了。 反...

    zxing.java源码解析-Confusion:Android代码混淆

    减小apk文件的大小,在混淆过程中会删除未使用过的类和成员 代码安全,使类、函数、变量名随机变成无意义的代号形如:a,b,c...之类。防止app被反编译之后能够很容易的看懂代码 3.怎样使用混淆: 在app下面的build....

    android 反编译工具

    android开发者对混淆学习理解的神器,通过dex2jar工具对改名解压缩后生成的.dex文件进行反编然后通过文件夹内置的 jd-gui打开jar包查看源码!

    Android 反编译工具

    通过个人测试蛮好用的,如果你的代码没有加混淆,通过这个工具能看到你源码哦!

    ndk-r17b编译及使用ollvm-tti步骤(提供编译后文件)

    10.在Android.mk中加入以下就能使用混淆功能了 LOCAL_CFLAGS := -mllvm -sub -mllvm -bcf -mllvm -fla -mllvm -sobf 四、编译后文件下载地址(文件太大上传不了,上传至网盘了) 1.备份NDK_PATH/toolchains/llvm...

    Android资源混淆工具

    源码AndResGuard,微信团队Android资源混淆工具。本文主要是讲述资源混淆组件的用法以及性能,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除...

    java源代码混淆器proguard4.8 + 安卓源码混淆配置文件(原创)

    proguard混淆器可以对多种平台的JAVA源代码进行混淆,增加反编译代价。proguard混淆器是开源的软件,压缩包内含全部最新版源代码。压缩包根目录下有我修改的安卓JAVA项目混淆配置文件,proguard自带的混淆配置文件在...

    Java混淆器Allatori-7.5@集成eclipse编译

    对外接口联调保护你的Java源码-Java混淆器Allatori-7.5@集成eclipse编译 Obfuscation with Setting Classpath Single Jar Packaging Introduction to Watermarks Using Stack Trace Utility Integration with Apache...

    java反编译源码-ReverseTool:逆向工具集合

    java反编译 源码 ReverseTool 逆向工具集合 Java & Jar (Android) jar包浏览工具,对应的IDE插件,JD-Eclipse/JD-IntelliJ An ...直接反编译apk apk的反编译,编译工具(smali格式) ...在线Android反编译工具 Hook T

    Android逆向助手

    Android apk反编译,可以拿到资源文件,未混淆的apk可以查看源码

    apktool+Smali2Java(android逆向助手,反编译)

    apktool+smali2java方式反编译,若项目为加固和混淆smail2java可直接打开项目看源码

    java反编译源码-android_app_security_crack:安卓应用的安全和破解

    总结安卓应用的安全措施和如何出于研究目的去破解安卓应用,其中介绍好多代的加密技术发展历史,包括常见的代码混淆,自我校验,dex文件变形,dex文件隐藏、so保护等等。总结了安卓的编译和反编译的基本流程和逻辑。...

    AndroidKiller_v1.3.1

    android 反编译工具,集成apktool,dex2jar,jd-gui,一键傻瓜式操作 PS:混淆后的APK反编译肯定会发生类名混乱 android studio Instant Run 方式生成的APK反编译会找不到源码

    android手机安全卫士

    软件的打包,混淆,反编译和三方广告的加入等技巧。 该项目主要涵盖以下几大功能: 手机防盗: 根据预设参数, 判断手机是否被盗,根据自定义协议发送手机中sim卡的信息和手机的位置信息给安全号码. 可以自定义特殊号码...

    Android插件框架Android-Plugin-Framework.zip

    此项目是Android插件框架完整源码以及实例。用来开发Android插件APK,并通过动态加载的方式在宿主程序中运行。 若插件APK是完全独立的APK,那么插件apk也可独立安装运行。 若插件APK不是完全独立的apk,比如...

Global site tag (gtag.js) - Google Analytics