技术-Java防反编译技术

技术-Java防反编译技术
技术-Java防反编译技术

Java防反编译技术

1简介

1.1 Java软件面临的挑战

目前,由于黑客的频繁活动,使得Java类文件面临着反编译的挑战。有一些工具能够对Java 源代码进行反工程,其结果甚至以比普通Java文件更可读的方式, 尽管普通的Java文件(由于代码风格不同)有注释。许可证和软件过期对于用户们来说将变得无用。因此,防止软件被反编译或使得反编译的结果变得无意义对于Java来说非常重要。

一个Java类文件不一定非要存储在一个真正的文件里;它可以存在存贮器缓冲区,或从一个网络流获得。尽管防火墙和网络协议如TCP/IP有安全策略,黑客仍能打破访问限制获取一些类。尽管这些类能被混淆,他们(黑客)能够一步一步地分析和猜出每个指令的目的。如果这些代码是关键技术部分,例如是大产品的许可证或时间期满部分,反编译和分析指令的努力似乎很值得。如果这些关键类被隐藏或被一个关键字加密,黑客的非法入侵就很困难了。而且,未认证的软件复制对智能产权是普遍的攻击。还没有一个较好的通用方案来解决这类问题。

目前关于JA V A程序的加密方式不外乎JA V A混淆处理(Obfuscator)和运用ClassLoader 方法进行加密处理这两种方式(其他的方式亦有,但大多是这两种的延伸和变异)。

1.2 混淆处理

关于JA V A程序的加密方式,一直以来都是以JA V A混淆处理(Obfuscator)为主。这方面的研究结果也颇多,既有混淆器(如现在大名鼎鼎的JODE,SUN开发的JADE),也有针对反编译器的"炸弹"(如针对反编译工具Mocha的"炸弹" Crema和HoseMocha)。混淆器,从其字面上,我们就可以知道它是通过混淆处理JA V A代码,具体的说,就是更换变量名,函数名,甚至类名等方法使其反编译出来的代码变得不可理解。它的目的是:让程序无法被自动反编译,就算被反编译成功,也不容易被程序员阅读理解

其实这只是做到了视觉上的处理,其业务逻辑却依然不变,加以耐心,仍是可以攻破的,如果用在用户身份验证等目的上,完全可以找到身份验证算法而加以突破限制。

1.3 采用ClassLoader加密

JA V A虚拟机通过一个称为ClassLoader的对象装来载类文件的字节码,而ClassLoader 是可以由JA V A程序自己来定制的。ClassLoader是如何装载类的呢?ClassLoader根据类名在jar包中找到该类的文件,读取文件,并把它转换成一个Class对象。该方法的原理就是,

对需加密的类文件我们先行采用一定的方法(可以是PGP,RSA,MD5等方法)进行加密处理,我们可以在读取文件之后,进行解密后,再转换成一个Class对象。

2对性能及稳定性的影响

2.1 加密过的程序会遇到的问题

由于解密需要一定的时间,如果不加区分的全部进行加密处理,势必会影响到程序的速度和响应。所以应该在需要加密的地方才加密,比方说,用户密码验证,专利算法,或者是数据库密码等等,这样的才不会导致系统的性能下降。对于稳定性还没有看见有对稳定性影响的说明。

2.2 混淆过的程序会遇到的问题

通常效率会变差,更严重的情况是可能无法执行。对于稳定性还没有看见有对稳定性影响的说明。

3工具介绍

3.1 大名鼎鼎的JODE

业内比较牛、开放源代码的反编译工具(附带一个obfuscator的工具包)。其obfuscator 的工具包只有使用命令行的方式。

下载地址:https://www.360docs.net/doc/334874003.html,/projects/jode/

工作方式:将混淆作为一个批处理工程,建立一个文件来配置批处理的各个细节,工具附带的文档中有详细说明。我做了一个工程用来混淆NetSignServer API。见“netsignsvr.jos”文件

3.2 SUN开发的JADE

介绍:

JADE是能够解决上述问题和能满足用户在这方面需要的第一个工具。它由五部分组成:混淆器、加密器、封装器、类编辑器和输出工具。

专业厂商的混淆工具,命令行和图形界面两种使用方式均可。免费!

下载地址:https://www.360docs.net/doc/334874003.html,/tech-research/tdc/free-download.html

工作方式:(工具附带的文档中有详细说明)可以使用其图形界面的工具,pure java开发的。似乎可以认为是官方的混淆工具。

3.3 金蝶JOC

Java混淆编译器,免费!支持JDK1.4,未使用过。

3.4 Jbuilder OpenTools

Id号:18982

The Zelix KlassMaster Wizard OpenTool is an add-on module for the Borland JBuilder IDE, which works as a front-end to the Zelix KlassMaster obfuscator. This wizard allows the obfuscation of JBuilder projects with the help of Zelix KlassMaster from inside the JBuilder IDE. PLEASE NOTE: That this wizard needs and calls the Zelix KlassMaster 2nd generation obfuscator, which must be available and installed on your computer, before you can use this wizard.

For general information's about Zelix KlassMaster please take a look at: https://www.360docs.net/doc/334874003.html,/klassmaster

目前还不能下载(没有有效的URL),没有经过测试。

4总结

基本的混淆工具都通过命令行的方式,但混淆时有些规则是必须遵守的,很多网站上都有介绍。比如不要将你可能需要外部调用的方法进行混淆、不要将程序使用的资源(resource boundle)进行混淆。

混淆器混淆分为很多的级别,比如:对包名、类名、成员变量/方法名,以及公有的、私有的等等。可以分为不同的级别。这些级别可以在使用混淆工具进行自定义,尽管不同的混淆工具有不同的操作方式,关于保护的选项(规定不能被混淆的包名、类名、成员变量名/方法名,以及公有的、私有的声明)定义功能是它们都具备的。

5附录:技术比较以及总结和方案

5.1 Java软件面临的挑战

?目前,由于黑客的频繁活动,使得Java类文件面临着反编译的挑战。有一些工具能够对Java源代码进行反工程,其结果甚至以比普通Java文件更可读的方式,

尽管普通的Java文件(由于代码风格不同)有注释。许可证和软件过期对于用

户们来说将变得无用。因此,防止软件被反编译或使得反编译的结果变得无意

义对于Java来说非常重要。

?一个Java类文件不一定非要存储在一个真正的文件里;它可以存在存贮器缓冲区,或从一个网络流获得。尽管防火墙和网络协议如TCP/IP有安全策略,黑客

仍能打破访问限制获取一些类。尽管这些类能被混淆,他们(黑客)能够一步

一步地分析和猜出每个指令的目的。如果这些代码是关键技术部分,例如是大

产品的许可证或时间期满部分,反编译和分析指令的努力似乎很值得。如果这

些关键类被隐藏或被一个关键字加密,黑客的非法入侵就很困难了。而且,未

认证的软件复制对智能产权是普遍的攻击。还没有一个较好的通用方案来解决

这类问题。

5.2 现有的解决方案

JADE介绍:JADE是能够解决上述问题和能满足用户在这方面需要的第一个工具。它由五部分组成:混淆器、加密器、封装器、类编辑器和输出工具。

最全的脱壳,反编译 ,汇编工具集合

本文由nbdsb123456贡献 最全的脱壳,反编译,汇编工具集合 破解工具下载连接 1 调试工具 Ollydbg V1.10 正式汉化修改版+最新最全插件2.02m SmartCheck V6.20 20.54M Compuware SoftICE V4.3.1 精简版10.57M Compuware (SoftICE) Driver Studio V3.1 完全版176.52M TRW2000 V1.22 汉化修改版+全部最新插件1.47Mforwin9X 动态破解VB P-code程序的工具 WKTVBDebugger1.4e 2 反汇编工具 W32Dasm是一个静态反汇编工具,也是破解人常用的工具之一,它也被比作破解人的屠龙刀。 W32Dasm10.0修改版是经Killer在W32Dasm8.93基础上修改的,修改后的W32Dasm功能更强大,能完美显示中文字符串及VB程序,内含16进制编辑器,破解修改软件更容易,真可谓是反汇编极品! W32Dasm V10.0 汉化增强版419 KB 反汇编工具老大,功能大大的胜过了w32dasm。学习加解密的朋友不可错过。即使不用你也要收藏一份。:) IDA Pro Standard V4.60.785 零售版 + Flair + SDK33.08 MB C32Asm是集反汇编、16进制工具、Hiew修改功能与一体的新工具。强烈推荐! C32Asm V0.4.12 1.97 MB C32Asm V0.4.12 破解补丁 650 KB 3 反编译工具 Delphi DeDe3.50.04 Fix增强版5.3 MB 4 PE相关工具 PE编辑工具 Stud_PE1.8 PE工具,用来学习PE格式十分方便。 https://www.360docs.net/doc/334874003.html,/tools/PE_tools/Editor/stdupe/Stud_PE1.8.zip ProcDump32 v1.6.2 FINAL Windows下的脱壳工具并可进行PE编辑。可惜不更新了,己过时,现阶段一般只用来作为PE编辑工具使用。 Win9x/2K 大小:161K https://www.360docs.net/doc/334874003.html,/tools/PE_tools/Editor/ProcDump/PDUMP32.ZIP LordPE DLX 强大的PE编辑工具,有了它,其它的相关工具你可以扔进垃圾堆了。 https://www.360docs.net/doc/334874003.html,/tools/PE_tools/Lordpe/LPE-DLX.ZIP PEditor 1.7 可修复PE文件头,一款相当方便的PE文件头编辑工具。 417K PE Tools v1.5.4 另一款PE编辑工具。 https://www.360docs.net/doc/334874003.html,/tools/PE_tools/Editor/PEditor/PEDITOR.ZIP 输入表重建工具 ImportREC v1.6 FINAL 各类插件可以手工重建Import表,支持UPX、Safedisc 1、PECompact、PKLite32、Shrinker、ASPack, ASProtect、tELock等。 160K

流媒体技术的工作原理及应用和发展

流媒体技术的原理、应用及发展 一.流媒体 流媒体又叫流式媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传 送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。这个过程的一系列相关的包称为“流”。流媒体实际指的是一种新的媒体传送方式,而非一种新的媒体。所谓流媒体是指采用流式传输的方式在Internet播放的媒体格式。流式传 输方式则是将整个A/V及3D等多媒体文件经过特殊的压缩方式分成一个个压缩包,由视 频服务器向用户计算机连续、实时传送。在采用流式传输方式的系统中,用户不必等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备(硬件或软件)对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒 体文件的剩余部分将在后台的服务器内继续下载。 与单纯的下载方式相比,这种对多媒体文件边下载边播放的流式传输方式不仅使启动 延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。在网络上传输音/视频等多媒体信息目前主要有下载和流式传输两种方案。实现流式传输有两种方法: ?实时流式传输(Real-time streaming transport) ?顺序流式传输(progressive streaming transport)。 一般来说,如为实时广播,或使用流式传输媒体服务器,或应用实时流协议(RTSP)等,即为实时流式传输。如使用超文本传输协议(HTTP)服务器,文件即通过顺序流发送。采用哪种传输方法可以根据需要进行选择。当然,流式文件也支持在播放前完全下载到硬盘。 (1)实时流式传输 实时流式传输总是实时传送,特别适合现场广播,也支持随机访问,用户可快进或后退以观看后面或前面的内容。但实时流式传输必须保证媒体信号带宽与网络连接匹配,以便传输的内容可被实时观看。实时流式传输需要专用的流媒体服务器与传输协议。 (2)顺序流式传输 顺序流式传输是顺序下载,在下载文件的同时用户可观看在线内容,在给定时刻,用户只能观看已下载的部分,而不能跳到还未下载的部分。由于标准的HTTP服务器可发送 顺序流式传输的文件,也不需要其他特殊协议,所以顺序流式传输经常被称作HTTP流式 传输。 顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于这种传输方式观看的部分是无损下载的,所以能够保证播放的最终质量。但这也意味着用户在观看前必须经历时延。顺序流式传输不适合长片段和有随机访问要求的情况,如讲座、演说与演示;也不支持现场广播,严格说来,它是一种点播技术。 二、流媒体技术原理 流式传输的实现需要合适的传输协议。由于TCP需要较多的开销,故不太适合传输实时数据。在流式传输的实现方案中,一般采用HTTP/TCP来传输控制信息,而用实时传 输协议/用户数据报协议(RTP/UDP)来传输实时数据。 流式传输的实现需要缓存。因为一个实时音视频源或存储的音视频文件在传输中被分解为许多数据包,而网络又是动态变化的,各个包选择的路由可能不相同,故到达客户端的时延也就不同,甚至先发的数据包有可能后到。为此,需要使用缓存系统来消除时延和抖动的影响,以保证数据包顺序正确,从而使媒体数据能够连续输出。

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

java图形化界面实现简单计算器

学号 天津城建大学 Java 语言程序设计C 实验报告 实验5:计算器 学生姓名路江飞 班级11卓越7班 一、实验目的 1.掌握Java图形组件与布局管理器的使用; 2.掌握使用Java事件处理机制的使用; 3.掌握图形界面的各种控件的使用,如:标签、文本框、按钮、复选框、列表框、窗框等。 二、实验要求 1.采用布局管理器进行界面的布局; 2.学会对不同的事件用相应的事件处理器; 3.写出实验报告。要求记录编译与执行Java程序当中的系统错误信息提材示,并给出解决办法。 三、实验内容 1.在随堂练习的简单计算器基础上设计一个多功能计算器。包括复杂的功能:比如记忆功能,三角函数,成方,对数等等。 五、实验结果 文件1: package computer; import java、awt、BorderLayout; public class Compuer extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1;

private JTextField textField_2; private JTextField textField_3; /** * Launch the application、 */ public static void main(String[] args) { EventQueue、invokeLater(new Runnable() { public void run() { //运行程序时,点击按钮输入公式,当点击等于号时显示出计算结果 try { Compuer frame = new Compuer(); frame、setVisible(true); Time time=new Time(); time、setTime(frame、textField_3); Thread thread=new Thread(time); thread、start(); } catch (Exception e) { e、printStackTrace(); } } }); } /** * Create the frame、 */ public Compuer() { setTitle("\u8BA1\u7B97\u5668"); setName(""); final StringBuffer s=new StringBuffer(); setDefaultCloseOperation(JFrame、EXIT_ON_CLOSE); setBounds(100, 100, 412, 448); contentPane = new JPanel(); contentPane、setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane、setLayout(null); textField = new JTextField(); textField、setEnabled(false); textField、setLocale(Locale、UK); textField、setForeground(Color、PINK); textField、setText(" \u6B22\u8FCE\u4F7F\u7528\u8BA1\u7B97\u5668"); textField、setBounds(10, 20, 368, 30); contentPane、add(textField);

流媒体技术及其教育应用

流媒体技术及其教育应用 一.引言 在网络上传输音/视频等多媒体信息目前主要有下载和流式传输两种方案。A/V 文件一般都较大,所以需要的存储容量也较大;同时由于网络带宽的限制,下载常常要花数分钟甚至数小时,所以这种处理方法延迟也很大。流式传输时,声音、影像或动画等时基媒体由音视频服务器向用户计算机的连续、实时传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十数秒的启动延时即可进行观看。当声音等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器内继续下载。流式不仅使启动延时成十倍、百倍地缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部从Internet 上下载才能观看的缺点。流媒体指在Internet/Intranet中使用流式传输技术的连续时基媒体,如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的 数据流随时传送随时播放,只是在开始时有一些延迟。 “流媒体”的概念包括以下两个层面。其一,流媒体是计算机网络尤其是中低带(Internet/Intranet)上需要实时传输的多媒体文件,比如声音、视频文件。在传输前需要压缩处理成多个压缩包,并附加上与其传输有关的信息(比如,控制用户端播放器正确播放的必要的辅助信息),形成实时数据流。数据流最大的特点是允许播放器及时反应而不用等待整个文件的下载。其二,流媒体是对多媒体信息进行“流化”处理,是一种解决问题的方式,可以使视频等对实时性要求严格的多媒体文件在上在Internet/Intranet既无下载等待需求又不占用客户端硬盘空间的情况下保证实时播放。 流媒体技术是综合的技术, 包括采集、编码、传输、储存、解码等多项技术。流媒体应用系统一般由分编码端、服务器端、用户终端三部分组成。流媒体技术在教育或学校的应用前景广阔, 可用于课件点播、交互教学、电视转播、远程监控、视频会议等。 二.流媒体技术基础 1.流媒体技术原理 流式传输的实现需要缓存。因为Internet 以包传输为基础进行断续的异步传输,对一个实时A/V 源或存储的A/V文件,在传输中它们要被分解为许多包,由于网络是动态变 化的,各个包选择的路由可能不尽相同,故到达客户端的时间延迟也就不等,甚至先发的数据包还有可能后到。为此,使用缓存系统来弥补延迟和抖动的影响,并保证数据包的顺序正确,从而使媒体数据能连续输出,而不会因为网络暂时拥塞使播放出现停顿。通常高速缓存所需容量并不大,因为高速缓存使用环形链表结构来存储数据:通过丢弃已经播放的内容,流可以重新利用空出的高速缓存空间来缓存后续尚未播放的内容。流式传输的过程一般是这样的:用户选择某一流媒体服务后,Web 浏览器与Web 服务器之间使用HTTP/TCP 交换控制信息,以便把需要传输的实时数据从原始信息中检索来;然后客户机上的Web 浏览器启动A/VHelper 程序,使用HTTP从Web服务器检索相关参数对Helper程序初始化。这些参数可能包括目录信息、A/V 数据的编码类型或与A/V检索相关的服务器地址。A/VHelper 程序及A/V 服务器运行实时流控制协议RTSP),以交换A/V 传输所需的控制信息。与CD 播放机或VCRs 所提供的功能相似,RTSP 提供了操纵播放、快进、快倒暂停及录制等命令的方法。A/V 服务器使用RTP/UDP协议将A/V 数据传输给A/V 客户程序(一般可认为客户程序等同于Helper 程序),一旦A/V 数据抵达客户端,A/V客户程序即可播放输出。 需要说明的是,在流式传输中,使用RTP/UDP 和RTSP/TCP 两种不同的通信协议与A/V 服务器建立联系,是为了能够把服务器的输出重定向到一个不同于运行A/VHelper 程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器。

Apk反编译及签名工具使用

Apk反编译及签名工具使用 1) APKtool软件包及签名tool APKtool软件包有2个程序组成:apktool.jar 和aapt.exe 另外提供一个批处理文件:apktool.bat,其内容为: java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9 运行apktools.jar需要java环境(1.6.0版本以上)。 apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。 signapk.jar 用于签名。 2) APK文件的解包 下面以解开Contacts.apk为例。首先把Contacts.apk Copy到当前工作目录下(例:Test)。在DOS下打入命令 apktool d Contacts.apk ABC 这里“d”表示要解码。Contacts.apk是要解包的APK文件。ABC是子目录名。所有解包的文件都会放在这个子目录内。 3) APK文件的打包 在DOS下打入命令 apktool b ABC New-Contacts.apk 这里“b”表示要打包 ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。 New-Contacts.apk是打包后产生的新的APK文件。 4) 签名,不签名安装时可能提示如下错误: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] --- 没有签名,可以尝试test证书;签名方法见下面。

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] ---- 已存在签名,但使用证书不对,可以尝试使用其他证书签名。 签名方法:到目录android\build\target\product\security找到证书文件,这里可能会有几种证书, test/shared/platform/media,各种证书使用场景不同,可以自己google一下,因为签名很快而且可任意后续更改签名,可以自己尝试各种不同签名; 这个命令行是使用test证书的例子:java -jar signapk.jar testkey.x509.pem testkey.pk8 YOURAPK.apk YOURAPK_signed.apk YOURAPK_signed.apk就是签完名的apk,去测试一下您重新打包的apk吧。

流媒体技术的原理、应用及发展

摘要:Internet的迅猛发展和普及为流媒体业务发展提供了强大的市场动力,流媒体业务正日益普及,流媒体技术广泛应用于互联网信息服务的方方面面。首先介绍了流媒体技术的基础、基本原理以及流式传输的基本过程,接着重点介绍了流媒体技术在视频点播、远程教育、视频会议和Internet直播方面的应用,最后介绍了流媒体技术的发展现状和展望。 关键词:多媒体通信,多媒体业务,流媒体,流式传输,原理,应用,发展 随着现代网络技术的发展,网络开始带给人们形式多样的信息。从在网络上出现第一张图片到现在各种形式的网络视频、三维动画,人们的视听觉在网络上得到了很大的满足。但人们又面临着另外一种不可避免的尴尬:在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一种新的媒体技术应运而生,这就是流媒体技术。 流媒体是指在网络中使用流式传输技术的连续时基媒体,如音频、视频或多媒体文件。而流式传输技术就是把连续的声音和图像信息经过压缩处理后放到网站服务器上,让用户一边下载一边收听观看,而不需要等待整个文件下载到自己的机器后才可以观看的网络传输技术。 目前,在网络上传输音视频(A/V)等多媒体信息主要有下载和流式传输两种方案。一方面,由于音视频文件一般都较大,所以需要的存储容量也较大;同时由于受网络带宽的限制,下载这样的文件常常需要几分钟甚至几小时,所以采用下载方法的时延也就很大。而采用流式传输时,声音、图像或动画等时基媒体由音视频服务器向用户计算机连续、实时传送,用户只需经过几秒或数十秒的启动时延而不必等到整个文件全部下载完毕即可观看。当声音、图像等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器上继续下载。流式传输不仅使启动时延大大缩短,而且不需要太大的缓存容量。流式传输避免了用户必须等待整个文件全部下载完毕之后才能观看的缺点。一、流媒体技术基础 实现流式传输有两种方法:实时流式传输(Real-time streaming transport)和顺序流式传输(progressive streaming transport)。一般来说,如为实时广播,或使用流式传输媒体服务器,或应用实时流协议(RTSP)等,即为实时流式传输。如使用超文本传输协议(HTTP)服务器,文件即通过顺序流发送。采用哪种传输方法可以根据需要进行选择。当然,流式文件也支持在播放前完全下载到硬盘。 1.实时流式传输 实时流式传输总是实时传送,特别适合现场广播,也支持随机访问,用户可快进或后退以观看后面或前面的内容。但实时流式传输必须保证媒体信号带宽与网络连接匹配,以便传输的内容可被实时观看。这意味着在以调制解调器速度连接网络时图像质量较差。而且,如果因为网络拥塞或出现问题而导致出错和丢失的信息都被忽略掉,那么图像质量将很差。实时流式传输需要专用的流媒体服务器与传输协议。 2.顺序流式传输 顺序流式传输是顺序下载,在下载文件的同时用户可观看在线内容,在给定时刻,用户只能观看已下载的部分,而不能跳到还未下载的部分。由于标准的HTTP服务器可发送顺序流式传输的文件,也不需要其他特殊协议,所以顺序流式传输经常被称作HTTP流式传输。顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于这种传输方式观看的部分是无损下载的,所以能够保证播放的最终质量。但这也意味着用户在观看前必须经历时延。顺序流式传输不适合长片段和有随机访问要求的情况,如讲座、演说与演示;也不支持现场广播,严格说来,它是一种点播技术。

java编写的简单的计算器程序

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化 参考代码: import .*;

import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

java class反编译后的代码还原

javaclass利用jad反编译之后,偶尔回碰到一些不正常的代码,例如: label0:_L1MISSING_BLOCK_LABEL_ 30、JVM INSTR ret 7、JVM INSTR tableswitch 1 3: default 269、JVM INSTR monitorexit、JVM INSTR monitorenter,这些一般是由特殊的for循环、try catchfinally语句块、synchronized语句反编译后产生的。下面,就简单介绍一下,一些反编译后的特殊代码的还原规则。 异常 下面的代码前提是类中有如下属性, Calendar cal = Calendar.getInstance(); 1、Exceptioin的还原 反编译后的代码如下: public boolean f1() { return cal.getTime().after(new Date());Exception e; e; e.printStackTrace(); return false; }还原后的Java代码public boolean f1() { try { return cal.getTime().after(new Date());} catch (Exception e) { e.printStackTrace(); return false; } } 2、finally代码的还原反编译后的Java代码如下: publicbooleanf2(){booleanflag=cal.getTime().after(new Date());

System.out.println("finally"); return flag; Exception e; e; e.printStackTrace(); System.out.println("finally"); return false; Exception exception; exception; System.out.println("finally"); throw exception; }还原后的代码如下: public boolean f2() { try { return cal.getTime().after(new Date());} catch (Exception e) { e.printStackTrace(); return false; } finally { System.out.println("finally"); } } 3、MISSING_BLOCK_LABEL_的还原反编译后的代码 publicObjectf22(){Datedate=cal.getTime(); System.out.println("finally"); return date; Exception e;

java简单计算器源代码

简单计算器代码 package calcultorthree; import java.awt.BorderLayout;//导入边界布局管理器类 import java.awt.GridLayout;//导入网格布局管理器类 import java.awt.TextField;//导入文本区域类 import java.awt.event.ActionEvent;//导入事件类 import java.awt.event.ActionListener;//导入事件监听者类 import javax.swing.JButton;//导入按钮类 import javax.swing.JFrame;//导入窗体 import javax.swing.JPanel;//导入面板 /** *本例实现了简单计算器代码,具备加减乘除和正弦功能,旨在抱砖引玉。熟悉java的同学,可以在此基础上实现更复杂的功能。 * @author Fjsh */ public class CalcultorThree { //新建对象,在构造函数中进行初始化 JFrame frame;//新建窗体对象 JButton buttonzero,buttondot,buttonequal;//新建按钮“0”“.”“=” JButton buttonplus,buttonminus,buttonmultiple,buttondevision, buttonsin,buttontozero;//新建按钮“+”“-”“*”“/”“sin”和归零按钮JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix, buttonseven,buttoneight,buttonnine;//新建数字按钮“0”“1”“2”“3”“4”“5”“6”“7”“8”“9” JPanel panelwest,panelcenter,paneleast;//新建三个面板 TextField tf;//新建文本区域对象 public CalcultorThree(){ //初始化对象 tf=new TextField(30);//构造空文本字段,字符宽度为30 frame =new JFrame("CalculatorThree");//构造窗体对象,名称为“CalculatorThree”

jad及小颖反编译专家的用法和使用详解

java反编译工具--jad及小颖反编译专家的用法和使用详解 当下载一个软件是jar格式的,我们可以使用jar2cod这个软件将它转换成cod格式,通过桌面管理器装到 我们的bb上;如果你的电脑上安装了winrar并且没有安装jdk或者其他java开发工具,jar格式的文件的 图标就是一个压缩包的图标,我们可以将它解压,解压后可以看到里面包含了一些class 文件和其他一些 文件,.class后缀名的文件就是java源程序通过编译生成的类文件,而jar是对一个程序中所有需要用到 的类和其他资源打包的结果。如果想深入的了解一下别人的软件是如何开发出来的,可以使用jad这个文 件对class文件进行反编译。最新版的jad是1.5.8,下面我们来说一说jad的使用方法。 前提: 1.系统中安装了jdk; 2.正确的设置了系统的环境变量。 Java下的一个简单易用的反编译工具jad, 可以很方便的将.class反编译为.Java. 一、基本用法 假设在c:\Java\目录下包含有一个名为example1.class的文件,反编译方法如下所示。 c:\Java\>jad example1.class 结果是将example1.class反编译为example1.jad。将example1.jad改为example1.Java 即得源文件。 c:\Java\>jad *.class 上述语句可以反编译c:\Java\目录下所有的class文件。 二、Option -o 不提示,覆盖源文件

三、Option -s c:\Java\>jad –s Java example1.class 反编译结果以.Java为扩展名。编译出来的文件就是example1.java 四、Option -p 将反编译结果输出到屏幕 c:\Java\>jad -p example1.class 将反编译结果重定向到文件 c:\Java\>jad -p example1.class>example1.Java 五、Option -d 指定反编译的输出文件目录 c:\Java\>jad -o –d test –s Java *.class 上述语句是将c:\Java\下所有class文件反编译输出到test目录下。 反编译别人的程序可以让我们看到别人软件的源代码,从而更好的了解别人的软件是如何开发出来的, 积累我们的编程经验,在此基础上还可以对软件进行一些修改。除jad外小颖JAVA源代码反编译专家 V1.4终极版也是个很好的工具,但是只能对JDK1.4.2和之前的版本编译的程序反编译,而JDK5.0后 的文件就无能为力了,我们接着来讲一下小颖java源代码反编译专家的使用方法。 下载安装后打开程序的主界面如下:

流媒体 流媒体同步技术和流媒体关键技术解决

摘要 基于目前网络带宽的不断提高,流媒体技术的应用范围越来越广泛。本文首先介绍说明了流媒体的定义,分析了现有的几种流媒体格式,讨论了几种在流式传输中涉及到的协议(RTP、RTCP),对其原理做了深入的分析。在这之后介绍了利用Microsoft producer平台制作课件的过程以及Microsoft producer包括的内容、功能和特点以及实际应用作了详细的叙述,在压缩技术里边主要讨论了MPEG技术和REAL技术、此外还探讨了流媒体同步技术和流媒体关键技术解决问题等。最后对流媒体以后的发展趋势作了分析。在这次毕业设计的任务中,运用到了微软公司的Producer,PowerPoint,Windows Media Encoder,Windows Media Player 以及网页设计方面的软件,逐步架构起流媒体课件的制作过程。最终把基于流媒体技术的成品课件在网络上发布。 关键词:流媒体, Microsoft producer, MPEG, QoS,同步技术

ABSTRACT …… KeyWords:

目录 前言 ............................................................ I 1. 流媒体技术的现状与发展 .. (1) 1.1流媒体的发展过程 (1) 1.1.1 现有视频格式概述 (1) 1.1.2 VOD视频点播技术 (1) 1.1.3流媒体技术的出现 (1) 1.2流式传输的格式及特点 (1) 1.2.1流媒体能为我们做什么 (2) 1.2.2 流媒体技术、格式纵览 (2) 1.2.3流式视频格式 (2) 1.3 流媒体系统的组成 (2) 2. Microsoft Producer概述 (3) 2.1课件制作平台Microsoft Producer简介 (3) 2.1.1 Microsoft Producer更强大的视频、音频的集成优势 (3) 2.1.2 Producer包含的内容 (3) 2.2 Producer的功能 (3) 2.2.1 Producer的功能简述 (3) 2.2.2 Producer内置的Windows Media技术 (3) 2.3点播应用系统应用拓扑图 (3) 3. 流媒体应用的设计与同步 (4) 3.1应用流媒体技术进行设计的优点 (4) 3.2视频压缩的主要技术 (4) 3.2.1 MPEG压缩标准 (4) 3.2.2 REAL压缩技术 (4) 3.2.3 微软公司的压缩标准 (4)

简易计算器Java实训报告

实训报告书实训名称:Java程序设计实训 系(部):信息工程系 专业班级:计算机科学与技术 学生姓名: 学号: 指导教师:张民 完成日期:2015.12.11 山东科技大学泰山科技学院

课程实训报告书

目录 1 实训目的 (3) 2 简易计算机的分析与设计 (3) 2.1 系统功能描述 (3) 2.2 系统模块设计 (3) 2.3 数据库结构设计 (4) 3 主要代码清单 (5) 4 程序运行与测试 (9) 5 实训总结 (11)

简易计算机的设计与实现 1 实训目的 通过本课程设计能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数Integer.toBinaryString(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现! 2 简易计算机的分析与设计 2.1 系统功能描述 1)可进行“+”、“-”、“*”、“/”以及混合运算。 2)支持()改变运算的优先级 3)可进行二、十六和十进制数的相互转换 4)支持复制和粘贴操作 2.2 系统模块设计 (1)加法 两个数据进行加操作,可以为小数。 (2)减法 两个数据进行减操作,可以为负数相减。( 3)乘法

技术-Java防反编译技术

Java防反编译技术 1简介 1.1 Java软件面临的挑战 目前,由于黑客的频繁活动,使得Java类文件面临着反编译的挑战。有一些工具能够对Java 源代码进行反工程,其结果甚至以比普通Java文件更可读的方式, 尽管普通的Java文件(由于代码风格不同)有注释。许可证和软件过期对于用户们来说将变得无用。因此,防止软件被反编译或使得反编译的结果变得无意义对于Java来说非常重要。 一个Java类文件不一定非要存储在一个真正的文件里;它可以存在存贮器缓冲区,或从一个网络流获得。尽管防火墙和网络协议如TCP/IP有安全策略,黑客仍能打破访问限制获取一些类。尽管这些类能被混淆,他们(黑客)能够一步一步地分析和猜出每个指令的目的。如果这些代码是关键技术部分,例如是大产品的许可证或时间期满部分,反编译和分析指令的努力似乎很值得。如果这些关键类被隐藏或被一个关键字加密,黑客的非法入侵就很困难了。而且,未认证的软件复制对智能产权是普遍的攻击。还没有一个较好的通用方案来解决这类问题。 目前关于JA V A程序的加密方式不外乎JA V A混淆处理(Obfuscator)和运用ClassLoader 方法进行加密处理这两种方式(其他的方式亦有,但大多是这两种的延伸和变异)。 1.2 混淆处理 关于JA V A程序的加密方式,一直以来都是以JA V A混淆处理(Obfuscator)为主。这方面的研究结果也颇多,既有混淆器(如现在大名鼎鼎的JODE,SUN开发的JADE),也有针对反编译器的"炸弹"(如针对反编译工具Mocha的"炸弹" Crema和HoseMocha)。混淆器,从其字面上,我们就可以知道它是通过混淆处理JA V A代码,具体的说,就是更换变量名,函数名,甚至类名等方法使其反编译出来的代码变得不可理解。它的目的是:让程序无法被自动反编译,就算被反编译成功,也不容易被程序员阅读理解 其实这只是做到了视觉上的处理,其业务逻辑却依然不变,加以耐心,仍是可以攻破的,如果用在用户身份验证等目的上,完全可以找到身份验证算法而加以突破限制。 1.3 采用ClassLoader加密 JA V A虚拟机通过一个称为ClassLoader的对象装来载类文件的字节码,而ClassLoader 是可以由JA V A程序自己来定制的。ClassLoader是如何装载类的呢?ClassLoader根据类名在jar包中找到该类的文件,读取文件,并把它转换成一个Class对象。该方法的原理就是,

流媒体技术的原理、应用及发展

流媒体技术的原理、应用及发展随着现代网络技术的发展,网络开始带给人们形式多样的信息。从在网络上出现第一张图片到现在各种形式的网络视频、三维动画,人们的视听觉在网络上得到了很大的满足。但人们又面临着另外一种不可避免的尴尬:在网络上看到生动清晰的媒体演示的同时,不得不为等待传输文件而花费大量时间。为了解决这个矛盾,一种新的媒体技术应运而生,这就是流媒体技术。 流媒体是指在网络中使用流式传输技术的连续时基媒体,如音频、视频或多媒体文件。而流式传输技术就是把连续的声音和图像信息经过压缩处理后放到网站服务器上,让用户一边下载一边收听观看,而不需要等待整个文件下载到自己的机器后才可以观看的网络传输技术。 目前,在网络上传输音视频(A/V)等多媒体信息主要有下载和流式传输两种方案。一方面,由于音视频文件一般都较大,所以需要的存储容量也较大;同时由于受网络带宽的限制,下载这样的文件常常需要几分钟甚至几小时,所以采用下载方法的时延也就很大。而采用流式传输时,声音、图像或动画等时基媒体由音视频服务器向用户计算机连续、实时传送,用户只需经过几秒或数十秒的启动时延而不必等到整个文件全部下载完毕即可观看。当声音、图像等时基媒体在客户机上播放时,文件的剩余部分将在后台从服务器上继续下载。流式传输不仅使启动时延大大缩短,而且不需要太大的缓存容量。流式传输避免了用户

必须等待整个文件全部下载完毕之后才能观看的缺点。一、流媒体技术基础 实现流式传输有两种方法:实时流式传输(Real-time streaming transport)和顺序流式传输(progressive streaming transport)。一般来说,如为实时广播,或使用流式传输媒体服务器,或应用实时流协议(RTSP)等,即为实时流式传输。如使用超文本传输协议(HTTP)服务器,文件即通过顺序流发送。采用哪种传输方法可以根据需要进行选择。当然,流式文件也支持在播放前完全下载到硬盘。 1. 实时流式传输 实时流式传输总是实时传送,特别适合现场广播,也支持随机访问,用户可快进或后退以观看后面或前面的内容。但实时流式传输必须保证媒体信号带宽与网络连接匹配,以便传输的内容可被实时观看。这意味着在以调制解调器速度连接网络时图像质量较差。而且,如果因为网络拥塞或出现问题而导致出错和丢失的信息都被忽略掉,那么图像质量将很差。实时流式传输需要专用的流媒体服务器与传输协议。 2.顺序流式传输 顺序流式传输是顺序下载,在下载文件的同时用户可观看在线内

简易计算器Java实训报告

实训名称: Java程序设计实训 系(部):信息工程系 专业班级:计算机科学与技术学生姓名: 学号: 指导教师:张民 完成日期:

山东科技大学泰山科技学院

目录 1 实训目的 (2) 2 简易计算机的分析与设计 (2) 系统功能描述 (2) 系统模块设计 (2) 数据库结构设计 (3) 3 主要代码清单 (4)

4 程序运行与测试 (8) 5 实训总结 (10)

简易计算机的设计与实现 1 实训目的 通过本课程设计能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。 给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。 除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。 至于其中的进制转换功能的实现则是直接调用Java中进制转换的函数,例如要将十进制转换成二进制则可直接调用函数(int i)来实现,充分显示了Java语言的简洁性和Java语言功能的强大性。 当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现! 2 简易计算机的分析与设计 系统功能描述 1)可进行“+”、“-”、“*”、“/”以及混合运算。 2)支持()改变运算的优先级 3)可进行二、十六和十进制数的相互转换 4)支持复制和粘贴操作

相关文档
最新文档