当前位置: 首页 > news >正文

多语言外贸网站制作哪里有室内装修培训的地方

多语言外贸网站制作,哪里有室内装修培训的地方,wordpress对接小程序,physon可以做网站由于Java字节码的抽象级别较高#xff0c;因此它们较容易被反编译。本节介绍了几种常用的方法#xff0c;用于保护Java字节码不被反编译。通常#xff0c;这些方法不能够绝对防止程序被反编译#xff0c;而是加大反编译的难度而已#xff0c;因为这些方法都有自己的使用环…由于Java字节码的抽象级别较高因此它们较容易被反编译。本节介绍了几种常用的方法用于保护Java字节码不被反编译。通常这些方法不能够绝对防止程序被反编译而是加大反编译的难度而已因为这些方法都有自己的使用环境和弱点。 隔离Java程序 最简单的方法就是让用户不能够访问到Java Class程序这种方法是最根本的方法具体实现有多种方式。例如开发人员可以将关键的Java Class放在服务器端客户端通过访问服务器的相关接口来获得服务而不是直接访问Class文件。 这样黑客就没有办法反编译Class文件。目前通过接口提供服务的标准和协议也越来越多例如 HTTP、Web Service、RPC等。但是有很多应用都不适合这种保护方式例如对于单机运行的程序就无法隔离Java程序。这种保护方式见图1所示。 为了防止Class文件被直接反编译许多开发人员将一些关键的Class文件进行加密例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前程序首先需要对这些类进行解密而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成也可以使用软件完成。 在实现时开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因Applet不能够支持自定义的 ClassLoader)。自定义的ClassLoader首先找到加密的类而后进行解密最后将解密后的类装载到JVM当中。 在这种保护方式中自定义的ClassLoader是非常关键的类。由于它本身不是被加密的因此它可能成为黑客最先攻击的目标。如果相关的解密密钥和算法被攻克那么被加密的类也很容易被解密。 将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码也可以选择关键模块转换。如果仅仅转换关键部分模块Java程序在使用这些模块时需要使用JNI技术进行调用。 当然在使用这种技术保护Java程序的同时也牺牲了Java的跨平台特性。对于不同的平台我们需要维护不同版本的本地代码这将加重软件支持和维护的工作。不过对于一些关键的模块有时这种方案往往是必要的。 为了保证这些本地代码不被修改和替代通常需要对这些代码进行数字签名。在使用这些本地代码之前往往需要对这些本地代码进行认证确保这些代码没有被黑客更改。如果签名检查通过则调用相关JNI方法。 代码混淆是对Class文件进行重新组织和处理使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被[反编译即[反编译后得出的代码是非常难懂、晦涩的因此[反编译人员很难得出程序的真正语义。 从理论上来说黑客如果有足够的时间被混淆的代码仍然可能被破解甚至目前有些人正在研制反混淆的工具。但是从实际情况来看由于混淆技术的多元化发展混淆理论的成熟经过混淆的Java代码还是能够很好地防止[反编译。下面我们会详细介绍混淆技术因为混淆是一种保护Java程序的重要技术。 几种技术的总结 以上几种技术都有不同的应用环境各自都有自己的弱点表1是相关特点的比较。 混淆技术介绍 表1 不同保护技术比较表 目前商业上比较成功的混淆工具包括JProof公司的1stBarrier系列、Eastridge公司的JShrink和 4thpass.com的SourceGuard等。主要的混淆技术按照混淆目标可以进行如下分类它们分别为符号混淆(Lexical Obfuscation)、数据混淆(Data Obfuscation)、控制混淆(Control Obfuscation)、预防性混淆(Prevent Transformation)。 符号混淆 在Class中存在许多与程序执行本身无关的信息例如方法名称、变量名称这些符号的名称往往带有一定的含义。例如某个方法名为 getKeyLength()那么这个方法很可能就是用来返回Key的长度。 符号混淆就是将这些信息打乱把这些信息变成无任何意义的表示例如将所有的变量从vairant_001开始编号对于所有的方法从method_001开始编号。 这将对反编译带来一定的困难。对于私有函数、局部变量通常可以改变它们的符号而不影响程序的运行。但是对于一些接口名称、公有函数、成员变量如果有其它外部模块需要引用这些符号我们往往需要保留这些名称否则外部模块找不到这些名称的方法和变量。因此多数的混淆工具对于符号混淆都提供了丰富的选项让用户选择是否、如何进行符号混淆。 数据混淆 改变数据存储和编码可以打乱程序使用的数据存储方式。例如将一个有10个成员的数组拆开为10个变量并且打乱这些变量的名字将一个两维数组转化为一个一维数组等。对于一些复杂的数据结构我们将打乱它的数据结构例如用多个类代替一个复杂的类等。 另外一种方式是改变数据访问。例如访问数组的下标时我们可以进行一定的计算图5就是一个例子。 在实践混淆处理中这两种方法通常是综合使用的在打乱数据存储的同时也打乱数据访问的方式。经过对数据混淆程序的语义变得复杂了这样增大了反编译的难度。 控制混淆 控制混淆就是对程序的控制流进行混淆使得程序的控制流更加难以[反编译通常控制流的改变需要增加一些额外的计算和控制流因此在性能上会给程序带来一定的负面影响。有时需要在程序的性能和混淆程度之间进行权衡。控制混淆的技术最为复杂技巧也最多。这些技术可以分为如下几类 增加混淆控制通过增加额外的、复杂的控制流可以将程序原来的语义隐藏起来。例如对于按次序执行的两个语句A、B我们可以增加一个控制条件以决定B的执行。通过这种方式加大反汇编的难度。但是所有的干扰控制都不应该影响B的执行。图6就给出三种方式为这个例子增加混淆控制。 控制流重组重组控制流也是重要的混淆方法。例如程序调用一个方法在混淆后可以将该方法代码嵌入到调用程序当中。反过来程序中的一段代码也可以转变为一个函数调用。另外对于一个循环的控制流为可以拆分多个循环的控制流或者将循环转化成一个递归过程。这种方法最为复杂研究的人员也非常多。 预防性混淆 这种混淆通常是针对一些专用的反编译器而设计的一般来说这些技术利用反编译器的弱点或者Bug来设计混淆方案。例如有些反编译器对于 Return后面的指令不进行反编译而有些混淆方案恰恰将代码放在Return语句后面。这种混淆的有效性对于不同反编译器的作用也不太相同的。一个好的混淆工具通常会综合使用这些混淆技术。 案例分析 在实践当中保护一个大型Java程序经常需要综合使用这些方法而不是单一使用某一种方法。这是因为每种方法都有其弱点和应用环境。综合使用这些方法使得Java程序的保护更加有效。另外我们经常还需要使用其它的相关安全技术例如安全认证、数字签名、PKI等。 本文给出的例子是一个Java应用程序它是一个SCJP(Sun Certificate Java Programmer)的模拟考试软件。该应用程序带有大量的模拟题目所有的题目都被加密后存储在文件中。由于它所带的题库是该软件的核心部分所以关于题库的存取和访问就成为非常核心的类。一旦这些相关的类被反编译则所有的题库将被破解。现在我们来考虑如何保护这些题库及相关的类。 在这个例子中我们考虑使用综合保护技术其中包括本地代码和混淆技术。因为该软件主要发布在Windows上因此转换成本地代码后仅仅需要维护一个版本的本地代码。另外混淆对Java程序也是非常有效的适用于这种独立发布的应用系统。 在具体的方案中我们将程序分为两个部分一个是由本地代码编写的题库访问的模块另外一个是由Java开发的其它模块。这样可以更高程度地保护题目管理模块不被[反编译。对于Java开发的模块我们仍然要使用混淆技术。该方案的示意图参见图7。 对于题目管理模块由于程序主要在Windows下使用所以使用C开发题库访问模块并且提供了一定的访问接口。为了保护题库访问的接口我们还增加了一个初始化接口用于每次使用题库访问接口之前的初始化工作。它的接口主要分为两类 初始化接口 在使用题库模块之前我们必须先调用初始化接口。在调用该接口时客户端需要提供一个随机数作为参数。题库管理模块和客户端通过这个随机数按一定的算法同时生成相同的SessionKey用于加密以后输入和输出的所有数据。通过这种方式只有授权(有效)的客户端才能够连接正确的连接生成正确的 SessionKey用于访问题库信息。非法的客户很难生成正确的SessionKey因此无法获得题库的信息。如果需要建立更高的保密级别也可以采用双向认证技术。 数据访问接口 认证完成之后客户端就可以正常的访问题库数据。但是输入和输出的数据都是由SessionKey所加密的数据。因此只有正确的题库管理模块才能够使用题库管理模块。图8时序图表示了题库管理模块和其它部分的交互过程。
http://www.fuzeviewer.com/news/12014/

相关文章:

  • Just Daydreaming CSP2025 游记
  • 做网站是学什么专业珠海企业官网设计制作
  • 做网站UI说不会写文案安防网站建设优点
  • 网站开发原始数据国际品牌的广州网页设计
  • 国外免费源码共享网站编程培训机构招聘
  • 2025年度边坡防护网正规企业排名:中国五大老牌边坡防护网厂家深度测评
  • 西安网站设计 牛人网络杭州科技公司排名
  • 建设银行科技中心网站首页从零开始学做网站
  • 建设银行网站特点网站建设成本计划书
  • 石家庄网站建设设计企业黄页大全
  • 想开个网站建设的公司网站建设中间件收费
  • 精品网站建重庆小程序开发公司
  • 西部网站助手wordpress后台没有写权限
  • 南京网站c建设云世家给企业做网站怎么收钱
  • 电商网站有哪些类型怎样在微信做产品网站
  • 澄海网站建设公司网站建设的过程有哪些
  • 对象存储系统MinIO详细以及部署
  • 佳木斯网站建设哪家好商城微信小程序免费制作平台
  • 做网站需要多少固定带宽有关电子商务网站建设的论文
  • 涞源网站建设快站如何做网站
  • 个人网站取名做一个网上商城需要多少钱
  • 实惠高端网站设计品牌创意极简logo
  • 251103
  • 淘宝建站服务千锋教育
  • 网站建设昆明重庆app推广公司
  • 网站推广排名有什么技巧湖南省博物馆网站建设
  • 高清网站建设的好处海南网站策划
  • 网站怎么做显得简洁美观做电商网站哪家好
  • 林州网站建设tengine wordpress
  • 广州自助网站制作在线视频网站如何制作