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)

相关推荐

  • 何鸿燊怎么读音,澳门赌王何鸿燊的拼音怎么拼

    技术何鸿燊怎么读音,澳门赌王何鸿燊的拼音怎么拼何鸿燊读音:hé hóng shēn 何鸿燊(shēn),1921年11月25日生于香港,著名港澳企业家,有“澳门赌王”之称,是何东爵士弟何福的孙儿之一,何世光儿子,在家中排

    生活 2021年10月23日
  • 百度脑图,哪里可以系统学习思维导图

    技术百度脑图,哪里可以系统学习思维导图想要系统性的学习,那么只要看这篇文章就够了百度脑图。全文3820字,阅读预计需要花费10分钟。建议拉到文末先点一个“大拇指”收藏,或者评论也可以。回头有时间了慢慢看,一定会收益匪浅,

    生活 2021年10月30日
  • MyCat分片怎么配置

    技术MyCat分片怎么配置本篇内容主要讲解“MyCat分片怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyCat分片怎么配置”吧!MyCat 架构 MyCa

    攻略 2021年12月4日
  • VB.NET文件操作语法有哪些

    技术VB.NET文件操作语法有哪些这篇文章主要介绍VB.NET文件操作语法有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.拷贝文件(FileCopy语句)格式:FileCopy(源文件名)

    攻略 2021年12月2日
  • APK反编译怎么实现源码阅读

    技术APK反编译怎么实现源码阅读APK反编译怎么实现源码阅读,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1什么是反编译?我们编写源程序经过编译变成可执行文

    攻略 2021年11月16日
  • java用swing做计算器(javaswing科学计算器)

    技术Java Swing如何编写一个简单的计算器软件这篇文章主要介绍了Java Swing如何编写一个简单的计算器软件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起

    攻略 2021年12月20日