Java中混淆技术有几种

技术Java中混淆技术有几种这篇文章给大家分享的是有关Java中混淆技术有几种的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。到目前为止,对于Java程序的保护,混淆技术还是最基本的保护方法。J

本文分享了几个关于Java中混淆技术的内容。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

到目前为止,混淆技术是Java程序最基本的保护方法。有许多Java混淆工具,包括商业的、免费的和开源的。孙公司也提供了自己的迷惑工具。大部分都是处理Class文件的混乱,少数工具先处理源代码,再处理Class,增加了混乱。目前商业上比较成功的混淆工具有JProof公司的1stBarrier系列、Eastridge公司的JShrink、4thpass.com的SourceGuard等。

根据混淆的目的,主要的混淆技术可以分为以下几类:符号混淆、数据混淆、控制混淆、控制流重组和预防混淆。

一、符号混淆

Class中有很多与程序执行本身无关的信息,比如方法名和变量名。这些符号的名字往往有一定的含义。例如,如果一个方法被命名为getKeyLength(),那么这个方法可能被用来返回密钥的长度。符号混淆是将信息混淆,变成无意义的表示,例如,从vairant_001开始对所有变量进行编号;所有方法都从method_001开始编号。这会给反编译带来一些困难。对于私有函数和局部变量,您通常可以在不影响程序运行的情况下更改它们的符号。但是对于一些接口名称、公共函数、成员变量,如果其他外部模块需要引用这些符号,我们往往需要保留这些名称,否则外部模块找不到这些名称的方法和变量。因此,大多数混淆工具为符号混淆提供了丰富的选项,允许用户选择是否以及如何混淆符号。

二、数据混淆

数据混淆是混淆程序使用的数据。混淆的方式有很多,主要分为更改数据存储和编码转换以及更改数据访问转换。

改变数据存储和编码会破坏程序使用的数据存储方法。例如,将一个有10个成员的数组拆分成10个变量,并打乱这些变量的名称;将二维数组转换为一维数组等。对于一些复杂的数据结构,我们会打乱它们的数据结构,比如用多个类替换一个复杂的类。

另一种方法是更改数据访问。例如,当访问数组的下标时,我们可以做一些计算,图5就是一个例子。在混淆处理的实践中,这两种方法通常被综合使用,不仅打乱了数据存储,也打乱了数据访问的方式。混淆数据后,程序的语义变得复杂,增加了反编译的难度。

三、控制混淆

控制混淆是对程序的控制流进行混淆,使得反编译程序的控制流更加困难。通常,控制流的改变需要增加一些额外的计算和控制流,因此会对程序的性能带来一些负面影响。有时,在程序的性能和混乱程度之间有一个权衡。控制混乱的技术最复杂,技巧最多。这些技术可分为以下几类:

添加混淆控件可以通过添加额外的复杂控制流来隐藏程序的原始语义。比如对于顺序执行的两个语句A和B,我们可以增加一个控制条件来决定B的执行,这样的话,反汇编就比较困难了。但是所有的干扰控制都不应该影响b的执行。

四、控制流重组

控制流重组也是一种重要的混淆方法。例如,一个程序调用一个方法,混淆后,方法代码可以嵌入到调用程序中。相反,程序中的一段代码也可以转换成函数调用。另外,对于一个循环的控制流来说,它是一个可以拆分多个循环的控制流,或者把循环变成一个递归过程。这种方法是最复杂的,研究人员也很多。

五、预防性混淆

这种混淆通常是为一些特殊的反编译程序设计的。一般来说,这些技术利用反编译程序的弱点或缺陷来设计混淆方案。例如,一些反编译程序不会在Return之后反编译指令,而一些混淆方案只是将代码放在Return语句之后。对于不同的反编译程序,这种混淆的效果是不同的。一个好的混淆工具通常结合这些混淆技术。

感谢阅读!这篇关于“Java中有几种混淆技术”的文章将在这里分享。希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/137936.html

(0)

相关推荐

  • Sql Server参数化查询之where in和like实现详解

    技术Sql Server参数化查询之where in和like实现详解 Sql Server参数化查询之where in和like实现详解GPS平台、网站建设、软件开发、系统运维,找森大网络科技!htt

    礼包 2021年11月15日
  • PostgreSQL MVCC源码的示例分析

    技术PostgreSQL MVCC源码的示例分析这篇文章主要为大家展示了“PostgreSQL MVCC源码的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Postg

    攻略 2021年11月26日
  • python计算两个坐标点的距离(python怎么求两条直线的交点)

    技术Python怎么计算点到直线距离和直线间交点夹角这篇文章主要讲解了“Python怎么计算点到直线距离和直线间交点夹角”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Py

    攻略 2021年12月22日
  • 三戒是哪三戒,柳宗元的\”三戒\”是什么?

    技术三戒是哪三戒,柳宗元的\三戒\是什么?柳宗元的《三戒》包括《临江之麋》三戒是哪三戒、《永某氏之鼠》和 《黔之驴》 这一组三篇寓言,是作者贬谪永州时所写。题名“三戒”,可能是取《论语》“君子有三戒”之意。文前的小序,已

    生活 2021年10月22日
  • react中间事件怎么绑定(react事件绑定方法视频)

    技术怎么进行React事件绑定本篇文章给大家分享的是有关怎么进行React事件绑定,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。类组件事件绑定import

    攻略 2021年12月18日
  • JYN 2.2有哪些新功能?

    技术Jython 2.2的新增特性有哪些这篇文章将为大家详细讲解有关Jython 2.2的新增特性有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Jython 是Python 的J

    攻略 2021年12月17日