导航:首页 > 操作系统 > android混淆资源文件

android混淆资源文件

发布时间:2023-01-19 23:04:25

android打包的时候能混淆吗

可以的,不过为了保证源码及APP的安全最好还是对APP进行一下加固,可以有效保护自己的核心代码算法,提高破解、盗版程序和二次打包的难度;技术层面,APP加壳可以缓解代码注入、动态调试、内存注入攻击,加强了APP的安全。爱加密服务商一直在保护移动应用的安全发展,采用三代加密技术,通过dex加壳原理、内存防护、so库文件加密、资源文件加密等多个技术协同保护手段,为移动互联网开发者和移动互联网企业提供安全可靠的APP保护方案。

㈡ 写给Android 混淆小白的快速混淆方法

简单来说,Android 进行ProGuard,可以起到压缩,混淆,预检,优化的功能,虽然不能说更安全但还是一个不容忽视的环节。

首先在build.gradle 中将混淆的开关打开,即 minifyEnabled 置为 true

然后就要去proguard-rules.pro写入我们的混淆的规则(如文件其名),防止重要的类被混淆移除了。

省事第一步,先套个模板,就是找到网上博客上别人分享好的模板,像四大组件,主流开源库,JNI调用本地方法,R资源等的混淆规则都一般有了,注意一点就是套模板,也要套个时间比较近的,没有翻车的模板,可以能比较节省自己的时间,毕竟这么多行不一定能快速看出来,打个包出来才发现有问题就尴尬啦。

一般来说,用了混淆的模板后,我们还会有很多项目专属的需要混淆的部分,例如我们的自定义View,Json解析的实体类,反射用到的类,还有我们依赖的非主流的开源框架,SDK等等。
对于自定义View,很多的模板都会将继承与View的类用keep指令防止被混淆。有个偷懒的方法就是把自定义View 放入同一个包,再把这个包的类都写入混淆规则,就可以搞定了。
对于Json解析的实体类,反射用到的类都是同理可得,找到那些不能被移除的,把它们写入自己的混淆规则里面。

所以如果在做项目时,有提前想到要给项目做混淆的,在导入依赖时就顺手把对应混淆规则写了,那事后就快活似神仙了。

首先,先判断下它是否内置了混淆规则。如果不声明它的混淆规则也正常运行,说明已经它带了混淆。

但是生活往往不会一帆风顺,一般来说会有各种报错,所以还是需要对它声明混淆。

最简单的办法就是找到依赖的这个包,就这个包的类都写入混淆规则。例如:

项目里导入了一个非主流的开源库,然后我需要对它写入混淆规则,确保它能正常工作。

这时候不可以认为直接去使用它的地方,将有关它 import的类 keep class 就可以。

因为可能它内部还会使用包内其他类,所以最好仔细排查,最简(tou)单(lan)就是把这个包的类都 用 keep 指令,防止它们被混淆。如下所示:

一般来说就可以防止这个开源库里的类被混淆了。

例如

先使用 -libraryjars 命令 ,对导入的jar包和 so 文件进行声明保留它们。

如果依旧出错,尝试去External library文件夹 或者使用 这个SDK的地方 找到这个 SDK的包找到,并把这个包里的类 都用 keep 指令保持不被移除。如:

根据包名,写入混淆规则

一般来说,这样就可以避免这个SDK的类被混淆啦

好了,最后附上一份自己做的项目的混淆规则(伪模板)

㈢ android mk文件怎么加混淆

针对android 选择user版本进行编译的时候,会出现proguard错误,我们需要知道的事情

1.proguard是做什么的,他的作用是将java代码进行混淆的工具

2.因为proguard是混淆工具,所以android的mk文件也对其支持为两种方式:

1.指定不需要混淆的native方法与变量的proguard.flags文件
如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags

2.制定编译的工程,不要使用代码混淆的工具进行代码混淆
如:LOCAL_PROGUARD_ENABLED := disabled
3.不设置,默认使用LOCAL_PROGUARD_ENABLED := full.即将该工程代码全部混淆

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在Android项目中用到JNI,当用了proguard后,发现native方法找不到很多变量,原来是被proard优化掉了。所以,在JNI应用中该慎用progurad啊。

解决办法:
1、在Android.mk中加入一行:
LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
2、创建proguard.flag文件,里面写入不需要proguard优化的类和方法。例如:

-keep class oms.miracle.mobiletv.broadcast.ServiceContext {
*;
}

我的这个类是和JNI相关的,不想让proguard去优化而引起错误,向上面写就能实现。

----------下面是网上找到的一些proguard的资料,贴出来分享:
ProGuard是一个免费的java类文件压缩,优化,混淆器.它探测并删除没有使用的类,字段,方法和属性.它删除没有用的说明并使用字节码得到最大优化.它使用无意义的名字来重命名类,字段和方法.

ProGuard的使用是为了:

1.创建紧凑的代码文档是为了更快的网络传输,快速装载和更小的内存占用.
2.创建的程序和程序库很难使用反向工程.
3.所以它能删除来自源文件中的没有调用的代码
4.充分利用java6的快速加载的优点来提前检测和返回java6中存在的类文件.

参数:

-include {filename} 从给定的文件中读取配置参数

-basedirectory {directoryname} 指定基础目录为以后相对的档案名称

-injars {class_path} 指定要处理的应用程序jar,war,ear和目录

-outjars {class_path} 指定处理完后要输出的jar,war,ear和目录的名称

-libraryjars {classpath} 指定要处理的应用程序jar,war,ear和目录所需要的程序库文件

- 指定不去忽略非公共的库类。

- 指定不去忽略包可见的库类的成员。

保留选项
-keep {Modifier} {class_specification} 保护指定的类文件和类的成员

-keepclassmembers {modifier} {class_specification} 保护指定类的成员,如果此类受到保护他们会保护的更好

-keepclasseswithmembers {class_specification} 保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。

-keepnames {class_specification} 保护指定的类和类的成员的名称(如果他们不会压缩步骤中删除)

-keepclassmembernames {class_specification} 保护指定的类的成员的名称(如果他们不会压缩步骤中删除)

-keepclasseswithmembernames {class_specification} 保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)

-printseeds {filename} 列出类和类的成员-keep选项的清单,标准输出到给定的文件

㈣ 资源文件及AndroidManifest.xml等配置文件怎么混淆

混淆是针对代码而言的,让别人不容易读懂而已,你这不是混淆了,应该是加密

其实如果你有重要信息,完全没必要放到AndroidManifest.xml中,放到其他地方啊。或者,你的很隐私的key,在你的程序中有一套这个key的加密算法,比如你的manifest上是key="asdfsdf0003+____#3oidf",别人哪知道他干嘛的,或者别人拿了也不能知道他其实对应的是"ABC"这种的,因为它本身就是加密的

㈤ 怎么打Android的混淆包

Android 编程下的代码混淆,Java 语音是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成 Java 源代码。为了防止这种现象,我们可以使用 Java 混淆器对 Java 字节码进行混淆。

混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和指令集,执行结果也与混淆前一样,只是混淆器将代码中的所有变量、函数、类的名称变为简短的英文字母代号,在缺乏相应的函数名和程序注释的况下,即使被反编译,也将难以阅读。Android代码混淆之后可以保证代码的一定安全,但保护并不全面。

推荐你使用“爱加密”他们提供了保护措施,包括:DEX加壳保护,DEX指令动态加载保护和高级源码混淆保护。其中DEX加壳保护通过将DEX文件隐藏,并生成一个类似于虚像的壳文件,阻止黑客利用反编译工具获取App源码。另外,爱加密在年前还推出了so库保护,使得C/C++ 层面的代码安全也得到防护。加上资源文件保护(图片、音频等文件的防查看和防修改)、xml 主配文件保护(对主配文件进行二次签名)、内存保护等措施,可以基本保证App的动态和静态安全。你可以看下。

㈥ android 混淆

其实不要混淆的主旨就在于混淆会改变方法的名字,类的名字,但是对于外部的一些引用是通过名字找到对应的方法,类,这些可能是通过string找到方法,类,但是string里的字段是不会进行混淆,所以还是会保留原来的名字,这样混淆过后通过原来的名字去找混淆后的名字,是肯定找不到,所以就会报出nosuchfileException,(对于gson,反射,jsbridge,第三方库都是这个原因),至于说枚举类型,我还暂时没懂 为什么,还望共同学习,一起成长。
文章是读了两篇博客写出来,也是自己总结,消化成自己的知识了,若有什么错误的地方,还望指出,相信读了这两篇文章之后你也会懂混淆,一个是如何混淆,一个是哪些该混淆,为什么不能混淆

-keepclasseswithmembernames class * { # 保持native方法不被混淆 native <methods>; }

-keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; }

发布一款应用除了设minifyEnabled为ture,你也应该设置zipAlignEnabled为true,像Google Play强制要求开发者上传的应用必须是经过zipAlign的,zipAlign可以让安装包中的资源按4字节对齐,这样可以减少应用在运行时的内存消耗。

原文: http://droidyue.com/blog/2016/07/10/understanding-android-obfuscated-code-by-proguard/

其实不要混淆的主旨就在于混淆会改变方法的名字,类的名字,但是对于外部的一些引用是通过名字找到对应的方法,类,这些可能是通过string找到方法,类,但是string里的字段是不会进行混淆,所以还是会保留原来的名字,这样混淆过后通过原来的名字去找混淆后的名字,是肯定找不到,所以就会报出nosuchfileException,(对于gson,反射,jsbridge,第三方库都是这个原因),至于说枚举类型,我还暂时没懂 为什么,还望共同学习,一起成长。
文章是读了两篇博客写出来,也是自己总结,消化成自己的知识了,若有什么错误的地方,还望指出,相信读了这两篇文章之后你也会懂混淆,一个是如何混淆,一个是哪些该混淆,为什么不能混淆

㈦ android studio的混淆文件是哪个

关于代码混淆的作用,就不多解释了,整个过程大致如下:在app下的build.gradle文件中添加如下代码(minifyEnabled表示是否混淆,默认是false,这里要记得设置成true):其中proguard-Android.txt文件是本地sdk/tools/proguard文件夹下的默认文件;prguard-rules.pro文件就是用来编写混淆代码的;接下来就是在prguard-rules.pro文件中编写混淆代码:关于其中代码的理解,可以参考这篇文章:代码混淆详解编写完混淆代码,混淆也就算完成了,接下来就是打包了,但是,混淆的时候可能会遇到各种问题,主要是混淆代码,因为涉及到有的类不需要混淆,混淆了就会报错运行不了,所以在编写混淆代码的时候一定要小心,其实一般注意这几点就好了:不需要导入第三方类库的代码,如上图注释的部分:-libraryjarslibs/BaiLBS_Android.jar等,按照网上说的,需要在混淆文件中导入第三方类库,防止混淆时读取包内容出错,但是如果那样做的话

㈧ android 混淆 什么意思

Android代码混淆,是为了你的apk被他人反编译之后拿到源码,如果你混淆了,那反编译后的apk所有的java类都被改成了a.java/c.java之类的文件名,类里面的属性也变成abc之类的了,想拿到你的源码就不可能了,直接在gradle(app)文件的android节点下加上下边代码。

buildTypes{
release{
minifyEnabledfalse
('proguard-android.txt'),'proguard-rules.pro'
}
}

㈨ android混淆打包不包含文件

混淆打包流程:
1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包

这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错。还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆。

2.在project.properties文件中把proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 前的#号去掉

最后导出签名包就可以了

阅读全文

与android混淆资源文件相关的资料

热点内容
程序员那么可爱陆漓和姜逸城吻戏 浏览:802
android获取窗口大小 浏览:180
程序员为世界带来的贡献 浏览:214
程序员招聘自荐信 浏览:693
魔兽键位设置命令宏 浏览:645
程序员没有目标了 浏览:828
抢答器c程序编程 浏览:703
什么app可以自己玩 浏览:76
刨客app是什么 浏览:963
cad输入命令栏不见了 浏览:834
做故事集可以用什么app 浏览:692
qq邮箱发送压缩包 浏览:672
程序员桌面机器人 浏览:589
xjr快速开发平台源码 浏览:159
java接口runnable 浏览:31
python怎么运行web服务器 浏览:349
notepad编程代码 浏览:740
什么安卓的毛病最少 浏览:611
hp的pjl设备访问命令 浏览:635
googlewebp图片压缩技术 浏览:215