首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

android混淆基本指令

Android混淆基本指令是指在Android应用程序开发中,使用混淆工具对代码进行混淆处理的一系列基本指令。混淆是一种代码保护技术,通过对代码进行重命名、删除无用代码、替换常量等操作,使得代码变得难以阅读和理解,从而增加逆向工程的难度,提高应用程序的安全性。

混淆的主要目的是防止恶意用户对应用程序进行反编译,获取源代码或敏感信息,以及防止代码被用于非法用途。以下是一些常见的Android混淆基本指令:

  1. -keep:保持指定类、方法、字段的名称不被混淆。可以使用通配符*来匹配多个类、方法或字段。
  2. -dontwarn:禁止显示指定类或包的警告信息。
  3. -keepnames:保持指定类、方法、字段的名称不被混淆,并且不移除无用的代码。
  4. -keepclassmembers:保持指定类的成员(方法、字段)的名称不被混淆。
  5. -keepattributes:保持指定类、方法、字段的指定属性不被移除。
  6. -optimizationpasses:指定混淆优化的次数。
  7. -dontoptimize:禁止进行混淆优化。
  8. -dontshrink:禁止进行代码压缩,即不移除无用的代码。
  9. -printmapping:打印混淆后的映射关系,即混淆前后的类、方法、字段的对应关系。
  10. -obfuscationdictionary:指定自定义的混淆字典文件,用于替换类、方法、字段的名称。

Android混淆工具常用的有ProGuard和R8。ProGuard是一个开源的Java字节码优化和混淆工具,可以用于Android应用程序的混淆。R8是Google在Android Gradle插件3.4.0及更高版本中引入的新一代混淆工具,取代了ProGuard。

混淆可以有效地保护Android应用程序的安全性,但需要注意的是,混淆可能会导致一些问题,如代码错误、资源引用错误等。因此,在进行混淆之前,需要进行充分的测试和验证,确保应用程序的功能和性能不受影响。

腾讯云提供了一系列与Android应用程序开发相关的云服务和产品,如云服务器、云数据库、云存储等,可以帮助开发者构建稳定、安全的Android应用程序。具体产品信息和介绍可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android混淆

为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1....将你不需要混淆的部分申明进来,因为有些类经过混淆会导致程序编译不通过,如下: -keep public class * extends android.app.Fragment   -keep public....** -keep public class com.android.vending.licensing.ILicensingService --以上都是API里边的类,最好都要避免混淆 有些很特殊的...,一般model最好避免混淆(model无关紧要,不混淆也没多大关系)如: -keep class com.bank.pingan.model.** { *; } 下面在贴上关于Umeng分享统计的避免混淆的申明...,最后需要做的就是在project.properties文件中加上你的混淆文件申明了,如下:    proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt

1.3K90
  • android 混淆规则作用,Android代码混淆详解

    一、混淆的意义 混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。...二、混淆的规则和配置 凡是需要在AndroidManifest.xml中去注册的所有类的类名以及从父类重写的方法名都自动不会被混淆。...(4)proguard-android.txt和proguard-rules.pro proguard-android.txt:代表系统默认的混淆规则配置文件,该文件在/tools/proguard下,...proguard-rules.pro:代码表当前Project的混淆配置文件,在app module下,可以通过修改该文件来添加适用当前项目的混淆规则。...mapping.txt : 列出了原始的类、方法和名称与混淆代码间的映射。 seeds.txt : 列出了没有混淆的类和方法。 usage.txt : 列出congapk中删除的代码。

    1.8K30

    Android代码混淆混淆规则

    请尊重他人的劳动成果,转载请注明出处:《Android代码混淆技巧》 因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。...ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。...Eclipse+ADT时需要加入-libraryjars libs/…,如果你是使用Android Studio开发的项目则不需要加入libs包中的jar包,这是因为,通过Android Studio进行混淆代码时...################common############### -keep class com.jph.android.entity.** { *; } #实体类不参与混淆 -keep class...com.jph.android.view.** { *; } #自定义控件不参与混淆 ################baidu map############### -libraryjars libs

    1.5K20

    Android 混淆打包

    混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读...优化optimizes:对字节码进行优化,移除无用的指令混淆obfuscates:使用a,b,c,d等简短而无意义的名称,对类,字段和方法进行重名,这样即使代码被逆向工程,对方也比较难以读懂。...,一般的可配置不混淆第三方库 基本配置 -optimizationpasses 5  #指定代码的压缩级别 0 - 7,一般都是5,无需改变 -dontusemixedcaseclassnames #不使用大小写混合...* extends android.support.v4.** -keep public class * extends android.app.Fragment  #所有fragment的子类不要去混淆...com.android.vending.licensing.ILicensingService #保持指定规则的方法不被混淆Android layout 布局文件中为控件配置的onClick方法不能混淆

    1.5K30

    android代码混淆

    proguard 原理 Java代码编译成二进制class 文件,这个class 文件也可以反编译成源代码 ,除了注释外,原来的code 基本都可以看到。...为了避免风险,你可以只是混淆部分关键的代码,但是这样你的混淆的效果也会有所降低。 常见的不能混淆的androidCode Android 程序 ,下面这样代码混淆的时候要注意保留。...Android系统组件,系统组件有固定的方法被系统调用。 被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View 。...其他Anroid 官方建议 不混淆的,如 android.app.backup.BackupAgentHelper android.preference.Preference com.android.vending.licensing.ILicensingService...自定义View Android Parcelable Android R 文件 Android Parcelable 枚举 各个开发人员必须检查自己的code 是否用到反射 ,和其他不能混淆的地方

    1.6K80

    【Linux】基本指令

    目录 cat指令 echo和>和>> more指令 less指令(重要) head指令 tail指令 wc指令 时间相关的指令 Cal指令 find指令:(灰常重要) -name grep...指令 zip/unzip指令 tar指令(重要):打包/解包,不打开它,直接看内容 bc指令 uname –r指令 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d 关机 前言...管道可以级连多条指令。如下图: wc指令 wc -l指令用来统计文件总共有多少行。...如果想通过云服务器,将压缩包下载到本地,需要用sz指令,使用sz指令前,需要先安装。输入yum -y install lrzsz 回车即可 。rz指令是从本地读取到云服务器中。...uname –r指令 语法:uname [选项] 功能: uname用来获取电脑和操作系统的相关信息。 补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

    10710

    Android 安全】DEX 加密 ( ProGuard 混淆 | -keepclassmembers 混淆效果 | -keepclasseswithmembernames 混淆效果 )

    文章目录 一、Proguard 默认混淆结果 二、-keepclassmembers 混淆效果 二、-keepclasseswithmembernames 混淆效果 更多 ProGuard 混淆配置参考...: https://www.guardsquare.com/en/products/proguard/manual/usage 一、Proguard 默认混淆结果 ---- ProGuard 的默认混淆结果...) 不被混淆 , 类名还是会被混淆的 ; # 指定 kim.hsl.handler.Handler 类成员不被混淆 -keepclassmembers public class kim.hsl.handler.Handler...在编译后的结果中 , 类名与成员名称都被混淆了 , 因为没有配置不被混淆的成员 ; 使用 -keepclassmembers 指定保留 Handler 中的 public void *(*) 样式的方法不被混淆...*(*); } 下面是在一个被混淆的类中 , 找到了没有被混淆的 kim.hsl.handler.Handler 的成员方法 ; 二、-keepclasseswithmembernames 混淆效果

    4.5K00

    android混淆那些坑

    proguard-android.txt’是Android SDK中自带的一个基本Progurad配置文件,默认是空白的,需要由开发者自行添加哪些需要混淆哪些不混淆,形如: -ignorewarning...class/merging/* # 混淆时所采用的算法 -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -keep...优化(OPtimize):对字节码进行优化,移除无用指令混淆(Obfuscate):使用a、b、c、d这样简短而无意义的名称,对类、字段和方法进行重命名。...主要有三步骤: 基本混淆 # 代码混淆压缩比,在0~7之间,默认为5,一般不下需要修改 -optimizationpasses 5 # 混淆时不使用大小写混合,混淆后的类名为小写 # windows下的同学还是加入这个选项吧...public class * extends android.app.Fragment 混淆注意事项 混淆必须对项目不造成任何崩溃问题。

    3.2K60

    android 混淆不起作用,Android代码混淆的写法总结

    对于这种情况,我们可以对项目代码进行混淆,随机生成难理解的类名,方法名,让代码难以阅读,加大功能被盗取的难度。混淆可以起到压缩Apk,混淆文件,预检,优化的作用。 1....getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } 混淆内容在proguard-android.txt文件中写...-keep public class * extends android.preference.Preference 保持 native 方法不被混淆 -keepclasseswithmembernames...static ** valueOf(java.lang.String); } 保持 Parcelable 不被混淆 -keep class * implements android.os.Parcelable...{ public static final android.os.Parcelable$Creator *; } 保持第三方包不混淆,比如这里用到微信、支付宝支付第三方 #支付宝混淆 -keep

    3.2K30

    Android-Proguard(混淆)

    大家看到了,有两个混淆文件,proguard-android.txt和proguard-rules.pro,proguard-rules.pro是我们需要自己编写的混淆文件,proguard-android.txt...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它包括资源混淆,字符串加密,类加密和dex文件分割等。...二:接下来我们来说一说混淆基本规则: ? 但如果你用两颗星,会发现,虽然类名被保持了,但里面的变量名啥的都变了,那如果我们既要本包保持类名和内容又要子包保存呢?...$ 符号 -keep class com.xzt.demotwo.MainActivity$MyClass{*;} #使用Java的基本规则来保护特定类不被混淆,比如用extends,implement...等这些Java规则, #如下:保持Android底层组件和类不要混淆   -keep public class * extends android.app.Activity   -keep public

    1.4K40

    Android 代码混淆机制

    Android 代码混淆机制 由于Android项目是基于java语言的,而java属于高层抽象语言,易于反编译,其编译后的程序包包含了大量的源代码变量、函数名、数据结构等信息,根据其编译打包后的APK...如果大家想避免自己的成果被别人夺取,然后重新修改策划而额外增加的工作量,那就尽量得自己的Android项目加上混淆吧。...(android.content.Context, android.util.AttributeSet); #保持自定义控件类不被混淆,指定格式的构造方法不去混淆 } -keepclasseswithmembers...class * extends android.app.Activity { public void *(android.view.View); #保持指定规则的方法不被混淆Android...Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件。

    1.5K20

    Android 混淆问题排查

    2、考虑到关闭混淆正常,开启混淆异常,那么就定位到时混淆的问题 3、既然是混淆问题那就查看混淆配置文件proguard-rules.pro,基本的配置都已经防混淆了 4、接下来的思路就是通过反编译来查看...我们的BaseApplication继承的application被混淆了 那么在’proguard-rules.pro’中加入一句-keep class android.app.**{*;} 运行后报错如下...结论 综上,我们可以分析出来是我们的android包下面的文件都被混淆了,于是我们把-keep class android.content.**{*;}和-keep class android.app....**{*;}合二为一-keep class android.**{*;} 不过按照道理来讲这个不应该被混淆,系统会做处理,猜测可能是某个配置导致系统的一些配置失效,至于该工程为啥这么奇葩待后续分析。...所以以后遇到混淆的问题就按照提示一步一步排查,一定要反编译文件来分析问题,不然无法定位原因。 还有第一次混淆后建议反编译查看一下包里面的代码,有没有需要混淆的核心代码被keep掉了。

    2.3K20

    Android 混淆那些事儿

    混淆代码的反编译操作非常简单,网上有很多教程, 也可以通过使用Android Studio自带的apk分析工具(Build—-Analyze APK)直接看到未混淆Apk的源代码和原始的资源文件。...在看自定义的混淆文件之前,先讲解一下Filters和assumenosideeffects,以便更好地理解下面的指令。 (1)Filters ?...(2)-assumenosideeffects 指令: 下文会用在android log的移除上 assumeosideeffects是Optimization过程中的选项,所以为保证指令的有效,需要开启...这个指令的含义是Proguard会在optimization过程中删除对这些方法的调用,需要注意:Only use this option if you know what you’re doing!...请参见ProGuard官方问题解答; 参考文献: 1、Android 项目的代码混淆Android proguard 使用说明 2、google 混淆官方文档 3、混淆官方网址 4、Android混淆快速配置之

    3.3K50
    领券