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. 预防混淆   预防混淆一般是针对专用的反编译器设计的,目的就是预防被这类反编译器反编译。

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

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

MineServer:香港CMI/洛杉矶GIA VPS,2核/2GB内存/20GB NVME/3.5TB流量/200Mbps/KVM,288元/年

mineserver怎么样?mineserver是一家国人商家,主要提供香港CN2 KVM VPS、香港CMI KVM VPS、日本CN2 KVM VPS、洛杉矶cn2 gia端口转发等服务,云服务器网(yuntue.com)介绍过几次,最近比较活跃。现在新推出了3款特价KVM VPS,性价比高,香港CMI/洛杉矶GIA VPS,2核/2GB内存/20GB NVME/3.5TB流量/200Mbps...

青云互联19元/月,美国洛杉矶CN2GIA/香港安畅CN2云服务器低至;日本云主机

青云互联怎么样?青云互联美国洛杉矶cn2GIA云服务器低至19元/月起;香港安畅cn2云服务器低至19元/月起;日本cn2云主机低至35元/月起!青云互联是一家成立于2020年的主机服务商,致力于为用户提供高性价比稳定快速的主机托管服务。青云互联本站之前已经更新过很多相关文章介绍了,青云互联的机房有香港和洛杉矶,都有CN2 GIA线路、洛杉矶带高防,商家承诺试用7天,打死全额退款点击进入:青云互联...

NameCheap优惠活动 新注册域名38元

今天上午有网友在群里聊到是不是有新注册域名的海外域名商家的优惠活动。如果我们并非一定要在国外注册域名的话,最近年中促销期间,国内的服务商优惠力度还是比较大的,以前我们可能较多选择海外域名商家注册域名在于海外商家便宜,如今这几年国内的商家价格也不贵的。比如在前一段时间有分享到几个商家的年中活动:1、DNSPOD域名欢购活动 - 提供域名抢购活动、DNS解析折扣、SSL证书活动2、难得再次关注新网商家...

android代码混淆为你推荐
4k超高清视频下载为新手推荐几个获取4K片源的途径listviewitem求解如何获取listview中的itemwebservice框架java Webservice都有哪几种方式啊,哪种方式比较好啊cursorlocation在ENVI中双击遥感图像出来个CURSOR LOCATION/value对话框。下面有个LL : 31?6'21.84"N, 117?9'11.78"E方正证券官方网方正证券同花顺下载/2010同花顺官方网站/同花顺官方网站首页网站客服代码怎么在网页用HTML代码设置QQ客服怎么查微信注册时间怎么知道微信上次登录时间idataparameterweighting parameter是什么意思ibooks支持什么格式ibooks支持什么格式的电子书情人节网页想给我女朋友做一个情人节快乐的简易网站,域名和虚拟主机都买好了,就是不会html,有没有人能给我个参考模板?
国外域名 duniu pccw webhostingpad cloudstack 英文简历模板word lighttpd 最好的空间 e蜗 空间论坛 gtt 如何安装服务器系统 华为云盘 西安服务器托管 监控服务器 东莞服务器托管 photobucket 主机返佣 酸酸乳 双11促销 更多