程序设计综合
-
重构(美)Martin Fowler著随着对象技术应用越来越普及,软件开发社区出现了一个新的问题。缺乏经验的开发者编写出了大批设计较差的程序,导致这些应用程序非常低效,且难于维护和扩展。本书除了讨论重构的各种技巧之外,还提供了超过70个可行重构的详细编目,对如何应用它们给出了有用的提示;并以stepbystep的形式给出了应用每一种重构的指南;而且用实例展示了重构的工作原理。这些示例都是用Java语言写成的,但其中的思想却可以运用于任何面向对象编程语言。本书是软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄",全美销量超过100000册,亚马逊书店五星书。在本书中,作者MartinFowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。重构的每一步可能都非常简单、非常基础,但这些轻微的改变的累积效果却可以在极大程度上改进我们的设计。事实证明,重构是防止软件没落的可行方式。本书除了讨论重构的各种技巧之外,还提供了超过70个可行重构的详细目录,给出了重构的工作原理,并以stepbystep的形式给出了应用每一种重构的指南。这些示例都是用Java语言写成的,但其中的思想却可以运用到任何面对象的编程语言中。第一作者MartinFowler,除了是对象技术方面的专家外,还是UML和模式方面的专家。他撰写的AnalysisPatterns、UMLDistilled、PatternsofEnterpriseApplicationArchitecture和PlanningExtremeProgramming几本书也广受赞誉,在亚马逊上的评价也极高(最低星级为4星),从这些也足可见其在业内的显赫地位。相信这本书以影印版的形式在国内推出,巨匠巨著,原汁原味,无疑是给国内广大软件开发人员提供了一盏前进路上的明灯。读者对象:软件开发人员,项目管理人员,高等院校计算机及相关专业师生,其他相关人员
-
加密与解密段钢编著前言自计算机诞生之日起,其技术的发展可谓日新月异,各种新技术、新思路不断涌现。个人计算机操作系统也经历了DOS,Windows3.x,Windows9x,Windows2000及WindowsXP的历程。各种应用软件从最初的几个、几十个字节发展到现在的动辄几张光盘,成千上万的共享软件和商业软件越来越庞大,技术内涵也日趋复杂。一款优秀的软件,其技术秘密往往成为他人窃取的重点。作为软件开发人员,为了保护自己辛辛苦苦开发的软件不轻易被他人“借鉴”,有必要对软件保护(加密)和破解(解密)技术进行研究。但是,软件保护和破解方面的资料目前比较匮乏,许多软件开发人员不得不自行摸索,导致在重复劳动中走了不少弯路,耗费了大量的时间和精力。随着软件以共享方式在网络上发布这种方式的流行,软件保护和数据加密技术的迫切性被越来越突出地表现了出来。软件加解密的发展历史我们通常是随着操作系统的不断升级来划分相应的软件,所以划分软件加解密的发展历史就是操作系统发展的历史。1.DOS时期这个时代的软件主要是正式版和功能不全的Demo版以及一些磁盘防拷贝保护,很少有所谓的共享软件(Shareware)。所以DOS时代所谓的解密通常是去掉软件中的某些限制或跳过原版磁盘检查,然后通过广大业余的BBS提供下载。但值得一提的是,这个时代的软件由于16位操作系统很容易接触到系统底层的原因,而导致个别软件保护方式异常强悍,又因为在16位平台上很难区分系统领空和程序领空而导致天然的破解跟踪困难,所以这个时代的软件保护机制两极分化很严重。2.Windows95早期当Windows95出现的时候,很多人不适应这个平台,它上面的加解密资料奇缺,对许多人来说就像做了一场恶梦。这段时期共享软件渐渐地盛行起来,采用序列号保护的共享软件越来越多。由于当时许多程序员对刚刚出现的Windows95不了解,感觉有些手足无措,编制的软件在加密部分都比较脆弱,所以那时候的序列号加密方案特别脆弱。3.Windows95末期其实这段时期应该是Windows95和Windows98共存的时期。在这个时期,程序员已经对Windows9x这个系统了如指掌,一些需要较高编程技巧、与系统核心等底层联系紧密的软件纷纷出笼。这个时期,共享软件大多还是采用序列号加密方式,但其序列号通常经过复杂的计算,所以很难像早期的软件一样,随随便便就能被解密。4.Windows2000/XP时期这段时期就是Windows9x和Windows2000/XP共存的时期。这时,各种软件的加密外壳泛滥,特别是各种专用加壳软件的出现,大大地提高了软件的保护质量;同时,解密技术也不断提高,各种新式的解密工具随即出现。此时的序列号加密越来越多地采用密码学中不可逆的加密算法,使得解密的过程越来越像高等数学的研究。软件解密者要想得到正确的序列号就必须对各种成熟加密算法有很深的了解,或者找出软件加密算法的漏洞(像WinRAR。CloneCD等软件的Keygen就是利用ECC椭圆算法的加密漏洞而编制出来的)。关于本书2000年初,作者想找一些研究加解密的朋友交流一下,但十分令人遗憾的是,那时国内这方面的技术资料很缺乏,不成系统,大家交流的也有限,因此就建了一个主页“看雪学院”,与大家共同探讨加密与解密的知识。这个主页是当时国内惟一一个从技术角度研究加解密的站点,并在广大网友的支持下,健康地成长了起来了。后来,主页提供的软件调试论坛成了国内知名的加解密技术论坛,吸引了密界众多高手。大家以知识共享的精神,无私地将自己所知的技术奉献出来了,至今为止原创了2500余篇文章,极大地推动了国内加解密技术的发展。这是一本很难写的书,因为当时这是一个全新的领域。从Windows95面世以来的6年内,市面上没有一本这方面的书,网上也很缺乏相关资料。为了填补国内Windows平台上加密与解密书籍的空白,作者与软件调试论坛的密界一流好手努力合作,克服种种困难,于2001年9月推出了国内第一本全面介绍Windows平台下软件加密与解密技术的书籍,这就是本书的第一版《加密与解密:软件保护技术及完全解决方案》。在第一版中,我们试图从软件加密和解密这两个方面对当今流行的软件保护技术进行了分析。希望读者看过本书之后,能够对各种流行的软件保护与破解技术有所了解。第一版一面世就得到了广大读者的喜爱和认可,获得了2002年全国优秀畅销书奖(科技类)!在全国很多计算机专业书店获得了名利前茅的销售业绩,而且一年来在著名的华储网销售排行中都被排在前几名内。次年,本书在台湾发行了繁体版,得到了台湾读者的热烈欢迎。为了跟上技术发展的步伐,作者花费了6个月时间做准备,6个月时间进行写作,汇集了国内顶尖软件调试论坛(看雪论坛)的众多密界一流好手,以本书第一版为基础,更新了第一版的大部分内容,最后完成了本书的第二版《加密与解密》。这本500多页的图书,几乎囊括了Windows下软件保护的绝大多数内容,从基本的跟踪调试到深层的拆解脱壳、从浅显的分析注册到商用的软件保护,其跨度之广、内容之深,国内至今尚无同类出版物能与之比肩。内容导读第二版是在一版基础上写成的,删除了第一版中的过时内容,补充了许多新技术。全书有一半的内容与第一版不同,结构更加合理。补充和加强了Windows与Unicode、代码逆向分析、IDA详细操作、SoftICE符号调试技术、OllDbg操作、密码学算法应用、VB的Pcode跟踪、增加PE文件的功能、SEH技术、脱壳技术等。什么是API?什么是Unicode?什么是逆向分析?Winodws9x与Windows2000/XP上的加解密究竟有什么不同?只有了解这些基础知识,在加密与解密过程中才能有的放矢地处理各种问题。本书的基础篇(第1章"基础知识"和第2章"代码分析技术")将系统地解答这些问题。在进行软件解密的过程中,一个首要问题是对被解密的软件进行分析,这部分就是静态分析与动态分析技术。本书以极大的篇幅讲述了这两种分析技巧,包括逆向工程必备工具IDA的详细操作,最新SoftICE和OllyDbg的操作等。这些内容可以在第3章"静态分析技术"与第4章"动态分析技术"中找到。一些软件作者对软件保护方案的策划与实施很不以为然,他们往往自以为保护在解密者眼中不堪一击。希望本部分能让这些软件作者了解一些软件攻击的方法,以便更好地保护自己的作品。在这个年代,研究加解密不掌握点密码学的知识是不可思意的。第二版详细讲解了MD5,SHA,CRC,RSA,ElGamal等算法在软件保护方面的应用,并且光盘上提供了实例的源码!这些内容可以在第5章"软件保护及其弱点"与第6章"加密算法"中找到。现在所使用的语言无非是两种:一种是解释执行的语言,另一种就是编译后才能够执行的语言。解释语言的最大弱点之一就是能被反编译,因此其保护的重点应放在如何防止反编译上。这些内容可以在第7章"反编译语言"中找到。PE是Windows上可执行文件的格式,熟知PE文件将有助于对操作系统的深刻理解。如果你知道EXE和DLL里面的奥秘,就成为一名知识更加渊博的程序员。本书用大量篇幅,图文并貌地详细讲解了PE格式(第8章"PE文件格式")。在掌握PE格式后,就可随心所意地对PE文件做"手术",进行二次开发,如增加菜单、按钮等功能。这部分将带你走进另一个计算机的世界里去(第9章"增加PE文件功能")。SEH的出现已非一日,但有关SEH的知识资料却不是很多。SEH不仅可以简化程序的错误处理,使程序更加健壮,还被广泛应用于反跟踪和加密中。本书从解密角度讲述了SEH的机理,同时讲述了其他各种反跟踪技术,如Anti-Debug、花指令等。软件作者可以将这些技术应用到自己的软件中去,以加强软件的反跟踪能力(第10章"反跟踪技术")。现在,越来越多的软件都采用了加壳保护。当在软件分析和汉化过程中,脱壳是必不可少的一步。第11章"加壳与脱壳"详细介绍了各种壳的脱壳技巧,读者可以在自己的软件中运用这些壳中的先进反跟踪技术。第12章"补丁技术"介绍了文件补丁和内存补丁技术,同时重点讲解了SMC技术在补丁方面的应用。学习补丁是一件很有意思的事情。商用软件保护技术实际就是对商业软件加密的技术,真正有价值的商业软件一般都会采用这些技术来保护。第13章"商用软件保护技术"讲解了常见的商业保护技术,如软件狗,Vbox,SalesAgent,Flexlm等保护,而且对这些保护的优缺点进行了分析。对读者的要求本书适合以下读者。对软件加密与解密感兴趣的读者对软件保护感兴趣的软件开发人员对逆向工程感兴趣的读者对调试技术感兴趣的读者使用本书需要具备以下知识。汇编基础知识。此类书籍市面上很多,如《IBMPC汇编语言程序设计》等。应了解C语言。了解C语言的某些知识是有帮助的,但不是必须了解。Win32编程。不管研究加密与解密,还是编程,都必须了解Win32编程。Win32编程就是API方式的Windows程序设计,学习WindowsAPI能使您更深入地了解Windows工作方式。此类书籍有CharlesPetzold所著的《Windows程序设计》,该书堪称经典之作,它以C语言为讲解平台。另一本书是罗云彬所编著的《Windows环境下32位汇编语言程序设计》,它以Win32汇编为讲解平台。到此为止,作者将不再假设您已经具有任何加解密的经验了。致谢感谢我的母校同济大学,她的"同舟共济、自强不息"的同济精神一直指导着我的工作和学习!感谢电子工业出版社计算机事业部对本书的大力支持!同时也要感谢那些共同参与第一版组稿的软件调试论坛的众多密界一流好手,是他们的参与才让此书得以完成。这次的第二版改动较大,参考引用了如下朋友在第一版中参与的文章:1.Blowfish(http://www.shieldsoftware.com/)参与的"软件保护技术"、"Anti-Debug"、"JAVA程序反编译";2.DREAMtHEATE参与的"Windows消息机制";3.DDXia[CCG]参与的"远程调试技术","补丁技术";4.Passion参与的"FileMon的使用"、"TimeLOCK保护";5.Ljtt参与的"花指令";6.Arbiter参与的"FrogsICE使用简介"、"CRC原理篇";7.Ajj(http://ajj.126.com/)参与的"IceDump和NticeDump的使用";8.Fisheep(fisheep@sohu.com)参与的"VBOX4.3"、"SalesAgent保护技术"、"FlexGen工具用法"、"利用FlexLmSDK解密"、"浮点指令小结";9.吴朝相(http://www.souxin.com/)参与的"常用断点设置技巧"及"认识壳";10.mr.wei参与的"DeDe用法";11.邹丹(http://www.zoudan.com)的论文"关于Windows95下的可执行文件的加密研究";12.TiANWEi(http://winice.yeah.net)参与的"SoftICE指令手册"。在第二版的编写过程中特别感谢:1.Hume(http://humeasm.yeah.net/)提供的"指令优化一文";2.老罗的缤纷天地(http://www.luocong.com/)提供的"CRC32实践篇"与"奇妙的Base64编码"两篇文章及实例;3.夜月提供"Blowfish算法解密"一文;4.娃娃(王凌迪)参与的"MD5算法"资料;5.Blowfish的"ReVirgin使用指南","挫败隐藏在SEHhandler中的保护"。同时也要感谢SunBird,Hying,Spring,pll621,Ajj,小楼,Ljtt,Arbiter,Aming,Cooljiang,洋白菜,WinDos2K,小牧童等软件调试论坛的众多朋友的支持和帮助!论坛网友的一言一行都已融进了本书的文字里,实在无法一一列举。特别感谢CCG团体给与的技术支持!关于配套光盘本书所有实例及源码均在配套光盘里提供,大部分实例是使用MicrosoftVisualC++6.0开发和测试的。由于版权问题,配套光盘仅提供书中提到的免费软件或共享软件。如果从学习角度需要使用那些有版权的软件,建议用搜索引擎查找(如www.google.com)。光盘提供的软件经过多方面检查测试,绝无病毒。但一些加解密工具采用了某些病毒技术,因此部分代码与某些病毒的特征码类似,会造成查毒软件的误报。请勿将光盘的文件做成虚拟光驱,并跟踪调试虚拟光驱上的实例,以免出现一些无法解释的错误。建议将文件拷贝到硬盘,并去除只读属性再调试。反馈信息我们非常希望能够了解读者对本书的看法。如果有什么问题或有自己的调试实战故事,欢迎发到作者主页的论坛里,我乐意回答朋友们提出的任何合理的问题,因为当我努力回答这些问题时,也会从中获益匪浅。
-
Visual FoxPro 6.0程序设计学与用教程王可歆编著本书以Visual FoxPro 6.0为背景,介绍了关系数据库管理系统的基础理论、Visual FoxPro6.0语言基础、 Visual FoxPro 6.0数据库及其操作、查询和视图、结构化查询语言SQL、结构化程序设计、面向对象程序设计、表单设计与应用、报表设计与应用、菜单设计与应用。为了使读者能更好地了解Visual FoxPro 6.0的应用,特制作了15个典型例子供读者参考。书中配有丰富的例题、习题,并附有解答,以更适合读者的需要。本书适用于初学者入门,也可供中级读者编程时参考使用,同时可作为大中专院校、各类计算机培训班的教材和自学者的学习资料。
-
Tuxedo中间件开发与配置徐春金编著在电信、金融等行业的大型计算机应用系统中,中间件的使用日益普及,中间件已与操作系统、数据库并列为三大基础软件。BEA Tuxedo作为最优秀的交易中间件,在很多行业中的使用非常广泛,本书结合作者多年使用Tuxedo的经验,通过大量例子详细介绍Tuxedo的设计、开发、配置、管理等方面的内容。使读者可以快速、全面的掌握Tuxedo。本书的主要内容如下:Tuxedo的安装和配置、Tuxedo应用系统的管理维护、Tuxedo的缓冲区介绍、Tuxedo的服务端编程、Tuxedo的客户端编程、Tuxedo的通讯方式、Tuxedo的数据库编程、Tuxedo的可靠消息队列/Q、Tuxedo与其他系统的互连和Tuxedo的性能调整。本书既适合初学者学习,也可作为有一定使用经验的开发管理人员的参考书。
-
VISUAL FOXPRO数据库管理专家百例课堂三人行科技编著本书是“百例课堂丛书”中的一本,主要讲解Visual Foxpro数据库的相关知识及实例操作。全书通过24课,100个实例,按照由浅入深的顺序全面讲解了Visual FoxPro的各项功能及上机操作的方法与技巧。本书适用于各类Visual FoxPro培训班的培训教材,亦可作为日常数据处理的参考用书。
-
Visual FoxPro程序设计教程何玉辉主编本书以VisualFoxPro6.0中文版为语言背景,采用“问题(任务)驱动”的编写方式,引入案例教学和启发式教学方法,通过大量实例介绍了VisualFoxPro的基础知识、可视化编程工具和编程方法。本书主要内容包括:VisualFoxPro基础、查询和视图设计、表单设计、报表和标签设计、菜单和工具栏设计、项目管理器、程序设计初步和面向对象编程等。本书实例丰富,由浅入深,循序渐进,条理清晰,适宜学生自学。每章后都有大量的配套练习题,题型以全国计算机等级考试笔试题型为主,既能帮助学生消化有关知识,又能提高学生的应试技能。本书适合作为高等职业技术学院、高等专科学校、成人高等学校和本科院校举办的二级学院的教材,以及初学编程人员的参考书,也可用作全国计算机等级考试VisualFoxPro部分和各类短期培训班的教学参考书。本书配有电子教案,需要者可与出版社联系,免费索取。
-
软件工程教程张敬[等]编著高校计算机教学系列教材。软件工程是20世纪60年代末期为解决“软件危机”而产生的,并迅速发展起来的新兴学科,现在已成为计算机科学技术的一个重要分支。本书主要围绕生命周期法和面向对象方法学,讲述了软件工程的基本概念、基本原理、基本技术、基本方法。由于软件工程是一门实践性很强的学科,书中提供了大量的范例供读者参考。主要内容包括:概述、软件需求分析、软件设计、程序编码、软件测试、面向对象方法学、软件维护、软件标准与软件文档、软件管理、计算机辅助软件工程。内容丰富,图、文示例并茂,通俗易懂。本书可作为高等院校本、专科计算机专业的教材,也可供计算机软件人员和计算机用户阅读。
-
大规模基于构件的软件开发(美)Alan W.Brown著;赵文耘,张志等译随着Internet时代的到来,计算机界面临着一系列的变化,这些变化使得传统的软件开发方法不能满足商业界对于软件的需求,软件业面临着越来越大的压力。本书针对这个背景,提出了大规模基于构件的软件开发方法。其主要内容包括:应用程序开发所面临的挑战,基于构件的开发方法学相关技术和标准,面向构件建模的方法,以及对未来发展方向的展望。本书作者对计算机界的历史、现状和未来发展趋势的见解十分深刻,把基于构件的开发方法的理论与实践很好地结合在一起。本书适合IT相关管理与技术人员以及大学计算机及相关专业的本科生、研究生阅读。这本权威性的著作由世界顶尖软件公司的研发领导人撰写,针对以Internet为中心的、基于构件的开发提出了完整的概念性框架。AlanW.Brown介绍了企业级开发技术中的一种“最佳实践”,这些技术可以减少开发时间、提高质量,并提高复用水平。他深入探讨了如何使用EnterpriseJavaBeansTM、COM+和CORBA/IIOP这样的技术以更低的成本,更好的灵活性、响应度、用户友好性进行分布式访问。本书内容包括:针对电子商务进行开发:业务驱动因素和技术支持中间件、应用服务器和企业应用集成的角色选择技术、定义架构、为应用程序建模以及管理基于构件的项目基于构件开发领域的新方向:把先进的研发成果转化为现实世界的企业级解决方案本书为管理推动电子商务的Web技术和构件技术提供了一幅完整的蓝图。对于每一个与以Internet为中心的多层企业级系统相关的决策制定者来说,这都是宝贵的资源。
-
数据库处理施伯乐本书是高等院校数据库技术课程的教科书,全书共分为七部分。较之第七版,本版强调了XML ASP及多项技术在数据库处理中日益显现出来的重要性,书中提供了使用Internet技术发布数据库的最新信息,涉及的技术包括三层结构,Web服务器脚本、XML和OLEDB。本书介绍的最新数据库技术,有助于读者设计及使用最新业务和商业应用程序本书适合作为计算机系二、三年级本科生的教材或参考书。也可作为数据库开发人员的参考书。
-
分布式算法导论(荷)Gerard Tel著21世纪初的5至10年是我国国民经济和社会发展的重要时期,也是信息产业快速发展的关键时期。在我国加入WTO后的今天,培养一支适应国际化竞争的一流IT人才队伍是我国高等教育的重要任务之一。信息科学和技术方面人才的优劣与多寡,是我国面对国际竞争时成败的关键因素。分布式算法20多年来一直是倍受关注的主流方向。本书第二版不仅给出了算法的最新进展,还深入探讨了与之相关的理论知识。这本教材适合本科高年级和研究生使用,同时,本书所覆盖的广?群蜕疃纫彩质屎洗邮率导使ぷ鞯墓こ淌脱芯咳嗽辈慰肌J橹兄氐闾致哿说愣缘阆⒋菽P蜕系乃惴ǎ舶扑慊ㄐ磐绲氖迪炙惴āF渌氐闾致鄣哪谌莅ǚ植际接τ玫目刂扑惴ǎㄈ绮ㄋ惴ā⒐悴ニ惴ā⒀【偎惴ā⒅罩辜觳馑惴ā⒛涿绲乃婊惴ā⒖煺账惴ā⑺浪觳馑惴ā⑼较低乘惴ǖ龋股婕傲死梅植际剿惴ㄊ迪秩荽砑扑恪5诙嫘略龅墓赜诜较蚋泻凸收霞觳馄鞯哪谌荻即砹说苯褡钚录际醴⒄顾剑谡庑┓较蛏洗邮卵芯康娜嗽碧峁┝撕芎玫陌镏?