android代码混淆android开发代码混淆都混淆哪些

android代码混淆  时间:2021-06-23  阅读:()

什么是代码混淆?andriod和android-studio工程如何启用代码混淆功能

展开全部   代码混淆有两种重要功能。

其一,混淆代码。

其二,优化代码。

  进行代码混淆的程序被称为代码混淆器(混淆工具)。

进行代码混淆的意义主要在于对代码进行一定程度的加密。

  在android 2.3之后,sdk中就已经集成了混淆器proguard(目录在sdk oolsproguard),所以我们可以很方便的直接在工程中开启代码混淆。

  eclipse android工程开启混淆功能,我们需要手动在项目文件.properties(我的是project.properties文件)中添加下面的代码   # To enable ProGuard to shrink and obfuscate your code, ment this (available properties: sdk.dir, user.home):   proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt   某些方式创建的项目中可能已经有如上两行了,只是默认被注释掉了,只要把proguard.config这一行解注释就好了。

这样代码混淆功能就开启了,在打签名包时,项目会自动进行代码混淆。

android中哪些东西不能做代码混淆

常见的不能混淆的AndroidCodeAndroid 程序 ,下面这样代码混淆的时候要注意保留。

  Android系统组件,系统组件有固定的方法被系统调用。

  被Android Resource 文件引用到的。

名字已经固定,也不能混淆,比如自定义的View 。

  Android Parcelable ,需要使用android 序列化的。

  其他Anroid 官方建议 不混淆的,如   android.app.backup.BackupAgentHelper   android.preference.Preference  .android.vending.licensing.ILicensingService   Java序列化方法,系统序列化需要固定的方法。

  枚举 ,系统需要处理枚举的固定方法。

  本地方法,不能修改本地方法名   annotations 注释   数据库驱动   有些resource 文件   用到反射的地方

android 怎么实现只混淆自己的代码,而不混淆第3方jar包

混淆打包流程:   1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包         这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错。

还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆。

  这个是保持项目中的第三方jar不混淆      另外加上上面几句话,不然会在控制台中报warning警告      2.在project.properties文件中把proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 前的#号去掉      最后导出签名包就可以了

android开发代码混淆都混淆哪些

代码混淆(code obfuscation)是指将计算机程序的代码,转换成一种功能上等价,所谓功能上的等价是指其在变换前后功能相同或相近。

其解释如下:程序P经过混淆变换为P‘,若P没有结束或错误结束,那么P’也不能结束或错误结束;而且P‘程序的结果应与程序P具有相同的输出。

否则P’不是P的有效的混淆。

  目前对于混淆的分类,普遍是以Collberg 的理论为基础,分为布局混淆(layout obfuscation)、数据混淆(data obfuscation)、控制混淆(control obfuscation)和预防混淆(preventive obfuscation)这四种类型。

? 1. 布局混淆   布局混淆是指删除或者混淆软件源代码或者中间代码中与执行无关的辅助文本信息,增加攻击者阅读和理解代码的难度。

软件源代码中的注释文本、调试信息可以直接删除,用不到的方法和类等代码或数据结构也可以删除,这样即可以使攻击者难以理解代码的语义,也可以减小软件体积,提高软件装载和执行的效率。

软件代码中的常量名、变量名、类名和方法名等标识符的命名规则和字面意义有利于攻击者对代码的理解,布局混淆通过混淆这些标识符增加攻击者对软件代码理解的难度。

标识符混淆的方法有多种,例如哈希函数命名、标识符交换和重载归纳等。

哈希函数命名是简单地将原来标识符的字符串替换成该字符串的哈希值,这样标识符的字符串就与软件代码不相关了;标识符交换是指先收集软件代码中所有的标识符字符串,然后再随机地分配给不同的标识符,该方法不易被攻击者察觉;重载归纳是指利用高级编程语言命名规则中的一些特点,例如在不同的命名空间中变量名可以相同,使软件中不同的标识符尽量使用相同的字符串,增加攻击者对软件源代码的理解难度。

布局混淆是最简单的混淆方法,它不改变软件的代码和执行过程。

? 2. 数据混淆   数据混淆是修改程序中的数据域,而对代码段不作处理。

常用的数据混淆方式有合并变量、分割变量、数组重组、字符串加密等。

  合并变量是将几个变量合并为一个数据,原来的每个变量占据其中一个区域,类似于一个大的数据结构。

分割变量则是将一个变量分割为两个变量,对分割前后提供一种映射关系,将对一个变量的操作转化为对分割后两个变量的操作。

  数组重组有数组的分割、合并、折叠和平滑等几种方式。

分割是将一个数组分成2个或多个相同维度的数组;合并则相反;折叠是增加数组的维数;平滑则是相反。

  在ELF文件中,全局变量和常量字符串存放在数据段中,反汇编工具可以轻易查找到字符串与代码之间的引用关系。

在软件破解中,通过一些字符串提示可以很方便的找到代码关键语句,从而破解软件。

字符串加密则可以对这些明显的字符串进行加密存储,在需要时再进行解密。

? 3. 控制混淆   控制混淆也称流程混淆,它是改变程序的执行流程,从而打断逆向分析人员的跟踪思路,达到保护软件的目的。

一般采用的技术有插入指令、伪装条件语句、断点等。

伪装条件语句是当程序顺序执行从A到B,混淆后在A和B之间加入条件判断,使A执行完后输出TRUE或FALSE,但不论怎么输出,B一定会执行。

  控制混淆采用比较多的还有模糊谓词、内嵌外联、打破顺序等方法。

  模糊谓词是利用消息不对称的原理,在加入模糊谓词时其值对混淆者是已知的,而对反混淆者却很难推知。

所以加入后将干扰反汇编者对值的分析。

模糊谓词的使用一般是插入一些死的或不相关的代码(bogus code),或者是插入在循环或分支语句中,打断程序执行流程。

  内嵌(in-line)是将一小段程序嵌入到被调用的每一个程序点,外联(out-line)是将没有任何逻辑联系的一段代码抽象成一段可被多次调用的程序。

打破顺序是指打破程序的局部相关性。

由于程序员往往倾向于把相关代码放在一起,通过打破顺序改变程序空间结构,将加大破解者的思维跳跃。

? 4. 预防混淆   预防混淆一般是针对专用的反编译器设计的,目的就是预防被这类反编译器反编译。

他是利用特定的反编译器或反混淆器的弱点进行专门设计。

预防混淆对于特定的反编译器非常有效,所以在使用时要综合利用各种反编译器的特点进行设计。

提速啦(900元/月),杭州BGP E5-2665/89*2 32核 48G 100G防御

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑提速啦的市场定位提速啦主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。提速啦的售后保证提速啦退款 通过于合作商的友好协商,云服务器提供3天内全额退款,超过3天不退款 物理机部分支持当天全额退款提速啦提现 充...

ProfitServer$34.56/年,5折限时促销/可选西班牙vps、荷兰vps、德国vps/不限制流量/支持自定义ISO

ProfitServer怎么样?ProfitServer好不好。ProfitServer是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对...

Gcore(gcorelabs)俄罗斯海参崴VPS简单测试

有一段时间没有分享Gcore(gcorelabs)的信息了,这是一家成立于2011年的国外主机商,总部位于卢森堡,主要提供VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日本、韩国、新加坡、荷兰、中国(香港)等多个国家和地区的十几个机房,商家针对不同系列的产品分为不同管理系统,比如VPS(Hosting)、Cloud等都是独立的用户中心体系,部落分享的主要是商家的Hosting(Virtu...

android代码混淆为你推荐
isbackgroundbokeh是什么意思ae序列号ae序列号旺旺群发软件求一个旺旺群发软件youtube创始人鬼步舞创作者是谁怎么用电脑发短信怎么样用电脑给手机发短信?怎么用电脑发短信谁知道怎样能用电脑给手机发短信comexception5种常见的Exception!微信网页版登陆首页微信网页版怎么用?微信网页版怎么登陆?za是哪个国家的ci是在哪个国家产生的?哪个国家开始流行的动画分镜头脚本经典动画片分镜头脚本
深圳域名空间 x3220 edgecast 台湾服务器 电影服务器 美国便宜货网站 godaddy优惠券 青果网 魔兽世界台湾服务器 vip购优汇 七夕促销 双线机房 七夕快乐英语 无限流量 跟踪路由命令 美国凤凰城 服务器维护 游戏服务器出租 个人免费邮箱 阿里云邮箱个人版 更多