峰源框架结构视频破解(峰源结构设计视频课程)

hacker|
86

怎样对ssh框架结构的编译之后的.class进行混淆处理,防止反编译。

下面是我从论坛上靠过来的 希望对你有帮助

常用的保护技术

由于Java字节码的抽象级别较高,因此它们较容易被反编译。本节介绍了几种常用的方法,用于保护Java字节码不被反编译。通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已,因为这些方法都有自己的使用环境和弱点。

隔离Java程序

最简单的方法就是让用户不能够访问到Java

Class程序,这种方法是最根本的方法,具体实现有多种方式。例如,开发人员可以将关键的Java

Class放在服务器端,客户端通过访问服务器的相关接口来获得服务,而不是直接访问Class文件。这样黑客就没有办法反编译Class文件。目前,通

过接口提供服务的标准和协议也越来越多,例如 HTTP、Web

Service、RPC等。但是有很多应用都不适合这种保护方式,例如对于单机运行的程序就无法隔离Java程序。这种保护方式见图1所示。

图1隔离Java程序示意图

对Class文件进行加密

为了防止Class文件被直接反编译,许多开发人员将一些关键的Class文件进行加密,例如对注册码、序列号管理相关的类等。在使用这些被加密的类之前,程序首先需要对这些类进行解密,而后再将这些类装载到JVM当中。这些类的解密可以由硬件完成,也可以使用软件完成。

在实现时,开发人员往往通过自定义ClassLoader类来完成加密类的装载(注意由于安全性的原因,Applet不能够支持自定义的

ClassLoader)。自定义的ClassLoader首先找到加密的类,而后进行解密,最后将解密后的类装载到JVM当中。在这种保护方式中,自定

义的ClassLoader是非常关键的类。由于它本身不是被加密的,因此它可能成为黑客最先攻击的目标。如果相关的解密密钥和算法被攻克,那么被加密的

类也很容易被解密。这种保护方式示意图见图2。

图2 对Class文件进行加密示意图

转换成本地代码

将程序转换成本地代码也是一种防止反编译的有效方法。因为本地代码往往难以被反编译。开发人员可以选择将整个应用程序转换成本地代码,也可以选择关键模块转换。如果仅仅转换关键部分模块,Java程序在使用这些模块时,需要使用JNI技术进行调用。

当然,在使用这种技术保护Java程序的同时,也牺牲了Java的跨平台特性。对于不同的平台,我们需要维护不同版本的本地代码,这将加重软件支持和维护的工作。不过对于一些关键的模块,有时这种方案往往是必要的。

为了保证这些本地代码不被修改和替代,通常需要对这些代码进行数字签名。在使用这些本地代码之前,往往需要对这些本地代码进行认证,确保这些代码没有被黑客更改。如果签名检查通过,则调用相关JNI方法。这种保护方式示意图见图3。

代码混淆

图3 转换成本地代码示意图

代码混淆是对Class文件进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能(语义)。但是混淆后的代码很难被反编译,即反编

译后得出的代码是非常难懂、晦涩的,因此反编译人员很难得出程序的真正语义。从理论上来说,黑客如果有足够的时间,被混淆的代码仍然可能被破解,甚至目前

有些人正在研制反混淆的工具。但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,经过混淆的Java代码还是能够很好地防止反编译。下面我

们会详细介绍混淆技术,因为混淆是一种保护Java程序的重要技术。图4是代码混淆的示意图。

图4 代码混淆示意图

几种技术的总结

以上几种技术都有不同的应用环境,各自都有自己的弱点,表1是相关特点的比较。

混淆技术介绍

表1 不同保护技术比较表

到目前为止,对于Java程序的保护,混淆技术还是最基本的保护方法。Java混淆工具也非常多,包括商业的、免费的、开放源代码的。

Sun公司也提供了自己的混淆工具。它们大多都是对Class文件进行混淆处理,也有少量工具首先对源代码进行处理,然后再对Class进行处理,这样加

大了混淆处理的力度。目前,商业上比较成功的混淆工具包括JProof公司的1stBarrier系列、Eastridge公司的JShrink和

4thpass.com的SourceGuard等。主要的混淆技术按照混淆目标可以进行如下分类,它们分别为符号混淆(Lexical

Obfuscation)、数据混淆(Data Obfuscation)、控制混淆(Control

Obfuscation)、预防性混淆(Prevent Transformation)。

符号混淆

在Class中存在许多与程序执行本身无关的信息,例如方法名称、变量名称,这些符号的名称往往带有一定的含义。例如某个方法名为

getKeyLength(),那么这个方法很可能就是用来返回Key的长度。符号混淆就是将这些信息打乱,把这些信息变成无任何意义的表示,例如将所有

的变量从vairant_001开始编号;对于所有的方法从method_001开始编号。这将对反编译带来一定的困难。对于私有函数、局部变量,通常可

以改变它们的符号,而不影响程序的运行。但是对于一些接口名称、公有函数、成员变量,如果有其它外部模块需要引用这些符号,我们往往需要保留这些名称,否

则外部模块找不到这些名称的方法和变量。因此,多数的混淆工具对于符号混淆,都提供了丰富的选项,让用户选择是否、如何进行符号混淆。

数据混淆

图5 改变数据访问

数据混淆是对程序使用的数据进行混淆。混淆的方法也有多种,主要可以分为改变数据存储及编码(Store and Encode Transform)、改变数据访问(Access Transform)。

改变数据存储和编码可以打乱程序使用的数据存储方式。例如将一个有10个成员的数组,拆开为10个变量,并且打乱这些变量的名字;将一个两维数组转化为一个一维数组等。对于一些复杂的数据结构,我们将打乱它的数据结构,例如用多个类代替一个复杂的类等。

另外一种方式是改变数据访问。例如访问数组的下标时,我们可以进行一定的计算,图5就是一个例子。

在实践混淆处理中,这两种方法通常是综合使用的,在打乱数据存储的同时,也打乱数据访问的方式。经过对数据混淆,程序的语义变得复杂了,这样增大了反编译的难度。

控制混淆

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

增加混淆控制

通过增加额外的、复杂的控制流,可以将程序原来的语义隐藏起来。例如,对于按次序执行的两个语句A、B,我们可以增加一个控制条件,以决定B的执行。通过

这种方式加大反汇编的难度。但是所有的干扰控制都不应该影响B的执行。图6就给出三种方式,为这个例子增加混淆控制。

图6 增加混淆控制的三种方式

控制流重组

重组控制流也是重要的混淆方法。例如,程序调用一个方法,在混淆后,可以将该方法代码嵌入到调用程序当中。反过来,程序中的一段代码也可以转变为一个函数

调用。另外,对于一个循环的控制流,为可以拆分多个循环的控制流,或者将循环转化成一个递归过程。这种方法最为复杂,研究的人员也非常多。

预防性混淆

这种混淆通常是针对一些专用的反编译器而设计的,一般来说,这些技术利用反编译器的弱点或者Bug来设计混淆方案。例如,有些反编译器对于

Return后面的指令不进行反编译,而有些混淆方案恰恰将代码放在Return语句后面。这种混淆的有效性对于不同反编译器的作用也不太相同的。一个好

的混淆工具,通常会综合使用这些混淆技术。

案例分析

在实践当中,保护一个大型Java程序经常需要综合使用这些方法,而不是单一使用某一种方法。这是因为每种方法都有其弱点和应用环境。综合使用这些方法使得Java程序的保护更加有效。另外,我们经常还需要使用其它的相关安全技术,例如安全认证、数字签名、PKI等。

本文给出的例子是一个Java应用程序,它是一个SCJP(Sun Certificate Java

Programmer)的模拟考试软件。该应用程序带有大量的模拟题目,所有的题目都被加密后存储在文件中。由于它所带的题库是该软件的核心部分,所以关

于题库的存取和访问就成为非常核心的类。一旦这些相关的类被反编译,则所有的题库将被破解。现在,我们来考虑如何保护这些题库及相关的类。

在这个例子中,我们考虑使用综合保护技术,其中包括本地代码和混淆技术。因为该软件主要发布在Windows上,因此转换成本地代码后,仅仅需要维护一个版本的本地代码。另外,混淆对Java程序也是非常有效的,适用于这种独立发布的应用系统。

在具体的方案中,我们将程序分为两个部分,一个是由本地代码编写的题库访问的模块,另外一个是由Java开发的其它模块。这样可以更高程度地保护题目管理模块不被反编译。对于Java开发的模块,我们仍然要使用混淆技术。该方案的示意图参见图7。

图7 SCJP保护技术方案图

对于题目管理模块,由于程序主要在Windows下使用,所以使用C++开发题库访问模块,并且提供了一定的访问接口。为了保护题库访问的接口,我们还增加了一个初始化接口,用于每次使用题库访问接口之前的初始化工作。它的接口主要分为两类:

1. 初始化接口

在使用题库模块之前,我们必须先调用初始化接口。在调用该接口时,客户端需要提供一个随机数作为参数。题库管理模块和客户端通过这个随机数,按

一定的算法同时生成相同的SessionKey,用于加密以后输入和输出的所有数据。通过这种方式,只有授权(有效)的客户端才能够连接正确的连接,生成

正确的SessionKey,用于访问题库信息。非法的客户很难生成正确的SessionKey,因此无法获得题库的信息。如果需要建立更高的保密级别,

也可以采用双向认证技术。

2. 数据访问接口

认证完成之后,客户端就可以正常的访问题库数据。但是,输入和输出的数据都是由SessionKey所加密的数据。因此,只有正确的题库管理模块才能够使用题库管理模块。图8时序图表示了题库管理模块和其它部分的交互过程。

图8 题库管理模块和其它部分的交互过程图

框架结构、剪力墙结构、框架剪力墙结构的各自优缺点和适用范围是什么?

框架结构建筑布置比较灵活,可以形成较大的空间,但抵抗水平荷载的能力较差,而剪力墙结构则相反。

剪力墙结构是指纵横向的主要承重结构全部为结构墙的结构。当墙体处于建筑物中合适的位置时,它们能形成一种有效抵抗水平作用的结构体系。

同时,又能起到对空间的分割作用。结构墙的高度一般与整个房屋的高度相等,自基础直至屋顶,高达几十米或100多米;其宽度则视建筑平面的布置而定,一般为几米到十几米。

效能:

1、建筑物中的竖向承重构件主要由墙体承担时,这种墙体既承担水平构件传来的竖向荷载,同时承担风力或地震作用传来的水平地震作用。剪力墙即由此而得名(抗震规范定名为抗震墙)。

2、剪力墙是建筑物的分隔墙和围护墙,因此墙体的布置必须同时满足建筑平面布置和结构布置的要求。

3、剪力墙结构体系,有很好的承载能力,而且有很好的整体性和空间作用,比框架结构有更好的抗侧力能力,因此,可建造较高的建筑物。

4、剪力墙的间距有一定限制,故不可能开间太大。对需要大空间时就不太适用。灵活性就差。一般适用住宅、公寓和旅馆。

5、剪力墙结构的楼盖结构一般采用平板,可以不设梁,所以空间利用比较好,可节约层高。

什么是砖混结构,什么是框架结构

砖混,说的俗点一般就是房子不会太高,五层,六层那种老的房子,地基打的也不是太深,用钢筋混凝土做一些主要的柱子,之后用砖做墙体;框架就是现在的电梯房,楼层高,对强度要求高,所以主要用钢筋混凝土浇出来的,完成后就象一个一个的水泥盒子,内部再做进行分隔。实在还不好理解,你就认为砖混是矮房子,框架是高楼大厦。

什么叫网页框架式结构,还有什么叫链接栏!

1网页框架:简单的说就是已经存在的网页格式 比如我们现在看到的你这个百度知道的问题页面 你可以观察下别人的问题页面 可以发现跟你的一样 都有:1 用户登陆的那些信息:比如XXXXX试用期 一级(85) | 我的提问 | 我的回答 | 我的消息(1/1) | 百度首页 | 退出 (在右上角)

2百度知道搜索 3提问的问题 4以及别人的回答 5右侧的相关问题等.这些是每个问题页面都有的 是一个框架模式 说白了就是一个布局方案.

2链接栏: 就是一个列表式的东西(类似这个页面里右侧那些相关问题) 里面的每一项都是一个链接 点击这些连接可转到相应界面

3表单技术:在网页中建立表 在表中进行设计操作。

4资料采集:设置一些文本框(或其它交互式组件) 提问些让别人回答的问题 通过对文本框的处理来收集信息与用户交流,就好比我回答你这个问题时用的(我来回答) 这就是个表单 在表单里设置了文本框供用户写问题答案 还设置了按钮 供用户提交答案 我点击提交后 页面就将我的回答上传到服务器数据库里 这样就实现了资料采集

建议你下载Dreamweaver做网页界面 那里面提供明确的表单选项等

框架结构和框剪结构有什么区别?

一、概念不同

1、框架结构是由许多梁和柱共同组成的框架来承受房屋全部荷载的结构。高层的民用建筑和多层的工业厂房,砖墙承重已不能适应荷重较大的要求,往往采用框架作为承重结构。

2、框架-剪力墙结构,俗称为框剪结构。主要结构是框架,由梁柱构成,小部分是剪力墙。墙体全部采用填充墙体,由密柱高梁空间框架或空间剪力墙所组成,在水平荷载作用下起整体空间作用的抗侧力构件。适用于平面或竖向布置繁杂、水平荷载大的高层建筑。

二、特征不同

1、框架结构

框架建筑的主要优点:空间分隔灵活,自重轻,节省材料;具有可以较灵活地配合建筑平面布置的优点,利于安排需要较大空间的建筑结构;框架结构的梁、柱构件易于标准化、定型化,便于采用装配整体式结构,以缩短施工工期。

采用现浇混凝土框架时,结构的整体性、刚度较好,设计处理好也能达到较好的抗震效果,而且可以把梁或柱浇注成各种需要的截面形状。

2、框剪结构

1)剪力墙结合

框剪结构是框架结构和剪力墙结构两种体系的结合,吸取了各自的长处,既能为建筑平面布置提供较大的使用空间,又具有良好的抗侧力性能。

框剪结构中的剪力墙可以单独设置,也可以利用电梯井、楼梯间、管道井等墙体。因此,这种结构已被广泛地应用于各类房屋建筑。

2)剪弯型

众所周知,框架结构的变形是剪切型,上部层间相对变形小,下部层间相对变形大。剪力墙结构的变形为弯曲型,上部层间相对变形大,下部层间相对变形小。

对于框剪结构,由于两种结构协同工作变形协调,形成了弯剪变形,从而减小了结构的层间相对位移比和顶点位移比,使结构的侧向刚度得到了提高。

三、应用范围不同

1、框架结构

框架结构可设计成静定的三铰框架或超静定的双铰框架与无铰框架。混凝土框架结构广泛用于住宅、学校、办公楼,也有根据需要对混凝土梁或板施加预应力。

以适用于较大的跨度;框架钢结构常用于大跨度的公共建筑、多层工业厂房和一些特殊用途的建筑物中,如剧场、商场、体育馆、火车站、展览厅、造船厂、飞机库、停车场、轻工业车间等。

2、框剪结构

框剪结构是当代高层建筑设计普遍采用的结构形式,全称为“框架剪力墙结构”(frame-shear wall structure)该结构是在框架结构中布置一定数量的剪力墙,构成灵活自由的使用空间,满足不同建筑功能的要求,足够数量的剪力墙使建筑本身拥有相当大的刚度。

参考资料来源:百度百科-框剪结构

参考资料来源:百度百科-框架结构

什么是框架结构呢?

框架结构住宅,是指以钢筋混凝土浇注成承重梁柱,再用预制的加气混凝土、膨胀珍珠岩、浮石、蛭石、等轻质板材隔墙分户装配而成的住宅。适合大规模工业化施工,效率较高,工程质量较好。框架结构的住房除了抗震性能好以外,还具有可以自由分割的特点。一套房子之内,卧室、客厅、书房等可以由购房者重新分割、重新组合。所以建筑物以其结构类型不相同,可分为砖木结构、砖混结构、钢筋混凝土结构和钢结构共四大类。具有钢混结构的住宅,这类住宅结构材料是钢筋混凝土,即钢筋、水泥、粗细骨料(碎石)、水等的混合体。这种结构的住宅具有抗震性能好、整体性强、抗腐蚀能力强、经久耐用等优点,并且房间开间、进深相对较大,空间分割比较自由。

5条大神的评论

  • avatar
    访客 2022-11-20 下午 10:52:04

    如将一个有10个成员的数组,拆开为10个变量,并且打乱这些变量的名字;将一个两维数组转化为一个一维数组等。对于一些复杂的数据结构,我们将打乱它的数据结构,例如用多个类代替一个复杂的类等。 另外一种方式是改变

  • avatar
    访客 2022-11-21 上午 01:21:16

    formation)。 符号混淆 在Class中存在许多与程序执行本身无关的信息,例如方法名称、变量名称,这些符号的名称往往带有一定的含义。例如某个方法名为getKeyLength(),那么这个方法很可能就是用来返回Key的长度。符号混淆就是将这些信息打乱,把这些信息变成无任何意义的表示

  • avatar
    访客 2022-11-21 上午 01:26:26

    bfuscation)、数据混淆(Data Obfuscation)、控制混淆(Control Obfuscation)、预防性混淆(Prevent Transformation)。 符号混淆 在Class中存在许多与程序执行本身无关的信息,例如方法名称、

  • avatar
    访客 2022-11-20 下午 03:19:03

    能力强、经久耐用等优点,并且房间开间、进深相对较大,空间分割比较自由。

  • avatar
    访客 2022-11-20 下午 01:52:38

    部分,所以关于题库的存取和访问就成为非常核心的类。一旦这些相关的类被反编译,则所有的题库将被破解。现在,我们来考虑如何保护这些题库及相关的类。 在这个例子中,我们考虑使用综合保护技术,其中包括本地代码和混淆技术。因为该软件主要发布在Windows上,因此

发表评论