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

Android 代码混淆 混淆方案

代码压缩 代码混淆是包含了代码压缩、优化、混淆等一系列行为的过程。如上图所示,混淆过程会有如下几个功能: 压缩。移除无效的类、类成员、方法、属性等; 优化。...分析和优化方法的二进制代码;根据proguard-android-optimize.txt中的描述,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行。 混淆。...自定义混淆规则 在上文“混淆配置”中有这样一行代码 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro...最后附上一个我在实际项目中的混淆方案 proguard-android.txt文件内容 # 代码混淆压缩比,在0~7之间 -optimizationpasses 5 # 混合时不使用大小写混合,混合后的类名为小写...安全攻防战,反编译与混淆技术完全解析(下) Android混淆从入门到精通 Android代码混淆之ProGuard 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/

2.3K30

android代码混淆

为了防止重要code 被泄露,我们往往需要混淆(Obfuscation code , 也就是把方法,字段,包和类这些java 元素的名称改成无意义的名称,这样代码结构没有变化,还可以运行,但是想弄懂代码的架构却很难...缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素的名称,否则就会这样就会导致程序出错。 一, 我们用到反射的地方。...proguard 问题和风险 代码混淆后虽然有混淆优化的好处,但是它往往也会带来如下的几点问题 1,混淆错误,用到第三方库的时候,必须告诉 proguard 不要检查,否则proguard 会报错。...2,运行错误,当code 不能混淆的时候,我们必须要正确配置,否则程序会运行出错,这种情况问题最多。 3,调试苦难,出错了,错误堆栈是混淆后的代码 ,自己也看不懂。...为了避免风险,你可以只是混淆部分关键的代码,但是这样你的混淆的效果也会有所降低。 常见的不能混淆的androidCode Android 程序 ,下面这样代码混淆的时候要注意保留。

1.5K80
您找到你想要的搜索结果了吗?
是的
没有找到

Android代码混淆混淆规则

请尊重他人的劳动成果,转载请注明出处:《Android代码混淆技巧》 因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。...ProGuard默认会对第三方库也进行混淆的,而第三方库有的已经混淆过了,有的使用了Java反射技术,所以我们在进行代码混淆的时候要排除这些第三方库。...Eclipse+ADT时需要加入-libraryjars libs/…,如果你是使用Android Studio开发的项目则不需要加入libs包中的jar包,这是因为,通过Android Studio进行混淆代码时...jpush-sdk-release1.7.1.jar -keep class cn.jpush.** { *; } -keep public class com.umeng.fb.ui.ThreadView { } #双向反馈功能代码混淆...开发之反编译与防止反编译》 《Android代码混淆指南》 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139053.html原文链接:https://javaforall.cn

1.4K20

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

一、混淆的意义 混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。...不仅仅是代码,没有被调用的资源同样也会被移除掉,因此minifyEnabled除了混淆代码之外,还可以起到压缩APK包的作用。...(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.6K30

Android 代码混淆机制

Android 代码混淆机制 由于Android项目是基于java语言的,而java属于高层抽象语言,易于反编译,其编译后的程序包包含了大量的源代码变量、函数名、数据结构等信息,根据其编译打包后的APK...原理 android平台的混淆原理是把代码中原来有具体含义的包名,类名,变量名,方法名等名称全部替换成按顺序排列的无意义的英文字母a、b、c….这样代码结构没有变化,还可以运行得到一样的结果,并且就算代码被反编译出来...具体方法 比较常用的方法有以下两种: 一、通过eclipse混淆代码 启用代码混淆 找到Android项目目录下的project.properties文件,如果需要对项目进行全局混码,只需要进行一步操作...编写混淆脚本 找到Android项目目录下的“proguard-project.txt”文件,在proguard-project.txt文件中,你需要做的就是指定混淆规则,还有指明要过滤那些文件或代码块...二、通过ProGuard工具混淆代码 如果你想把你的Android项目打包成jar文件然后再混淆,那这种方法比较适合 下载运行ProGuard工具 1.首先到http://proguard.sourceforge.net

1.2K20

Android 代码混淆规则

如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆的,这就需要我们手动编写混淆规则来保持不能被混淆的部分。 2....Proguard作用 Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系...-dontoptimize 关闭优化 -optimizationpasses n 表示proguard对代码进行迭代优化的次数,Android一般为5 混淆(Obfuscation):默认开启,增大反编译难度...混淆后默认会在工程目录app/build/outputs/mapping/release下生成一个mapping.txt文件,这就是混淆规则,我们可以根据这个文件把混淆后的代码反推回源本的代码,所以这个文件很重要...原则上,代码混淆后越乱越无规律越好,但有些地方我们是要避免混淆的,否则程序运行就会出错。

2.4K10

Android 简单的代码混淆

Android代码混淆是开发者需要了解的相关知识,它能够防止android应用程序的反编译。...因为android程序多数是java语言开发的,而java代码很容易被反编译,所以为了使android应用程序代码应用一定的安全性,进行android代码混淆是非常有必要的。...在了解代码混淆之前,先了解android的反编译。进行android的反编译需要借助两个工具dex2jar和jd-gui。 1.代码的反编译 在两个工具准备好之后,将apk文件的直接解压。...用jd-gui打开该文件,即可看到android应用程序的源代码。 ? 2.代码混淆android工程中添加proguard.cfg.文件。...可以看到,代码都已经进行编译过了。未签名的apk包并不能够安装,还需要将apk进行签名。

1.2K70

Android代码混淆常见配置

Android代码混淆常见配置 1.manifest中注册的都不能混淆,如果混淆了就找不到了,所以一下类不能被混淆,一般保持原样。...keep就是 告诉proguard不用混淆这个类 2.第三方包不能混淆 找到应用中引入的包 查看包的包名; -libraryjars libs/android-support-v4.jar...dump.txt: 描述.apk文件中所有类文件的内部结构 mapping.txt: 列出原始类的方法、字段与混淆后的代码间的映射,这个文件比较重要,如果你的代码混淆后会产生bug的话,log提示中是混淆后的代码...,希望定位到源代码的话就可以根据mapping.txt反推。...sends.txt: 列出了未被混淆的类和成员 usage.txt 列出了在apk中删除的代码 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139353.html

63210

Android Studio代码混淆插件

最近有人在公众号的后台留言说让我讲讲Android代码混淆,我最近也正在想这个问题,怎样才能把混淆讲清楚和明白,不过这回不愁了,正好有人来投稿。而且还是插件化的,非常方便,不妨大家可以试着用一下。...之前给公司的App添加代码混淆,在代码混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆。...截图 第三方库列表清单 目前插件的后台已集成了如下图的第三方开源库的代码混淆以及基本的代码混淆,还在努力地添加中,也欢迎大家通过new issue提交列表中没有的第三方开源库混淆代码。...,经过我实验得出:对于多个Module的项目,在应用的Module(即app)下的proguard-rules.pro文件添加混淆代码以及在Gradle里minifyEnabled开启即可。...最后 我知道项目的代码混淆一般通常混淆一次就可以了,很多人认为这个插件的意义不太,但是我可以告诉你我也是这么想的,可是我也无办法阻止我的行动~哈哈~~ 项目GitHub地址:https://github.com

1.1K90

Android 代码混淆配置总结

一、前言 为何需要混淆呢?简单的说,就是将原本正常的项目文件,对其类,方法,字段,重新命名,a,b,c,d,e,f…之类的字母,达到混淆代码的目的,这样反编译出来,结构乱糟糟的,看了也头大。...另外说明一下,本文的混淆总结基于Android Studio的IDE开发环境。...二、官方默认的混淆配置 其实在android Studio中做混淆,基本就是对Proguard-rules.pro文件的操作。混淆的过程也是有规律可循的。...因为代码混淆,类名、方法名、属性名都改变了,而反射它还是按照原来的名字去反射,结果只射出一个程序崩溃 注解用了反射,所以不能混淆。...Activity不能混淆,因为AndroidManifest.xml文件中是完整的名字 自定义view也是带了包名写在xml布局中,不能混淆 六、混淆后使用时常见问题 当项目中出现so的native代码找不到

2.2K10

详解Android代码混淆实战

什么是代码混淆Android SDK 自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。...如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆的,这就需要我们手动编写混淆规则来保持不能被混淆的部分。...为什么要混淆: 优化java的字节码 减小apk文件的大小,在混淆过程中会删除未使用过的类和成员 代码安全,使类、函数、变量名随机变成无意义的代号形如:a,b,c…之类。...防止app被反编译之后能够很容易的看懂代码 怎样使用混淆 在app下面的build.gradle添加使用混淆 buildTypes { release { //开启混淆,删除无用代码...{ public void *(android.webkit.webView, jav.lang.String); 保留自己的项目部分代码不能被混淆(需要更具自己项目) 网络请求(如果混淆,就会发生字段的错乱

1.4K51

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

Apk文件被反编译出来能被获取到里面的代码。对于这种情况,我们可以对项目代码进行混淆,随机生成难理解的类名,方法名,让代码难以阅读,加大功能被盗取的难度。...使用方式,在gradle文件中设置minifyEnabled为true即可开启混淆 buildTypes { release { minifyEnabled ture //是否开启代码混淆 proguardFiles...混淆设置参数 -optimizationpasses 4 代码混淆的压缩比例,值介于0-7 -dontusemixedcaseclassnames 混淆后类型都为小写 -dontskipnonpubliclibraryclasses...{ public static final android.os.Parcelable$Creator *; } 保持第三方包不混淆,比如这里用到微信、支付宝支付第三方 #支付宝混淆 -keep...完整混淆示例: #指定代码的压缩级别 -optimizationpasses 5 #包名不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses

2.7K30

读懂 Android 中的代码混淆

Android开发工作中,我们都或多或少接触过代码混淆。比如我们想要集成某个SDK,往往需要做一些排除混淆的操作。 本文为本人的一些实践总结,介绍一些混淆的知识和注意事项。...希望可以帮助大家更好的学习和使用代码混淆。...什么是混淆 关于混淆维基百科上该词条的解释为 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。...代码混淆影响到的元素有 类名 变量名 方法名 包名 其他元素 混淆的目的 混淆的目的是为了加大反编译的成本,但是并不能彻底防止反编译....四大组件不建议混淆 Android中四大组件我们都很常用,这些组件不能被混淆的原因为 四大组件声明必须在manifest中注册,如果混淆后类名更改,而混淆后的类名没有在manifest注册,是不符合Android

1.5K20

Android代码混淆及反编译

而在企业中对Java代码混淆却是一步很重要的步骤,从安全的角度来说,代码混淆,防止居心不良的人对代码进行恶意篡改非常重要。下面就是对Android项目进行的代码混淆和加密签名过程。....jar 如下: 4.项目右键—>Export—>Android—>Export Android Application—>Next 5.Next过第一步之后,会进入Keystore selection...的会话框,填写如下信息: 6.在接下来的Key Creation会话框中填写如下格式的信息: 7.配置好你的Apk文件名称,最后Finish 如果不出意外,到这里会很愉快地结束,并得到你想得到的经过混淆后的...See console: 这个问题是由于代码混淆引起的,找不到引用包。只需在你的proguard.cfg中添加如下两行即可。...-ignorewarnings -libraryjars libs/android-support-v4.jar 你可以根据你的项目提示,添加需要的jar。

60420

Android代码混淆的写法总结

Apk文件被反编译出来能被获取到里面的代码。对于这种情况,我们可以对项目代码进行混淆,随机生成难理解的类名,方法名,让代码难以阅读,加大功能被盗取的难度。...使用方式,在gradle文件中设置minifyEnabled为true即可开启混淆 buildTypes { release { minifyEnabled ture //是否开启代码混淆...混淆设置参数 -optimizationpasses 4 代码混淆的压缩比例,值介于0-7 -dontusemixedcaseclassnames 混淆后类型都为小写 -dontskipnonpubliclibraryclasses...{ public static final android.os.Parcelable$Creator *; } 保持第三方包不混淆,比如这里用到微信、支付宝支付第三方 #支付宝混淆 -keep...完整混淆示例: #指定代码的压缩级别 -optimizationpasses 5 #包名不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses

4.9K10

Android混淆代码错误堆栈还原

前言 相信做过app的同学对代码混淆应该不陌生吧,如果陌生就自行百度,这里不做普及。我们先思考一个问题,如果我们把代码混淆了,如果出错了怎么定位问题?...答案非常简单,只要稍微实践下你就明白了,下面就是给你整理的对混淆代码错误堆栈还原的方法。 如何混淆?...Android Studio实现混淆很简单,只需要在build.gradle进行如下配置即可: buildTypes { release { minifyEnabled...} } 这个是在发布模式下去混淆代码的,如果想在调试模式下混淆代码,就增加一个debug的配置即可: debug { minifyEnabled true...} mapping.txt文件 mapping文件是我们要实现混淆代码还原必须要关注的一个文件,它里面存放着源码到混淆之后的代码的映射信息,这个文件是在我们执行proguard之后产生的,产生的位置如下图所示

1.9K50

android开发笔记之 Android代码混淆打包

大家应该都听过代码混淆吧,如果大家有去反编译过别人的APK的话,应 该会看到好多包名和类名是a,b.c….之类的的吧,这里就提到了一个概念: 混淆。...那就让我们了解下这个东西吧 作用:为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译 缺省情况下,proguard 会混淆所有代码,但是下面几种情况是不能改变java 元素的名称,否则就会这样就会导致程序出错...为了避免风险,你可以只是混淆部 分关键的代码,但是这样你的混淆的效果也会有所降低。...常见的不能混淆的androidCode Android 程序 ,下面这样代码混淆的时候要注意保留。 Android系统组件,系统组件有固定的方法被系统调用。...那下面我们举个小例子看看如何自己写代码控制是否混淆

69320

android混淆

为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1....大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这个对混淆代码很重要,如果你不小心删掉了,没关系,从其他地方拷贝一个过来 2....将你不需要混淆的部分申明进来,因为有些类经过混淆会导致程序编译不通过,如下: -keep public class * extends android.app.Fragment   -keep public...,一般model最好避免混淆(model无关紧要,不混淆也没多大关系)如: -keep class com.bank.pingan.model.** { *; } 下面在贴上关于Umeng分享统计的避免混淆的申明...OK, 最后一步,打签名包测试,如果有问题,仔细看下Log也许有得类不能混淆,那么你得加入到proguard-project.txt文件中 -------以上就是混淆代码的全过程了 最后贴上proguard-project.txt

1.3K90
领券