`

安卓混淆jar包

 
阅读更多

最近在尝试才从其他sdk里获取数据,研究了一下jar包的混淆,主要是系统自带的proguardgui.bat来进行混淆,做个整理贴:

 

1.下面部分是混淆一个jar基本的proguard.pro

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-printmapping proguardMapping.txt
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes *Annotation*
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable

# 保留所有的本地native方法不被混淆
-keepclasseswithmembernames class * {
	native <methods>;
}

# 保留了继承自Activity、Application这些类的子类
# 因为这些子类,都有可能被外部调用
# 比如说,第一行就保证了所有Activity的子类不要被混淆
-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 * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService

# 如果有引用android-support-v4.jar包,可以添加下面这行
-keep public class com.xxxx.app.ui.fragment.** {*;}

# 保留在Activity中的方法参数是view的方法,
# 从而我们在layout里面编写onClick就不会被影响
-keepclassmembers class * extends android.app.Activity {
	public void *(android.view.View);
}

# 枚举类不能被混淆
-keepclassmembers enum * {
	public static **[] values();
	public static ** valueOf(java.lang.String);
}

# 保留自定义控件(继承自View)不被混淆
-keep public class * extends android.view.View {
	*** get*();
	void set*(***);
	public <init>(android.content.Context);
	public <init>(android.content.Context, android.util.AttributeSet);
	public <init>(android.content.Context, android.util.AttributeSet, int);
}

# 保留Parcelable序列化的类不被混淆
-keep class * implements android.os.Parcelable {
	public static final android.os.Parcelable$Creator *;
}

# 保留Serializable序列化的类不被混淆
-keepclassmembers class * implements java.io.Serializable {
	static final long serialVersionUID;
	private static final java.io.ObjectStreamField[] serialPersistentFields;
	private void writeObject(java.io.ObjectOutputStream);
	private void readObject(java.io.ObjectInputStream);
	java.lang.Object writeReplace();
	java.lang.Object readResolve();
}

# 对于R(资源)下的所有类及其方法,都不能被混淆
-keep class **.R$* {
	*;
}

# 对于带有回调函数onXXEvent的,不能被混淆
-keepclassmembers class * {
	void *(**On*Event);
}

 

 2.http://blog.csdn.net/educast/article/details/46672639

这个贴主要是看了下里面关于proguardgui.bat几个主要界面设置的地方,一开始设置有错,混淆一直失败,而且看不到什么有用的信息

 

3.如果不做处理,自己的写的类也会被改名,里面成员变量也会被改名,所以要做下处理,例如:

-keep public class com.example.confusionlib.SDKDisplay

 

4.在混淆自己写的类的过程中,发现很多方法本来是public,混淆之后变成了private,后面找到原因,是混淆的过程中优化了,后来我又写了一个类,用到了这个类里的方法,这些public的方法就没有变成private了

参考贴:

http://blog.csdn.net/hongweigg/article/details/54612647

 

 

  • 大小: 89.2 KB
分享到:
评论

相关推荐

    Android 混淆打包不混淆第三方jar包

    Android混淆打包不混淆第三方jar包Android 混淆打包不混淆第三方jar包

    Android studio和Eclipse分别生成jar包并混淆jar包的demo

    本文将深入探讨如何在Android Studio和Eclipse中生成jar包,并介绍混淆jar包的实践方法。 首先,我们来讨论在Android Studio中生成jar包的步骤: 1. **打开Android Studio项目**:确保你已有一个Android项目,然后...

    android jar包混淆

    Android JAR 包混淆详解 Android JAR 包混淆是一种保护 Java 代码的方式,它可以将 JAR 包中的代码混淆,使得攻击者无法轻易地反编译和盗用代码。混淆过程中,需要使用 ProGuard 工具,该工具可以将 JAR 包中的代码...

    对java jar包实现混淆加密

    本文将深入探讨如何对Java jar包进行混淆加密,以及相关工具的使用。 一、代码混淆的重要性 代码混淆的主要目的是使原始的Java代码变得难以理解和反编译。这通过改变类、方法和变量的名称,以及重排和优化代码结构...

    AndroidAPK及JAR包的代码混淆.pdf

    AndroidAPK及JAR包的代码混淆.pdf

    Gradle混淆_打包Jar包基础DEMO

    本示例聚焦于“Gradle混淆_打包Jar包基础DEMO”,它涉及到两个核心概念:Gradle混淆和使用Gradle打包Java应用程序为Jar包。 首先,让我们深入了解一下Gradle混淆。混淆是在Android开发中常用来保护代码安全、减小...

    Java Jar包混淆器proguard.v3.8

    Java的Jar包混淆器ProGuard v3.8是一款强大的代码优化和保护工具,主要用于Java和Android应用程序。在软件开发过程中,源代码的安全性和保密性至关重要,而ProGuard提供了一种有效的解决方案,它能够对编译后的字节...

    空白混淆jar包

    空白混淆jar包 里面有使用说明 修改了 proguard 5.33的 源码 增加程序 安全性

    android 生成aar/jar包包含第三方jar包没有第三方jar包怎么办

    里面涉及到一个第三方的包,这时候我生成aar/jar包给对方使用的时候,调用不到第三方包的代码,只可以调用我写的类的代码. 问题 我就去网上去寻找,aar/jar包生成包含第三方等问题.网上也有很多答案,我随便发一个别人的...

    Gradle混淆+打包Jar包基础

    总的来说,Gradle混淆和打包Jar包是Java和Android开发中必不可少的技能。通过配置Gradle脚本,我们可以实现高效的代码混淆以保护应用安全,同时也能方便地打包出符合需求的Jar文件。无论是简单的Java库还是复杂的...

    实现对jar包的混淆加密

    本文将深入探讨如何实现对jar包的混淆加密,以提高程序的安全性。 首先,我们需要了解混淆(Obfuscation)的概念。混淆是将可读性强的代码转换为难以理解的形式,使得反编译后的代码变得难以阅读和分析。这有助于...

    Gradle混淆+打包Jar包基础DEMO

    本文将深入讲解如何使用Gradle进行混淆和打包Jar包的基础操作。 首先,让我们了解什么是混淆。混淆是将代码中的类名、方法名和变量名转换为简短、无意义的名称的过程,目的是保护源代码不被轻易理解,同时也能减小...

    jar包混淆工具.zip

    "jar包混淆工具.zip"就是这样一个工具,它包含了混淆jar包所需的功能。 混淆工具的主要目的是通过重命名类、方法和变量,使得反编译后的代码变得难以理解和分析。这不仅增加了代码的安全性,还能有效减少jar包的...

    Gradle混淆_打包Jar包测试代码

    本篇文章将深入探讨Gradle在混淆和打包Jar包方面的知识,特别是针对测试代码的处理。 首先,我们要了解混淆在Android开发中的意义。混淆是一种优化技术,它主要通过重命名类和方法,缩短代码的名称,以减小最终生成...

    android工程正确导入jar包

    ### Android工程正确导入jar包的方法 在Android开发过程中,经常需要使用第三方库来实现特定功能或简化开发流程。这些第三方库通常是以jar包的形式提供的。本文将详细介绍如何正确地将jar包导入Android项目中,并...

    android 混淆 去除第三方jar

    Android Studio默认集成了ProGuard工具,它是Android混淆的核心。ProGuard不仅可以混淆代码,还能优化、压缩和删除未使用的类和方法。 标题提到的“android 混淆 去除第三方jar”,意味着我们需要处理包含在项目中...

    Android studio利用gradle打jar包并混淆的方法详解

    本文主要介绍了Android studio利用gradle打jar包并混淆的方法,下面话不多说,来看看详细的介绍吧。 首先打jar包的配置很简单,使用jar的task,可以参考gradle官方文档,具体代码如下: task buildJar(type: Jar, ...

    android jar包

    在本案例中,"android jar包"指的是专为Android平台设计的`.jar`文件,它们通常包含了Android SDK中的API接口或者第三方库的功能。 Android开发中的`jar`包主要分为以下几类: 1. **Android SDK库**:这些`jar`包...

    android 反编译jar包

    在Android开发过程中,有时我们需要对已有的jar包进行反编译,以便查看其源代码、理解内部实现或者进行二次开发。这个过程涉及到一系列的技术和工具,主要包括dex2jar、JD-GUI、Apktool等。下面将详细介绍这些知识点...

    android proguard5.3.3混淆包

    直接 替换 5.3.3版本的 混淆jar包 Mac 路径为 Contents/gradle/m2repository/net/sf/proguard/proguard-base Win gradle/m2repository/net/sf/proguard/proguard-base 为了安全 先备份原来的 jar 将gradle...

Global site tag (gtag.js) - Google Analytics