首页 > 其他分享 >【随手记录】代码混淆

【随手记录】代码混淆

时间:2024-12-20 15:32:18浏览次数:2  
标签:混淆 随手 代码 控制流 加密 源代码 难度

1、什么是代码混淆:

  两个关键点:

  1.1、不影响原有程序正常运行

  1.2、增加人阅读、理解的难度

  优点:

  1.1、通过对代码进行混淆,可以使代码更难读懂,增加破解的难度,进而提高代码安全性

  1.2、通过压缩等方式,可以一定程度缩小代码体量

  缺点:

  1、过度混淆可能带来运行时错误,不便于调试、排查

  2.、可能造成代码反射冲突,找不到对应类,需要正确配置规则文件

2、代码混淆不等于加密

  加密是要在我们想要隐藏的东西上上锁,可以是一道锁,也可以是多道锁,而混淆则不同,在进行混淆处理时,信息将保持原样,只是以一种模糊的格式呈现出来,提高被理解或解析的复杂性。

  代码混淆并不能真正防止逆向工程,只能增加难度,对于安全性要求很高的场景,仅使用代码混淆并不能保证原始代码的安全。

3、代码混淆的常见方式:

  3.1、名称混淆:

    将字段、方法名称更改为无意义的字符串。

  3.2、代码缩减:

    删除代码中对运行无用的注释、空格、换行、回车、调试信息等,减小代码体积同时降低代码中有效的信息量。

  3.3、控制流混淆:

    对于if, switch, while,for等关键字,对代码进行细微的修改,模糊控制流,而不改变代码在运行时的行为。流模糊的字节码通常强制反编译器将一系列标签和非法的go to语句插入到它们生成的源代码中。

  3.4、数据流混淆:

    对一些通用的计算,将其替换为等价的形式.比如a=b+c替换为a=b+1+c-1。

  3.5、花指令:

    在正常的指令序列中添加一些无用指令,对运行时无害,但是会造成逆向工具崩溃、无法反汇编,无法反编译、功能异常等。

4、java场景混淆类库

  4.1、ProGuard:这是一个广泛使用的开源代码混淆工具。它可以删除无用的代码、重命名类和方法,以及重新组织代码结构,从而增加了源代码的保护程度。

  4.2、Allatori:这是一个商业代码混淆工具,提供了许多高级功能,如字符串加密、控制流混淆和资源文件加密等。它还可以将类和方法名压缩为短名称,增加了破解的难度。

  4.3、DashO:这是另一个商业Java代码混淆工具,具有强大的功能。它支持多种混淆技术,如类和方法的重命名、字符串加密和控制流混淆等。此外,它还提供了性能优化和错误检测功能。

标签:混淆,随手,代码,控制流,加密,源代码,难度
From: https://www.cnblogs.com/whaleX/p/18619381

相关文章