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)

相关推荐

  • 下拉表格组件

    技术下拉表格组件 下拉表格组件封装下拉表格组件
    !-- my-selectv-model="changeForm.productname" //双向绑定的数据 (必传):arrData="cpNameO

    礼包 2021年11月1日
  • Python代码里面如何进行设置IP切换头

    技术Python代码里面如何进行设置IP切换头这篇文章给大家分享的是有关Python代码里面如何进行设置IP切换头的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Pythonrequests

    攻略 2021年11月30日
  • 82年巴姓歌手,布仁巴雅尔是歌手还是歌唱家

    技术82年巴姓歌手,布仁巴雅尔是歌手还是歌唱家布仁巴雅尔是歌手82年巴姓歌手。1、布仁巴雅尔(1960年3月6日-2018年9月19日),出生于内蒙古自治区呼伦贝尔市新巴尔虎左旗,中国蒙古族男歌手,毕业于内蒙古艺术学院。

    生活 2021年10月28日
  • 如何浅析客舱服务开题报告(如何浅析以前文学作品)

    技术如何浅析Go-To-Market本篇文章给大家分享的是有关如何浅析Go-To-Market,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Go-To-Ma

    攻略 2021年12月18日
  • sublime和powershell(sublime怎么运行py代码)

    技术Sublime如何更改Powershell为CMD本篇内容主要讲解“Sublime如何更改Powershell为CMD”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Sub

    攻略 2021年12月21日
  • 如何分析同一台机器上DataGuard的密码问题

    技术如何分析同一台机器上DataGuard的密码问题今天就跟大家聊聊有关如何分析同一台机器上DataGuard的密码问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收

    攻略 2021年11月30日