软件构架
- 格式:doc
- 大小:240.00 KB
- 文档页数:30
软件架构师岗位的基本职责10篇软件架构师岗位的基本职责(篇1)职责:1、负责软件工程的需求调研,进行需求分析,编写需求分析书;2、负责项目的概要设计,包括功能结构规划、功能子系统划分、实现模型设计、数据库设计等;3、核心、关键模块的算法设计或功能编码实现;4、制定软件开发计划;5、负责指导软件工程师执行具体的软件开发工作,完善开发方法,提高执行效率。
任职资格:1、本科以上学历,软件工程等相关专业,5年以上软件开发经验;2、熟悉C等高级程序语言,有较好的程序编写经验;3、熟悉C/S、B/S 网络架构、熟悉基于TCP/IP等的网络编程;4、有较强的沟通能力和文字表达能力。
软件架构师岗位的基本职责(篇2)职责:- 在充分调研和理解客户业务需求的基础上,为企业应用/产品做架构设计 - 与客户沟通设计方案,协助他们做出关键的技术决策- 在构建整个企业系统架构的过程中,能很好的平衡可靠性,可用性,可扩展性,可维护性,易管理性,及安全性等- 代码审查- 对软件开发生命周期,方法/标准,应用架构以及技术设计/解决方案等方面有较深刻见解- 了解最新的技术与方法及如何恰当应用任职需求:- 本科或以上学历,毕业于计算机科学,软件工程,信息技术,信息系统,商务等相关专业,或拥有同等的教育水平和工作经验- 8年以上分布式系统设计和开发的经验- 在分布式,高需求,软件构架方面有丰富的经验- 了解不同的企业软件解决方案,企业级服务器/服务,工具,及实践- 有丰富的面向对象设计和编程知识- 曾经在以住的项目中担任过技术架构师- 能熟练地运用英语进行书面和口语沟通- 能与分布全球各地的团队成员一起顺畅工作软件架构师岗位的基本职责(篇3)职责:1.有效地将用户的需求转化为需求规格说明书;2.负责业务解决方案决策及其技术框架、技术平台的规划、设计与评估工作;3.领导需求团队制定业务系统规划和整体解决方案;4.领导和培训开发团队按照架构设计和技术规范展开设计、开发和测试工作;5.开展与终端用户的项目沟通和关系维护;6.为公司培养高级工程师等技术人员;岗位要求:1.本科及以上学历,金融、财务、计算机相关专业;2.5年以上金融行业软件开发、管理经验,有银行核心系统开发经验者优先;3.熟悉金融行业应用解决方案、产品和服务,能够主持客户商业需求的收集;4.熟悉金融政策环境和相关法规;5.熟悉金融机构业务流程;6.具备良好的沟通能力,能很好帮助设计人员理解客户的商业目标,能够与客户CIO、CTO层次的客户进行有效沟通;7.精通Java,熟练使用基于Java的开发工具,如:Eclipse;8.精通J2EE及其相关技术及框架(Spring,Structs,Hibernate等主流开发框架), 精通Java、Xml,Html,JavaScript等相关技术;9.精通Oracle、Mysql等数据库及SQL开发;10.熟悉SpringMVC、Redis、Dubbo、myBatis等;11.认同公司文化,认同团队目标,工作态度积极主动,有长远发展意图,能担当;12.要求能适应出差工作;13.具有良好的沟通和分析能力,积极主动,学习能力强;软件架构师岗位的基本职责(篇4)职责:1. 参与公司产品需求分析、架构设计、核心代码实现;2. 协助部门总监制定部门规划、基础设施建设、技术预研、难题攻克、团队骨干培养等;3. 深入思考研发过程中的各项问题,促进团队工作效率和开发质量的提升;4. 负责对产品技术需求进行分析、架构设计、技术选型、模块开发、数据库和服务器平台部署、安全策略、运行管理等工作;5. 专业的文档能力,撰写并规范各类系统设计文档;6. 负责带领Java团队完成产品开发,指导关键技术模块,并对系统安全性、稳定性负责,确保项目计划按时完成;任职要求:1. 本科及以上学历,计算机相关专业,7年以上开发经验及2年以上微服务平台相关实施经验,熟悉常用的设计模式和开源框架,物联网行业经验优先;2. 具备良好的面向对象分析、设计、开发能力和思想,精通OO、AOP、OOP 及设计模式;;3. 具有深厚的专业技术基础,精通Java EE相关技术,熟悉Spring,,Hibernate,SpringMVC等开源框架;4. 熟悉大型平台应用架构和系统架构,对分布式缓存、消息队列、大数据处理、远程调用等技术至少有两项有深入研究,熟悉Mangodb、Redis、Memcached、RabbitMQ、ActiveMQ、Kafka、Dubbo中的3项以上的技术,并有实战经验;5. 对企业应用系统架构如微服务、SOA等有较全面的认识;具备Hbase、机器视觉和物联网项目实施经验优先.软件架构师岗位的基本职责(篇5)职责:1、负责公司现有软件产品的维护升级,负责云平台的搭建2、负责各种设备的对接工作,独立设计研发软件产品3、与硬件部门搭配开发嵌入式软件的开发4、负责流媒体软件的开发,相关文档的整理及对现有产品的规划,开拓新的产品业务等。
软件架构师软件架构心得体会(优质11篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如报告大全、演讲致辞、规章制度、应急预案、方案大全、心得体会、祝福语、作文大全、教学资料、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as a comprehensive report, speeches, rules and regulations, emergency plans, plans, experiences, blessings, essays, teaching materials, other sample essays, etc. If you want to learn about different formats and writing methods of sample essays, please pay attention!软件架构师软件架构心得体会(优质11篇)人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。
一、什么是软件系统结构软件体系结构也称为软件构架(有时简称构架),是系统的一个或多个结构,它包括:软件的组成元素(组件),这些元素(组件)的外部可见特性,以及这些元素(组件)之间的相互关系。
含义:(1)系统由一个或多个结构组成,其中任何一个结构并不能与构架等同。
(2)每个系统都有一个体系结构。
(3)软件体系结构是系统的抽象。
(4) 构架定义了软件元素以及各元素间的交互关系。
(5) 以往作为体系结构传递的线框图,事实上并等同于体系结构。
二、构架商业周期(ABC)1.构架由什么决定?构架是否由系统需求决定?×软件构架是技术、商业和社会因素共同作用的结果。
2. 构架从哪里来?(影响构架的因素)影响构架的因素主要包括:❑系统涉众(stakeholder)、主要有:管理者:成本要低,人人都得干活营销人员:特性突出、投放市场快、成本低、可与同类产品相匹敌。终端用户:行为、性能、安全性、可靠性、易用性。维护人员:可修改性强。客户:成本低、及时交付、不要频繁修改。❑开发组织・组织内对现存构架的重用・对某个基础设施进行长期的商业投资以实现某些战略目标・开发组织本身的机构也会影响构架的形成❑构架师的素质和经验构架师先前的一些经验、教育、培训以及所接触到过的成功构架模式都会影响到他们对某种构架的选择。
❑技术环境当前技术发展水平代表了某个时代的构架师的普遍素质和经验,对架构有很大的影响力。
❑其它因素其它如社会、法律、人文环境等都会对构架产生影响。
3.构架的反影响力・构架会影响开发组织的结构・构架会影响开发组织的目标・构架会影响客户对下一个系统的要求・构建系统的过程丰富了整个开发团队的经验,从而将影响设计师对后继系统的设计・一些系统会影响并实际改变软件工程的环境,也就是系统开发人员学习或实践的技术环境。
4.构架的商业周期软件构架是技术、商业和社会等诸多因素作用的结果,而软件构架的存在反过来又会影响技术、商业和社会环境,从而影响未来的软件构架。
软件架构软件架构(体系结构)概述软件架构设计,主要关注软件构件的结构,属性和交互作⽤,并通过多种视图全⾯描述特定系统的架构。
架构设计⽣命周期需求分析,根据需求模型构建软件架构模型,模型转换的可追踪性设计阶段,组成元素,体系结构描述语⾔ADL,4+1视图实现阶段,项⽬组织结构,配置管理,中间件,程序设计语⾔,逐步细化构件组装阶段部署阶段后开发阶段,4+1视图5个不同的视⾓,包括逻辑视图,进程视图,物理视图,开发视图,场景视图来描述软件架构。
开发视图和场景视图来描述软件架构。
1、逻辑视图,最终⽤户:功能需求。
在逻辑视图中,系统分解成⼀系列功能抽象,这些抽象主要来⾃问题领域。
这种分解不但可以⽤来进⾏功能分析,⽽且可以⽤做标识在整个系统的各个不同部分的通⽤机制和设计元素。
在⾯向对象技术中,通过抽象,封装,继承,可以⽤对象模型来代表逻辑视图。
逻辑视图通常包括类图,对象图,状态图和协作图。
是描述系统各部分的抽象描述。
2、开发视图:编程⼈员:软件管理,也叫做模块视图,主要侧重软件模块的组织和管理。
开发要考虑软件内容的需求,如软件开发的容易些,软件的重⽤,和软件的通⽤性。
要充分考虑由于具体开发⼯具不同带来的局限性。
开发视图⽤系统输⼊输出关系的模型图和⼦系统图来描述,可以在确定了软件包含所有元素之后描述完整的开发⾓度,也可以正确的每个元素前列出开发视图原则。
该视图包含包图和组件图。
3、进程视图:也叫做过程视图,主要描述系统中的进程,系统集成⼈员:性能,可扩充性,吞吐量,侧重于系统的运⾏特性,主要关注⼀些⾮功能性的需求,例如系统的性能和可⽤性,进程视图强调并发性,发布性,系统集成性和容错能⼒,以及逻辑视图中的主要抽象的进程结构,他也定义逻辑视图中各个类的操作具体在哪个现场中执⾏.该视图通常包括活动图4、物理视图:系统⼯程⼈员:系统拓扑,按照,通信等, 主要考虑如何把软件映射到硬件上,通常要考虑到节级系统拓扑结构,系统安装,通信等问题。
软件架构设计说明书 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】<XXX>架构设计说明书版本1.0.0目录1.引言[对于由多个进程构成的复杂系统,系统设计阶段可以分为:架构设计(构架设计)、组件高层设计、组件详细设计。
对于由单个进程构成的简单系统,系统设计阶段可以分为:系统概要设计、系统详细设计。
本文档适用于由多个进程构成的复杂系统的构架设计。
][架构设计说明书是软件产品设计中最高层次的文档,它描述了系统最高层次上的逻辑结构、物理结构以及各种指南,相关组件(粒度最粗的子系统)的内部设计由组件高层设计提供。
][系统:指待开发产品的软件与硬件整体,其软件部分由各个子系统嵌套组成,子系统之间具有明确的接口;组件:指粒度最粗的子系统;模块:指组成组件的各层子系统,模块由下一层模块或函数组成;][此文档的目的是:1)描述产品的逻辑结构,定义系统各组件(子系统)之间的接口以及每个组件(子系统)应该实现的功能;2)定义系统的各个进程以及进程之间的通信方式;3)描述系统部署,说明用来部署并运行该系统的一种或多种物理网络(硬件)配置。
对于每种配置,应该指出执行该系统的物理节点(计算机、网络设备)配置情况、节点之间的连接方式、采用何种通信协议、网络带宽。
另外还要包括各进程到物理节点的映射;4)系统的整体性能、安全性、可用性、可扩展性、异常与错误处理等非功能特性设计;5)定义该产品的各个设计人员应该遵循的设计原则以及设计指南,各个编程人员应该遵循的编码规范。
][建议架构设计工程师与组件设计工程师共同完成此文档。
][架构设计说明书的引言应提供整个文档的概述。
它应包括此文档的目的、范围、定义、首字母缩写词、缩略语、参考资料和概述。
]1.1目的[简要描述体系结构文档的目的。
]1.2范围[简要说明此文档的范围:它的相关项目以及受到此文档影响的任何其它事物]1.3预期的读者和阅读建议[说明此文档的阅读对象,简要说明此文档中其它章节包含的内容与文档组织方式,对于不同读者的阅读方式建议。
软件框架(Software Framework)介绍面向某领域(包括业务领域,如ERP,和计算领域,如GUI)的、可复用的“半成品”软件,它实现了该领域的共性部分,并提供一系列定义良好的可变点以保证灵活性和可扩展性。
可以说,软件框架是领域分析结果的软件化,是领域内最终应用系统的模板。
随着软件规模的扩大、应用的广泛和软件复用技术的发展,以子程序或类(Class)为单位的软件复用有许多不足:(1)子程序库日趋其庞大以致于使用人员难以掌握,(2)大多数类粒度很小,且其自身往往不能完成有用的功能。
这一问题迫使人们在复用中将一组类(或模块)及其交互作为一个整体来考虑,由此出现了软件框架。
软件框架至少包含以下组成部分:(1)一系列完成计算的模块,在此称为构件。
(2)构件之间的关系与交互机制。
(3)一系列可变点(也称热点,Hot-spots,或调整点)。
(4)可变点的行为调整机制。
开发人员通过软件框架的行为调整机制,将领域中具体应用所特有的软件模块绑定到该软件框架的可变点,从而得到最终应用系统,这一过程称为软件框架的例化(instantiation)。
通过软件框架的使用,开发人员可将主要精力放在应用所特有的模块的开发上,从而大大提高了软件生产率和质量。
软件框架的行为调整机制是指如何针对具体的应用调整该框架的可变部分、如何在可变点加入特定应用模块所采用的方法和规则。
行为调整机制可分为四种:(1)模板参数化。
软件框架提供代码自动生成工具,该工具根据用户设置的参数自动生成所需的代码。
(2)继承和多态。
通过面向对象中的子类继承和重载,在子类中加入新的功能或改变父类的行为。
(3)动态绑定。
在运行时刻动态绑定所需的对象服务,可通过软件模式技术实现。
(4)构件替换。
通过替换框架中可插拔的构件来加入业务特定的功能,不同于一般的可复用软件制品,软件框架的一个显著特点是逆向控制(Inversion of Control),在复用过程中,前者需被显式调用,控制是在应用特定的模块中,软件框架则不然,应用开发人员只要将应用特定的模块绑定到框架内,框架则根据自己的交互机制自动调用该模块,控制由框架负责。
项目名称软件架构设计文档版本 <V1.0>修订历史记录目录1.简介51.1目的51.2范围51.3定义、首字母缩写词和缩略语51.4参考资料51.5概述52.整体说明52.1简介52.2构架表示方式52.3构架目标和约束53.用例视图63.1核心用例63.2用例实现64.逻辑视图64.1逻辑视图64.2分层64.2.1应用层64.2.2业务层74.2.3中间层74.2.4系统层74.3架构模式74.4设计机制74.5公用元素及服务75.进程视图76.部署视图77.实施视图87.1概述87.2层87.3部署88.数据视图89.大小和性能810.质量811.其它说明812.附录A 指南813.附录B 规范914.附录C 模版915.附录D 示例9软件架构设计文档1.简介软件构架文档的简介应提供整个软件构架文档的概述。
它应包括此软件构架文档的目的、范围、定义、首字母缩写词、缩略语、参考资料和概述1.1目的本文档将从构架方面对系统进行综合概述,其中会使用多种不同的构架视图来描述系统的各个方面。
它用于记录并表述已对系统的构架方面作出的重要决策本节确定此软件构架文档在整个项目文档中的作用或目的,并对此文档的结构进行简要说明。
应确定此文档的特定读者,并指出他们应该如何使用此文档1.2范围简要说明此软件构架文档适用的范围和影响的范围1.3定义、首字母缩写词和缩略语本小节应提供正确理解此软件构架文档所需的全部术语的定义、首字母缩写词和缩略语。
这些信息可以通过引用项目词汇表来提供1.4参考资料本小节应完整地列出此软件构架文档中其他部分所引用的所有文档。
每个文档应标有标题、报告号(如果适用)、日期和出版单位。
列出可从中获取这些参考资料的来源。
这些信息可以通过引用附录或其他文档来提供1.5概述本小节应说明此软件构架文档中其他部分所包含的内容,并解释此软件构架文档的组织方式2.整体说明2.1简介在此简单介绍软件架构的整体情况,包括用例视图、逻辑视图、进程视图、实施视图和部署视图的简单介绍。
软件架构设计说明书完整版软件架构设计说明书 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】架构设计说明书版本 1.0.0 签署栏拟制审核修订历史版本说明发布作者:XXX审核修订日期批准目录1.引言在多个进程构成的复杂系统中,系统设计阶段可以分为架构设计、组件高层设计和组件详细设计。
而在单个进程构成的简单系统中,系统设计阶段可以分为系统概要设计和系统详细设计。
本文档适用于由多个进程构成的复杂系统的构架设计。
架构设计说明书是软件产品设计中最高层次的文档,它描述了系统最高层次上的逻辑结构、物理结构以及各种指南。
相关组件(粒度最粗的子系统)的内部设计由组件高层设计提供。
在此文档中,系统指待开发产品的软件与硬件整体。
其软件部分由各个子系统嵌套组成,子系统之间具有明确的接口。
组件指粒度最粗的子系统,而模块则指组成组件的各层子系统。
模块由下一层模块或函数组成。
此文档的目的是:1.描述产品的逻辑结构,定义系统各组件(子系统)之间的接口以及每个组件(子系统)应该实现的功能。
2.定义系统的各个进程以及进程之间的通信方式。
3.描述系统部署,说明用来部署并运行该系统的一种或多种物理网络(硬件)配置。
对于每种配置,应该指出执行该系统的物理节点(计算机、网络设备)配置情况、节点之间的连接方式、采用何种通信协议、网络带宽。
另外还要包括各进程到物理节点的映射。
4.设计系统的整体性能、安全性、可用性、可扩展性、异常与错误处理等非功能特性。
5.定义该产品的各个设计人员应该遵循的设计原则以及设计指南,各个编程人员应该遵循的编码规范。
建议架构设计工程师与组件设计工程师共同完成此文档。
引言应提供整个文档的概述。
它应包括此文档的目的、范围、定义、首字母缩写词、缩略语、参考资料和概述。
1.1 目的本文档旨在提供软件架构设计的说明,以确保系统在开发和维护过程中能够满足各种需求和要求。
软件架构师的岗位职责描述(精选30篇)软件架构师的描述篇1职责:1、需求分析,确认和评估系统需求;2、系统分解,将需求分解软件需求,再根据软件的需求,重组子项目,子系统,组件和模块,以及它们之间的罗辑关系,并设计系统整体架构搭建系统实现核心架构;3、澄清系统细节、扫清主要难点,指导协助开发人员进行实际工作;4、把控项目的架构,使设计的项目尽量效率高,开发容易,维护方便,升级简单等;5、培训与指导,架构工程师需要对整个团队进行技术培训,给与每个开发人员有效指导,以避免团队成员对系统设计的误解而造成项目的延误。
任职要求:1、全日制综合类大学本科及以上学历,计算机科学与技术、信息工程、信息管理、电子商务类及商务管理类相关专业(如有特殊经历者酌情考虑);2、拥有多年系统设计与开发工作经验,深刻理解计算机、互联网有关技术与理论。
3、精通Java,熟练掌握Java JDK 与J2EE相关技术;熟练使用Linux命令 ;熟练运用Spring、Mybatis等框架,精通restful架构 ;熟练掌握SQL语句,熟练使用关系型数据库(Oracle、MySQL),和NoSQL数据库(MongoDB、Redis);熟练使用IDEA、Eclipse、Maven、SVN、Git等软件开发工具;熟练使用服务器Apache、Tomcat、Weblogic等;熟悉H5、CSS、Jquery、AngularJS等前端开发技术,了解ReactJS 。
4、深入理解各类技术与产品的原理与思想,有较强需求分析和技术设计与实现能力;5、具有统筹规划能力,能站在较高的视角发现、分析问题,具有问题发现、预判、分解与排查分析能力;6、具有良好组织协调能力和沟通协调能力;7、做过大型企业IT总体规划、设计者优先;8、拥有架构技术团队管理经验者优先;9、2年以上的J2EE应用架构设计和开发经验。
软件架构师的岗位职责描述篇2职责:1、负责数字医疗设备操作系统软件或信息系统软件架构设计与开发,完成系统框架和核心代码的实现。
内核级系统防护软件KsBinSword构架简介KsBinSword是一斩断黑手的利刃,它适用于Windows 2000/XP/2003操作系统,用于查探系统中的幕后黑手(木马后门)并作出处理,当然使用它需要用户有一些操作系统的知识。
KsBinSword内部功能是十分强大的。
它有着自己的独创核心态进程管理方案、简洁而不失效率的网络防火墙、强大而稳定的文件过滤驱动、深入磁盘底层甚至穿透还原软件的磁盘微端口驱动。
可能您也用过很多类似功能的软件,比如一些进程工具、端口工具,但是现在的系统级后门功能越来越强,一般都可轻而易举地隐藏进程、端口、注册表、文件信息,一般的工具根本无法发现这些“幕后黑手”。
KsBinSword使用大量新颖的内核技术,使得这些后门躲无所躲。
本程序分为应用态与核心态两部分。
应用层采用VS2005编写,负责与核心态交互通信,将核心态的信息处理后反馈至用户。
主界面上,又划分为九个子界面。
分别为:一.进程管理:内核级进程、线程检测,顺利查找各种病毒隐藏的进程、线程。
2.细致的内核级模块检测,深刻扫描系统潜在危险模块。
3.强大的内核级进程、线程结束,尚无病毒能够抵挡。
二.系统监控:1.使用当前杀毒软件最新HIPS技术(主动防御),防范病毒于未然。
2.U盘扫描、脚本木马查杀,确保用户中毒后第一时间清理系统。
三.LSP管理:1.列举系统socket所依赖的动态链接库,揭发病毒隐藏之处。
四.SSDT检测部分:1.完全彻底扫描系统所有SSDT(系统服务派发表),病毒无遁形之处。
2.从系统原生文件还原SSDT,确保系统未修改,阻断病毒自我防护。
五.文件管理:1.强大的文件过滤驱动技术,彻底检测所有隐藏文件,安全可靠。
2.独创的强制删除文件功能,绕过FSD(文件系统驱动),底层删除文件。
六.磁盘编辑:1.方便的十六进制编辑器,完美模拟WinHex功能。
2.强大的底层磁盘编辑,甚至穿透还原卡,读取写入任何被保护扇区。
七.防火墙部分:1.自定义安全规则,拦截一切未知数据包,更灵活的保护系统。
2.实时反馈系统网络数据流,提供网络详细信息。
八.PE信息查看:1.详细列举PE文件信息,如导入表,区块等,方便了解未知文件结构。
九.系统模块列举:1.列举系统所有模块,查杀潜在内核级病毒威胁。
核心态共四个NT驱动程序,分别为:1.KsBinSword.sys负责处理进线程相关检测、查杀。
2.SIoctl.sys 负责处理硬盘编程。
DrvFltIp.sys 负责处理防火墙相关部分。
4.Explore.sys负责处理文件编辑相关部分下面介绍整个工程的框架应用层:使用标准的MFC框架,分为:CAboutDlg: About对话框所在类CEditEx: 重载了的编辑框类CHexEdit: 重载了的十六进制编辑框类CKsBinSwordApp: 程序主应用框架类CKsBinSwordDlg: 程序主界面类CMyList: 重载了的列表框类CMySystem: 静态系统函数类CPage1: 进程管理页的类CPage2: 监控管理页的类CPage3: 驱动模块枚举页的类CPage4: 列举LSP页的类CPage5: SSDT页的类CPage6: 文件管理页的类CPage7: 磁盘编辑器页的类CPage8: 防火墙页的类CPage9: PE文件查看页的类: 防火墙规则对话框类CTrayIcon: 系统托盘类等类。
其中CMysystem类比较重要,它封装了对驱动操作、各个系统函数调用等操作,各个类都要用到。
程序的主界面如图:主界面由CKsBinSwordDlg类负责。
界面中使用了“属性页”控件,负责加载各个分页。
每个分页由CPage1、CPage2等类负责。
下面结合代码详细介绍各个功能及其实现。
.进程管理:1.普通列举进程本功能封装在消息响应函数CPage1::OnBnClickedListProcess()中。
采用系统PSAPI.LIB库导出的函数CreateToolhelp32Snapshot()、Process32First()、Process32Next()等函数工作。
属于应用态列举进程。
取得进程PID后,将使用我们独创的My_OpenProcess()打开进程句柄。
My_OpenProcess()的功能类似于普通的OpenProcess()作用,但功能更为强大。
我们知道一些病毒等软件为了防止自己被杀毒软件结束,会采用一定的防御手段。
为了关闭进程,进程句柄是必不可少的。
所以很多病毒会在OpenProcess()上采用API HOOK技术保护自己不被结束。
而我们的CMySystem::My_OpenProcess()将完美绕过,并且采用了一定的新颖的微软未公开技术。
My_OpenProcess()实现原理简介:windows在子系统进程CSRSS.EXE里维护了一张整个应用层句柄表。
通过系统未文档函数ZwQuerySystemInformation()将得到这张表。
然后遍历所有句柄,如果是进程句柄则通过ZwDuplicateObject()将句柄复制到本进程,并调用ZwQueryInformationProcess()查询是否为我们需要打开的进程句柄。
如果是则返回,否则继续遍历。
通过以上手段,应用层很少病毒能躲过KsBinSword的扫描。
但不排除一些内核级的ROOTKIT(既一些底层核心态病毒)使用篡改系统内核技术逃过杀毒软件的检测。
这时我们可以采用驱动列举进程功能。
2.驱动列举进程本功能封装在函数CMySystem::ListProcessByDrive()中。
实现原理简介:在windows下,所有资源都是以对象方式进行管理。
我们要访问一个对象时,系统就会创建一个对象句柄。
句柄和对象之间是通过句柄表来完成的。
准确来说,一个句柄是它所对应的对象在句柄表中的索引。
PspCidTable是windows系统上一个特殊的句柄表。
它不链接在系统句柄表上,也不属于任何进程。
通过它可以访问系统任何对象。
在windows XP中,为了节省系统空间,采用了动态扩展的表结构。
当句柄表数目少的时候仅采用下层表。
数目增大后才采用更多的层。
最多有三层句柄表。
当我们获得三层句柄表后,我们就可以通过句柄来访问对象了。
利用PspCidTable来检测隐藏进程的基本原理正是如此,系统内所有进程对象的对象类型是一样的,先取得任一进程对象的对象类型,然后访问所有句柄值,是进程对象则记录下来。
下面是实现代码:VOID IsValidProcess(){//判断是否是进程对象,是则记录,不是则放弃ULONG PspCidTable;ULONG TableCode;ULONG table1,table2;ULONG object,objectheader;ULONG NextFreeTableEntry;ULONG processtype,type;ULONG flags;ULONG i;PspCidTable=GetCidAddr();processtype=GetProcessType();if(PspCidTable==0){return ;}else{//TableCode的最后两位在XP中决定了句柄表的层数TableCode=*(PULONG)(*(PULONG)PspCidTable);if((TableCode&0x3)==0x0){table1=TableCode;table2=0x0;}if((TableCode&0x3)==0x1){TableCode=TableCode&0xfffffffc;table1=*(PULONG)TableCode;table2=*(PULONG)(TableCode+0x4);}//对cid从0x0到0x4e1c进行遍历for(i=0x0;i<0x4e1c;i++){if(i<=0x800){if(MmIsAddressValid((PULONG)(table1+i*2))){object=*(PULONG)(table1+i*2);if(MmIsAddressValid((PULONG)(table1+i*2+NEXTFREETABLEENTRY))){NextFreeTableEntry=*(PULONG)(table1+i*2+NEXTFREETABLEENTRY);if(NextFreeTableEntry==0x0)//正常的_HANDLE_TABLE_ENTRY中NextFreeTableEntry为0x0{object=((object | 0x80000000)& 0xfffffff8);//转换为对象(体)指针objectheader=(ULONG)OBJECT_TO_OBJECT_HEADER(object);//获取对象if(MmIsAddressValid((PULONG)(objectheader+TYPE))){type=*(PULONG)(objectheader+TYPE);if(type==processtype){flags=*(PULONG)((ULONG)object+FLAGS);if((flags&0xc)!=0xc)RecordInfo(object);//flags显示进程没有退出}}}}}}else{if(table2!=0){if(MmIsAddressValid((PULONG)(table2+(i-0x800)*2))){object=*(PULONG)(table2+(i-0x800)*2);if(MmIsAddressValid((PULONG)((table2+(i-0x800)*2)+NEXTFREETABLEENTRY))){NextFreeTableEntry=*(PULONG)((table2+(i-0x800)*2)+NEXTFREETABLEENTRY);if(NextFreeTableEntry==0x0){object=((object | 0x80000000)& 0xfffffff8);objectheader=(ULONG)OBJECT_TO_OBJECT_HEADER(object);if(MmIsAddressValid((PULONG)(objectheader+TYPE))){type=*(PULONG)(objectheader+TYPE);if(type==processtype){flags=*(PULONG)((ULONG)object+FLAGS);if((flags&0xc)!=0xc)RecordInfo(object);}}}}}}}}}}上面解决了检测进程功能。