网易首页 > 网易号 > 正文 申请入驻

关于代码混淆,看这篇就够了

0
分享至

代码混淆一.基本概念java的bytecode很容易通过JAD等反编译工具还原出源代码。这样势必不满足安全的定义。如何一定程度上保护需要防止被反编译的源代码呢?混淆(obfuscate)技术。注意:用obfuscate防盗版是根本不可能,连汇编这种东西都能被**掉,而java代码基本上等同于开源的同义词。用obfuscate只是为了增加反编译的难度,保护源代码的知识产权。混淆包照常运行,没有任何问题。可以使用反编译工具如jd-gui查看混淆后的包,验证混淆效果。

二.混淆技术名称混淆 name obfuscode将有意义的类,字段、方法名称更改为无意义的字符串。生成的新名称越 短,字节代码越小。在名称混淆的字节代码中,包,类,字段和方法名称已重命名,并且永远不能恢复原始名称。

流混淆 Flow Obfuscation用于if, switch, while,for等关键字,对字节码进行细微的修改,模糊控制流,而不改变代码在运行时的行为。通常情况下,选择和循环等逻辑构造会被更改,因此它们不再具有直接等效的Java源代码。流模糊的字节码通常强制反编译器将一系列标签和非法的goto语句插入到它们生成的源代码中。源代码有时会因为反编译错误而变得更加模糊。

其他异常混淆 Exception Obfuscation字符串加密混淆 String Encryption引用混淆 Reference Obfuscation三.常用工具1.ipaguardproguard是一个免费的 混淆重签名,优化,混肴器。不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app

官网地址:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具

2.yGuardyGuard是一款免费的Java混淆器(非开源),它有Java和.NET两个版本。yGuard 完全免费,基于 Ant 任务运行,提供高可配置的混淆规则。官网地址:www.yworks.com/products/yg…

3.allatori第二代Java混淆器。所谓第二代混淆器,不仅仅能进行字段混淆,还能实现流混淆。命名混淆,流混淆,调试信息混淆,字符串编码,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。支持war和jar格式,支持对需要混淆代码的应用程序添加有效日期。官网地址:www.allatori.com/…

4.总结推荐使用 proguard :开源, 使用简单 ,文档丰富完善。

四.工具对比工具 官网地址 官方文档 开源免费 名称混淆 流混淆 maven支持 功能proguard www.guardsquare.com/proguard www.guardsquare.com/manual/home √ √ ✕ √ yGuard www.yworks.com/products/yg… yworks.github.io/yGuard/ √ √ ✕ √ allatori allatori.com/ ✕(免费用于教育和非商业项目) √ √ √ 减小包大小;混淆代码;添加水印五.详细内容1.yGuard(yworks.github.io/yGuard/)易于设置:yGuard 是一个 Ant 任务!作为 Ant 任务,yGuard 可以无缝集成到您在 Ant、Maven 和 Gradle 等众多构建系统中的部署过程中高级收缩:yGuard 通过依赖分析提供精细的代码收缩功能。可配置/安全代码:yGuard 提供高度可配置的名称混淆,可保护您的知识产权免受逆向工程。开源:yGuard 是完全开源的!与昂贵的商业产品相反,yGuard 是并且永远都是免费的。Java 兼容性:要运行 yGuard 软件,您需要 JDK 1.7.x 或更高版本以及 Ant 1.5.x 或更高版本(它可能与任一软件的早期版本兼容,但尚未经过测试)。yGuard 与所有已发布的 Java 版本(最高 Java 17)兼容。但是,根据使用的版本,功能可能会略有不同。该文档包含不同版本支持的功能的详细说明。如果您打算将 yGuard 与 Java 以外的东西一起使用,还有一个关于3rd 方 JVM 支持的部分。ProGuard是一个开源的 Java 类文件收缩器、优化器、混淆器和预验证器。因此,ipaguard处理的应用程序和库更小、更快,并且在一定程度上可以抵御逆向工程。

收缩步骤检测并删除未使用的类、字段、方法和属性。优化器 步骤优化字节码并删除未使用的指令。混淆步骤使用简短无意义的名称重命名剩余的类、字段和方法。最后的预验证步骤将预验证信息添加到类中,这是 Java Micro Edition 和 Java 6 及更高版本所必需的。yGuard1.maven引用方式复制代码

maven-antrun-plugin

com.yworks

yguard

3.1.0

package

run

2.yguard配置解析写在前面yguard共分为两大任务配置:rename 混淆名称 :主要用于修改类名,属性名,方法名以及参数名等。shrink 收缩代码 : 主要用于从多个入口点中删除所有无法访问的类、字段和方法。keep keep是rename和shrink的子元素,用于指定从父级rename或shrink任务中排除的元素。注意事项注意事项1 :如果项目需要shrink, shrink最好是配置在rename之前。即在进行代码混淆之前,先进行代码压缩。 因为压缩代码需要指定压缩的根代码。举个例子:比如制定main方法: 。如果先混淆,DplDbtransferApplication类名被修改的话(比如为A.class),该配置将会无效,所有代码都会被 shrink 删除,因为已经找不到DplDbtransferApplication这个类了(类名被修改)。其他配置请参考官方文档。配置说明基础配置

复制代码

keep配置说明

class元素

class用于在rename和shrink过程中排除某些类,字段和方法。其是keep的子元素。以下是配置说明(- 表示会被收缩,即被删除 ):

可见性(是否被收缩) public protected friendly privatenone - - - -public * - - -protected * * - -friendly * * * -private * * * *属性说明

name 指定要保留的类名。 在shrink中,只会保留类名称,类中的属性和方法都会被删除掉。classes 保持类的可见性 :其值是上述:none , public , protected , friendly , private 。默认为nonemethods 保留方法的可见性 , 值同classes的描述。默认为nonefields 保留属性的可见性 , 值同classes的描述。默认为noneextends 保留对继承了该类的可见性 。1.在shrink中凡是继承了该类的子类都不会被删除。 2.在rename中凡是继承了该类的子类都不会被修改名称。implements 保留对实现该接口的可见性 。1.在shrink中凡是实现该接口的类都不会被删除。 2.在rename中凡是实现该接口的类都不会被修改名称。注意事项

以上属性可以单独使用,一可以混合使用。其 extends/implements 可以和classes, methods,fields混合使用。参考列2说明。列1:

复制代码列2:

复制代码列3:

一下举列几个模式集的列子,模式集可以参考ant。复制代码method

method 用于在rename和shrink过程中排除方法。其是keep的子元素。以下是配置说明(- 表示会被收缩,即被删除 ):

复制代码

field

field 您可以按名称指定应从收缩或名称混淆中要保留的字段

复制代码package

package 用于从重命名过程中排除某些包的名称。它不能用于收缩(shrink)过程 。这对类、方法或字段名称没有影响。

复制代码3.几种情况下的使用方式springboot项目1.注意事项

yguard插件执行要放在 spring boot打包项目之前,因为反置的话,会造成jar中的springboot的启动相关类被混淆,而造成启动项目失败。2.项目使用失败的问题收集总结

本地打包之后启动项目失败:由于是本地idea将jdk设置成jdk17了,导致打包失败。 设置为jdk8后成功启动。项目使用mybaties plus,项目里只有一个接口:public interface TimePullLogMapper extends BaseMapper{} , 造成混淆后打包报错:spring至少一个bean实现。后面加上: 后正常。==service的接口和实现都要暴露,不然spring的注入和nacos的服务发现都会存在问题。3.配置模版

复制代码

简介ProGuard 是一个开源的 Java 类文件收缩器、优化器、混淆器和预验证器。因此,ProGuard 处理的应用程序和库更小、更快,并且在一定程度上可以抵御逆向工程。

收缩步骤检测并删除未使用的类、字段、方法和属性。优化器 步骤优化字节码并删除未使用的指令。混淆步骤使用简短无意义的名称重命名剩余的类、字段和方法。最后的预验证步骤将预验证信息添加到类中,这是 Java Micro Edition 和 Java 6 及更高版本所必需的。对反射的处理反射和内省对于任何代码的自动处理都存在特殊的问题。在 ProGuard 中,代码中动态创建或调用(即按名称)的类或类成员也必须指定为入口点。例如,Class.forName()构造可以在运行时引用任何类。通常不可能计算必须保留哪些类(使用它们的原始名称),因为类名可能是从配置文件中读取的,例如。因此,您必须在 ProGuard 配置中指定它们,同样简单-keep选项

Class.forName("SomeClass")SomeClass.classSomeClass.class.getField("someField")SomeClass.class.getDeclaredField("someField")SomeClass.class.getMethod("someMethod", null)SomeClass.class.getMethod("someMethod", new Class[] { A.class,... })SomeClass.class.getDeclaredMethod("someMethod", null)SomeClass.class.getDeclaredMethod("someMethod", new Class[] { A.class,... })AtomicIntegerFieldUpdater.newUpdater(SomeClass.class, "someField")AtomicLongFieldUpdater.newUpdater(SomeClass.class, "someField")AtomicReferenceFieldUpdater.newUpdater(SomeClass.class, SomeType.class, "someField")支持可单独使用。首先,下载一个ProGuard 版本或者构建 ProGuard从源头。然后可以通过调用目录中的脚本直接从命令行执行 ProGuard bin:linux/mac:bin/proguard.sh -injars path/to/my-application.jar \ -outjars path/to/obfuscated-application.jar \ -libraryjars path/to/java/home/lib/rt.jarwindows:bin\proguard.bat -injars path/to/my-applicati^ -outjars path/to/obfuscated-application.jar ^ -libraryjars path/to/java/home/lib/rt.jarGradle 模式ant模式Maven模式:(没有正式提供 maven 集成,也无法提供支持,但有可用的解决方案,但 Guardsquare 不保证它们提供的功能。)来源实现:github.com/wvengen/pro…github.com/dingxin/pro…错误解析[proguard] Error: The input doesn't contain any classes. Did you specify the proper '-injars' options?处理:, inFilter标签设置为包路径地址,把‘.’换成‘/’。injar : 指定target中的一个目标地址:这里指定编译后的 classes文件夹。 inFilter 指定的是 classes的内部的文件夹(package)地址。 复制代码以下是一个例子说明,如果你想更多的有用信息,请查看文档(www.guardsquare.com/manual/conf…)

com/ewa/pipe/**

com/arm/code/**

classes

false

true

com/arm/code/**

classes

${project.build.directory}

${project.build.finalName}.${project.packaging}

${java.home}/lib/rt.jar

${java.home}/lib/jce.jar

${java.home}/lib/ext/sunjce_provider.jar

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
五角大楼官宣,中美防长将会晤,不到24小时,美防长突然交权副手

五角大楼官宣,中美防长将会晤,不到24小时,美防长突然交权副手

博览历史
2024-06-20 17:56:46
就在今天!NBA重磅补强达成,一支能媲美凯尔特人的球队诞生了

就在今天!NBA重磅补强达成,一支能媲美凯尔特人的球队诞生了

篮球大视野
2024-06-21 10:39:17
行车记录曝光!广东一女子暴饮白、洋、啤后开百万轿跑飙到160km/h

行车记录曝光!广东一女子暴饮白、洋、啤后开百万轿跑飙到160km/h

北青网-北京青年报
2024-06-21 19:57:09
“高温+雷雨”,南宁将开启闷热“桑拿天”模式!

“高温+雷雨”,南宁将开启闷热“桑拿天”模式!

鲁中晨报
2024-06-21 19:59:07
无数韩国人因为“性”,纷纷跑去蒙古国?蒙古国为啥成色情大国?

无数韩国人因为“性”,纷纷跑去蒙古国?蒙古国为啥成色情大国?

西山来客
2024-06-20 08:50:57
“一句战争别找我,我穷,让富人和公务员上”揭开惊悚的社会矛盾

“一句战争别找我,我穷,让富人和公务员上”揭开惊悚的社会矛盾

有趣的火烈鸟
2024-06-19 19:24:09
抓捕四人帮时,卫戍区的政委提醒华国锋:抓捕的名单上漏掉了个人

抓捕四人帮时,卫戍区的政委提醒华国锋:抓捕的名单上漏掉了个人

燕小姐说历史
2023-06-19 08:42:39
魔兽WLK:国服上线必练职业,奥杜尔打1就进组,“独狼”最佳首发

魔兽WLK:国服上线必练职业,奥杜尔打1就进组,“独狼”最佳首发

胖哥游戏说
2024-06-21 17:02:01
郑爽疑似将在美国复出!染一头黄发变精神小妹,满身大牌生活奢靡

郑爽疑似将在美国复出!染一头黄发变精神小妹,满身大牌生活奢靡

扒星人
2024-06-19 15:52:32
管维嘉:篮协内部有请土帅和请洋帅两派 高层定的标准叫好管理

管维嘉:篮协内部有请土帅和请洋帅两派 高层定的标准叫好管理

直播吧
2024-06-21 17:33:05
浙大跌出前三,武大险胜人大!2024中国综合类大学排行榜出炉

浙大跌出前三,武大险胜人大!2024中国综合类大学排行榜出炉

一口娱乐
2024-06-18 21:58:48
湖南:小伙捧鲜花表白女技师,做足疗一见钟情,网友:长得很哇塞

湖南:小伙捧鲜花表白女技师,做足疗一见钟情,网友:长得很哇塞

百晓史
2024-06-02 09:09:36
男人“羞羞”为什么冲刺几下特别重?完事还要顶两下

男人“羞羞”为什么冲刺几下特别重?完事还要顶两下

水白头
2024-06-17 00:15:02
真诚地给华为道个歉

真诚地给华为道个歉

关尔东
2024-05-01 00:25:49
广东刺头与球队撕破脸?宏远弃将好言相劝,硬碰硬只能自己吃亏

广东刺头与球队撕破脸?宏远弃将好言相劝,硬碰硬只能自己吃亏

弄月公子
2024-06-21 11:17:57
欧洲杯诞生新死亡之组:4队只差3分!15亿豪门一盘散沙,狼狈打平

欧洲杯诞生新死亡之组:4队只差3分!15亿豪门一盘散沙,狼狈打平

侃球熊弟
2024-06-21 01:59:59
所有医护注意:职称、待遇将有大变化!国家卫健委放大招,推动医护长期派驻基层

所有医护注意:职称、待遇将有大变化!国家卫健委放大招,推动医护长期派驻基层

华医网
2024-06-21 05:41:47
庐山会议时,毛泽东为何会对彭德怀不留情面?根本原因值得警醒

庐山会议时,毛泽东为何会对彭德怀不留情面?根本原因值得警醒

拙言问史
2024-05-04 22:19:24
股市大事件,高层终于下狠手,比央妈降息还有爆发力,下周要爆了

股市大事件,高层终于下狠手,比央妈降息还有爆发力,下周要爆了

一丛深色花儿
2024-06-21 16:10:16
斯坦福博士拟被录用乡镇公务员?是否“大材小用”引热议

斯坦福博士拟被录用乡镇公务员?是否“大材小用”引热议

新晚报
2024-06-19 10:29:33
2024-06-21 23:52:49
雪奈呐
雪奈呐
有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。
151文章数 31关注度
往期回顾 全部

科技要闻

一文看懂纯血鸿蒙,自主可控操作系统来了

头条要闻

媒体:普京出奇招访朝鲜 也将给自己带来相当大的麻烦

头条要闻

媒体:普京出奇招访朝鲜 也将给自己带来相当大的麻烦

体育要闻

1-0"吊打"意大利 西班牙这就叫冠军相?

娱乐要闻

陈晓惹争议!被曝婚变离家出走冷暴力

财经要闻

专访尹艳林:市场上的钱都流向了哪里?

汽车要闻

领克纯电 来得不晚

态度原创

房产
旅游
艺术
本地
公开课

房产要闻

上海新房不再集中公示!最新一批11个新盘官宣

旅游要闻

强降雨天气来袭:桂林部分景点关闭 酒店启动退改

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

本地新闻

2024·合肥印象|用崭新视角对话城市发展

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版