
混淆技术研究笔记
文章平均质量分 85
以混淆和签名反篡改为主题介绍yGuard,重点在于思考和实现的过程。
isea533
《MyBatis从入门到精通》作者,MyBatis分页插件PageHelper作者,通用Mapper作者,个人网站:https://mybatis.io
展开
-
混淆技术研究笔记(八)扩展yGuard实现签名
中我们使用 hutool 的工具类实现了私钥加密的方法,我们这里直接用,首先添加 hutool 的依赖,在。原创 2023-10-25 10:04:25 · 542 阅读 · 0 评论 -
混淆技术研究笔记(七)Ant扩展介绍
如果你需要在配置好的对象上进行后续处理,可以使用这个方法,如果想在配置前处理,可以选择前两种方式。当你嵌套的对象需要复杂的创建方式时,可以采用这种方式,这种方式适合初始化对象。对象注入进来了,而且此时该对象是空的,还没有被赋值,这种情况下的参数(如这里的。同时存在时不一定会调用哪一个方法,当你方法中存在逻辑时,就无法保证处理一致。方法,该方法采用带有无参数构造函数的 Object 类型的单个参数。,否则后续无法获取该值。这里返回该对象后,这个对象会被赋值,在后续执行。,实际上不继承也可以,定义一个。原创 2023-10-19 08:30:00 · 362 阅读 · 0 评论 -
混淆技术研究笔记(六)如何基于yGuard实现?
如果一上来就想着如何设计,万一最后行不通就白费了,而且设计没有尽头,想要完美的设计可能需要纠结很久才有结果,在这种重构调整比较容易的情况下,先动手,后设计。准备工作都已经好了,接下来就该动手实现了,此时我还有一个问题,yguard中是如何创建对象的,xml和类是如何结合的,于是我找到了。这里会使用改后的文件名,那么改后文件名的生效肯定是在这里,这里可能会有写入jar的操作,这非常关键,但是我们先回到前面继续查找。就可以写入文件,而且也不必存在已有的文件,直接加个新的也可以,在。原创 2023-10-13 09:00:00 · 385 阅读 · 0 评论 -
混淆技术研究笔记(五)混淆后如何反篡改?
有了上一节的基础工具后,接下来要考虑如何反篡改。本文采用的是对混淆后的代码,针对某些关键包的字节码数据计算md5值,对所有类计算完成后对md5值进行排序,排序后拼接字符串再次计算md5值,最后通过私钥对md5进行RSA对称加密,加密后的内容要放到核心的jar包中。原创 2023-10-12 09:00:00 · 369 阅读 · 0 评论 -
混淆技术研究笔记(四)反篡改介绍
前面我们已经对代码进行了混淆,想修改代码是很难的,如果我们打包包含的代码很多,为了功能的完整性,我们可能会要求核心代码不允许被覆盖,被混淆的代码通过某些工具还是可以改名的,比如把超长的名字改短,然后再覆盖代码,有很多手段能绕过,为了再增加一些难度,本文考虑使用RSA对称加密对混淆后的代码进行加密,不允许修改混淆后的类名,不允许修改文件内容。使用文件校验和:可以使用文件校验和算法(如MD5或SHA-256)计算JAR包的校验和,并将校验和值保存在可信任的位置(如服务器)。混淆后的代码更难被篡改和逆向工程。原创 2023-10-11 09:00:00 · 418 阅读 · 0 评论 -
混淆技术研究笔记(三)多模块混淆
虽然这里很简单,但是我实际要处理的这个项目有4级多模块,总共能打包七十几个模块,而且要和旧版打包方式接近,因此耗时很久,最难的就是上一节介绍的,如果有多种混淆配置(能配置多个,比如 a 依赖 b,b 依赖 c 的情况,如果配置到 a 中,在 a 中对a,b,c进行混淆,确实能实现对 jar 包内容的混淆,但是当执行。发布时,Maven会根据模块依赖顺序计算构建的顺序,第一个构建的模块会走完全部的生命周期后,再对第二个模块进行相同的处理,依次执行完全部的模块。中添加a,b,c的依赖,保证最后执行,在。原创 2023-10-10 09:00:00 · 312 阅读 · 0 评论 -
混淆技术研究笔记(二)yGuard入门
可以配置多个,但是maven执行的机制导致这里能被有效混淆的只能有1个,后续实现的多模块混淆是利用了Maven生命周期的一些特点实现的。,这个明显没有对应的 jar,这种写法是无法自动解析为对应jar包的,使用Maven时需要注意,官方示例和文档中也有类似的错误。进行了排除,如果你的混淆配置更复杂,优先级无法确定时,上面的配置粒度仍然不够小,应该把。上面相当于两部分规则,第一部分是完全混淆的代码,第二部分是完全保留的代码,当配置多块时,配置,一般情况下不需要细致的具体的方法进行配置,通过。原创 2023-10-09 09:00:00 · 1392 阅读 · 0 评论 -
混淆技术研究笔记(一)常见工具介绍
第一节先来点简单的内容,下面是通过 AI 生成的几款常见的混淆工具简介及对比。├─module-a├─module-b└─module-c一般只能分别对a,b,c进行混淆,我称这种为单模块混淆。模块之间如果存在调用关系,就要把需要暴露的接口配置为不混淆,否则混淆后互相不认识就无法调用了,这是单模块混淆的最大特点,如果需要被调用,一定会暴露入口。多模块。原创 2023-10-08 19:30:00 · 1025 阅读 · 0 评论