精华内容
下载资源
问答
  • 技术架构组工作职责

    万次阅读 多人点赞 2016-03-14 00:01:14
    技术架构组工作目标 落地本部门的技术规划,负责本部门IT整体规划技术部分,指导重要项目的设计实现 规范本部门的所有技术应用和开发内容,保障系统开发的有序、标准、一致性 发展基础技术平台和完善通用组件,...
    1. 技术架构组工作目标

      • 落地本部门的技术规划,负责本部门IT整体规划技术部分,指导重要项目的设计实现
      • 规范本部门的所有技术应用和开发内容,保障系统开发的有序、标准、一致性
      • 发展基础技术平台和完善通用组件,实现部门技术积累和IT资源高效复用
      • 解决各项目的技术难点、框架选型,保障项目开发的速度、效率、质量
      • 协助运维、安全和测试组的部分技术性工作,保障各组工作的顺利开展和技术积累
      • 组织技术学习培训,引入代码质量统计工具,提升开发人员技术水平、扩大知识面
    2. 技术架构组工作目标

      • 制定部门技术规划
        – 部门技术规划:技术规划文档、技术发展线路文档
        – 重大技术决策:协助技术委员会的规划和决策落地
      • 制定部门技术规范
        – 整体技术规范:整体技术规范、设计规范、调研规范、部署规范、开发规范、数据库规范
        – 接口技术规范:接口规范、报文规范、通讯规范
      • 发展基础技术平台
        – 技术框架组件整合:框架整合demo、组件代码、组件文档
        – 基础技术平台开发:基础技术平台代码、平台文档
      • 解决项目技术难点
        – 技术框架选型:技术选型报告、技术应用demo
        – 项目设计实现支持:支持重点项目的关键实现,产出设计文档
        – 技术难点攻坚:关键代码、总结报告
      • 提高人员技术水平
        – 协调项目代码质量:度量工具软件、度量标准文档
        – 组织技术学习培训:培训计划、培训课件、培训反馈
      • 协助运维测试人员
        – 性能测试与自动化测试:性能测试脚本和场景评审、分析调优,自动化测试技术支持
        – 持续集成和自动化运维:持续集成、自动化运维技术支持、其他运维相关脚本支持
        – 数据库与部署技术支持:评审数据库方案、部署方案,上线部署的技术支持
        – 版本管理工具统一控制:源码和文档的统一管理、权限统一控制
      • 前端技术统筹管理
        – 前端技术选型和维护:确定网站前端、业管前端、移动前端的
        前端问题解决与积累:培训计划、培训课件、培训反馈
    3. 技术架构组研发资源配置

      • 整体技术框架和规范
      • 支持具体的框架整合、工作流技术调研、MQ技术调研,定时任务和消息中心
      • 技术培训、技术交流、技术岗位入职培训
      • 支持技术规范制定、框架整合、基础技术平台的开发,
      • 整合分布式服务框架,数据中间层等
      • 支持各项目的技术问题和研发过程,完善技术框架、推广新技术
      • 前端与移动技术规范、基础框架和组件维护、各项目技术支持
      • 运维与安全部分工作
      • 自动化测试、前后端性能测试、持续集成相关工作
      • 移动框架的技术平台设计实现工作
      • 数据库规范与配置相关工作
      • 支付网关与接口部分工作
    4. 技术架构组近期工作计划

      • 搭建分布式服务的开发环境:配合三套环境、完善基础设施和培训用法
      • 制定部门各种技术相关规范:整体技术规范、设计规范、调研规范、部署规范、开发规范、数据库规范
      • 完成工作流整合demo代码:工作流整合demo代码、设计文档、整合文档
      • 完善接口规范、评审各接口:评审会议、接口文档
      • 制定整体架构设计V0.1版本:架构设计文档、整体部署文档(方天英配合)
      • 实现基础技术平台V0.2版本:框架整合demo、基础组件demo
      • 完善数据库架构和管理规范:架构设计文档、整体部署文档、管理规范文档(张洋配合)
      • 搭建持续集成以及度量工具:度量工具软件、度量标准文档(协助QA组)
      • 完善整体架构设计V0.2版本:架构设计文档、整体部署文档(方天英配合)
      • 组织部门技术培训课程计划:培训范围、培训方式、确定培训讲师资源
      • 解决各个项目研发技术难点:支撑门户和业管项目的技术选型和疑难问题解决,出选型报告和总结报告
      • 维护发展部门基础技术平台:收集项目对平台的需求文档、完善和重构功能代码,抽象组件代码,完善设计文档
      • 提升部门开发人员技术水平:培训计划表、培训文档(需各组核心研发配合、外部资源)
    展开全文
  • 美团基础技术部诚邀各岗位工程师加入,投递简历,零距离和面试官交流。 基础架构资深工程师/技术专家(架构方向) 岗位职责 面向公司所有业务提供统一的服务治理方案,进行服务通信框架、服务治理系统的研发与演进,...


    美团招聘直通车第二班起航啦~

    无论你是深耕在系统架构领域,还是遨游在前端领域;

    无论你是Java工程师,还是C++工程师;

    无论你做的是测试方向,还是运维方向;

    无论你想Base上海还是北京;

    来美团,我们都有岗位等着你。

    美团基础技术部诚邀各岗位工程师加入,投递简历,零距离和面试官交流。

    基础架构资深工程师/技术专家(架构方向)

    岗位职责

    • 面向公司所有业务提供统一的服务治理方案,进行服务通信框架、服务治理系统的研发与演进,推动服务化规范在公司范围内实施落地。

    • 研发容器技术,持续改进集群调度弹性伸缩服务方案。提升业务的资源利用率、运维效率,有效降低企业IT成本。

    • 研发公司级高可用可扩展基础组件,如分布式实时监控、分布式跟踪系统等,支撑业务的快速发展。

    • 基础存储系统的研发,为公司业务提供高可靠、高可用、统一的存储解决方案。

    • 负责消息中间件的研发,为公司内所有业务提供高效可靠的消息队列解决方案。

    • 积极参与招聘、为其他工程师提供培训和指导,加速团队的成长。

    岗位要求

    • 五年以上的开发经验,精通一门或多门开发语言 (Java、C++、Golang等)。

    • 优秀的推动能力、沟通能力和跨团队项目合作经验。

    • 优秀的分析问题和解决问题的能力,对解决具有挑战性问题充满激情。

    • 丰富的分布式系统、中间件、容器、大规模集群管理、存储、数据库等方面的实际研发实践经验,有深度有视野尤佳。

    职位关键词

    • 存储、数据库、DBA、内核开发、运维开发、微服务、消息中间件、集群调度、容器等。

    工作地点

    北京&上海

    联系方式

    tech@meituan.com (邮件标题注明:基础架构资深工程师+架构方向)

    服务器系统架构工程师(基础设施方向)

    岗位职责

    • 为公司高效高品质的交付服务器资源。

    • 利用新硬件技术优化运营成本。

    • 服务器相关的批次问题和疑难问题的诊断和处理。

    • 服务器资源的标准化的建设和相关指标的运营。

    岗位要求

    • 有4年以上国内外大型互联网公司的服务器选型测试相关经验,熟练使用Linux ,可以使用Shell、Python等进行开发工作。

    • 熟悉X86、ARM、FPGA、GPU等计算芯片的结构原理及使用场景,了解近几年的架构迭代和演变。

    • 熟悉服务器软硬件的异常排查和处理,对批次影响管控,潜在隐患的监控发现和预测规避等有丰富的经验。

    • 熟练使用开源的Benchmark工具,了解通用服务器设备及相关配件的性能和功能指标。

    • 本科以上电子电路,计算机技术相关专业。

    • 有强烈的上进心和求知欲,善于学习新事物,对技术充满激情。

    • 有良好的团队协作能力,有技术激情,能够胜任有挑战的工作。

    工作地点

    北京

    联系方式

    tech@meituan.com (邮件标题注明:服务器系统架构工程师+基础设施方向)

    网络工程师(基础设施方向)

    岗位职责

    • 负责网络设备运维和优化,保障服务高可用。

    • 负责数据中心网络建设、实施、交付。

    • 负责突发事件的快速响应及故障排除。  

    岗位要求

    • 五年以上网络领域相关工作经验。

    • 深入理解TCP/IP原理,精通OSPF、BGP等网络协议。

    • 熟悉Linux操作系统及网络相关服务、 软件。

    • 熟悉Cisco、H3C、HuaWei等主流厂商网络设备的配置和管理。

    • 良好的责任心和服务意识,较强的自学能力,有良好的沟通协调能力。

    • 具备华为、思科厂商认证者优先。

    岗位亮点

    • 有机会全方位参与到10w+量级服务器规模的大型数据中心网络整体规划、建设、优化与运营。

    • 有机会感受美团点评的工程师文化,团队技术氛围好,始终保持与国内外一线互联网公司的技术前瞻性交流。

    工作地点

    北京

    联系方式

    tech@meituan.com (邮件标题注明:网络工程师+基础设施方向)

    资深Java工程师/技术专家(效能方向)

    岗位职责

    • 负责美团点评公司级研发效能平台和工具的建设,建设业界标杆的DevOps工具体系,通过规范和工具来提高研发过程的质量与效率。

    • 负责自研的分布式代码仓库建设,支撑全公司业务快速发展。

    • 负责面向持续交付的流水线系统建设,为业务方提供全流程的解决方案。

    • 负责集团整体研发协同管理系统和项目管理系统的开发,打造高可用、高复用、插件化的领先协同研发系统。

    • 负责测试领域的基础设施建设,如全链路压测、接口流量录制回放、移动端云测平台等。

    • 积极参与招聘、为其他工程师提供培训和指导,加速团队的成长。 

    岗位要求

    • 计算机或相关专业本科以上学历。

    • 四年以上的开发经验,精通一门或多门开发语言 (Java、C++等)。

    • 精通Java Web开发,熟悉SpringMVC、Spring、MyBatis等主流框架,了解其实现原理。

    • 熟悉分布式系统的设计和应用,熟悉数据库、缓存、消息队列、RPC等机制。

    • 优秀的推动能力、沟通能力和跨团队项目合作经验。

    • 优秀的分析问题和解决问题的能力,对解决具有挑战性问题充满激情。

    职位关键词

    • 分布式代码仓库、CI/CD、测试集成、环境管理、发布部署、研发协同、过程度量等。

    工作地点

    北京&上海

    联系方式

    tech@meituan.com (邮件标题注明:Java工程师+效能方向)

    测试开发资深工程师/技术专家

    岗位职责

    • 负责美团基础研发平台的相关产品的质量保障工作。

    • 引进和完善测试方法、开发测试工具、构建测试框架,提高测试效率。

    • 基于测试环境,构建服务端CI环境,将功能测试、接口测试和压力测试集成到CI环境中。

    • 优化产品研发测试上线流程,制定测试策略提高产品质量和测试效率。

    • 负责功能测试、接口测试、性能测试,稳定性测试等。

    • 建立和完善质量度量体系,通过质量度量发现质量流程中的问题,并进行改进。

    • 根据项目痛点,开发测试工具,提高测试效率,解决团队痛点问题。

    • 针对业务特点,发掘更多专项测试方法提高产品质量和测试效率。

    岗位要求

    • 具有云计算/Docker/高并发系统经验。

    • 精通Java/Python中至少一门编程语言,具有丰富的工具开发和自动化测试经验。

    • 精通质量管控流程,具有推动质量流程落地的经验。

    • 计算机或相关专业本科及以上学历,至少三年的服务端测试开发经验。

    • 熟练使用Linux系统,具有实际测试环境搭建和维护管理的经验。

    • 精通性能、稳定性、可靠性等专项测试,熟练使用压测工具JMeter、Http_Load等。

    • 具有服务端CI搭建和维护的实际经验,能够快速上手持续集成工具或平台改进开发。

    工作地点

    北京&上海

    联系方式

    tech@meituan.com (邮件标题注明:测试开发资深工程师+效能方向)

    Web前端高级/资深开发工程师 (大前端方向)

    岗位职责

    • 负责美团研发效能领域的产品的前端研发工作。

    • 完成关键技术和项目的架构设计,持续优化技术,提高产品用户体验。

    • 以结果和价值为导向,利用科学的方法进行成果的指标衡量。

    • 跟进研究业界研发效能领域的前沿理念和最新的技术实践。

    岗位要求

    • 计算机相关专业本科及以上。

    • 经验上,有3年以上大型互联网公司或大型IT企业Web开发经验。

    • 领域知识上,理解项目管理、软件生命周期管理等理念,对研发规范,质量与效率有实践和认知。

    • 专业能力上:

      • 计算机基础扎实,熟悉W3C标准,对ES5/ES6/ES.Next有一定认识。

      • 精通JavaScript,除此之外,掌握至少一门其它编程语言(会用)。

      • 熟练使用主流框架(React/Vue),对代码的分层与优化等代码抽象策略有深刻的理解。

      • 熟悉组件化和模块化,能根据基建组件开发业务组件,从而高效支撑业务。

      • 熟悉工程化,对Node Server(如:Koa)、代码构建与优化(如:Webpack/Babel)、项目发布与部署(CDN/Nginx/Shell)有实践经验。

      • 优秀的前端调试与优化能力,快速分析代码Bug与性能问题,并能够归纳解决一类问题。

      • 熟练使用调试开发工具:抓包工具、Chrome调试工具与插件、移动端调试工具、IDE/编辑器插件。

    工作地点

    北京

    联系方式

    tech@meituan.com (邮件标题注明:Web前端资深开发工程师+大前端方向)

    iOS高级开发工程师/技术专家(大前端方向)

    岗位职责

    • 负责公司移动端底层基础组件开发(网络、日志、监控、安全等领域)。

    • 负责公司移动DevOps平台的开发。

    • 跟进iOS系统更新,了解并利用iOS新特性对组件优化及兼容。

    • 负责与各业务线沟通,并协助业务线完成SDK的使用。

    • 学习和研究新技术以满足底层基础组件性能迭代需求,根据开发过程中的体验对基础组件提出改进建议。

    岗位要求

    • 计算机相关专业本科及以上。

    • 经验上,有3年以上大型互联网公司或移动端开发经验。

    • 专业能力上:

      • 精通Objective-C语言及基本特性,充分理解iOS多线程NSThread/GCD/NSOperation机制、OC运行时原理、KVO/KVC的模式,精通App各种启动流程。

      • 深入理解计算机网络通信框架,熟悉HTTP/TCP/UDP网络协议。

      • 熟悉常用的加密算法 AES/RSA/ECDHE及TLS协议。

      • 熟悉常用数据存储方案,熟悉SQL,并有一定的数据分析能力。

    工作地点

    上海

    联系方式

    tech@meituan.com (邮件标题注明:iOS高级开发工程师+大前端方向)

    高级SRE运维工程师(运维方向)

    岗位职责

    • 负责公司全线业务的日常运维工作,包括需求处理、故障响应、可用性提升项目推进等。

    • 通过持续的全方位数据运营(包括可用性指标、历史事故、资源利用率等),找到系统薄弱点,落地地改进项目。

    • 持续打磨监控体系,提升监控效率,缩短故障定位时长。

    • 参与建设运维工具、平台,推进运维自动化。

    • 积累运维最佳实践,为业务架构设计与组件选型提供指导,输出运维技术文档。

    岗位要求

    • 具有5年工作经验,其中有2年以上互联网运维经验。

    • 具有互联网思维和集群管理能力,强大的项目执行力,良好的跨部门沟通及团队协作能力。

    • 深入理解Linux系统,了解常用网络技术,熟悉TCP/IP、HTTP等协议,有良好的网络、计算机体系结构方面的知识。

    • 了解Nginx/LVS/Puppet/Ansible/Zabbix/ Falcon等开源软件(至少2种)。

    • 至少熟练掌握Python/Shell/Perl等1种脚本语言。

    • 工作细致、善于思考,有很强的问题分析和推进解决的能力。

    • 善于团队协作,乐于分享,良好的客户服务意识。

    工作地点

    北京&上海

    联系方式

    tech@meituan.com (邮件标题注明:高级SRE运维工程师+运维方向)

    更多职位详情,请查看:

    展开全文
  • 我在上一篇日志中提到,ASTC技术支持高动态范围成像和三维纹理压缩,我将花些时间演示如何处理纹理,以及在图像内容中它们可以采用怎样的冷色效果。 高动态范围成像(High Dynamic Range) 正常颜色(低动态...

    KhronosARMASTC技术(自适应可伸缩纹理压缩技术)列为业内标准纹理压缩的新方案。ASTC技术支持高动态范围成像和三维纹理压缩,我将花些时间演示如何处理纹理,以及在图像内容中它们可以采用怎样的冷色效果。


    高动态范围成像(High Dynamic Range)


    正常颜色(低动态范围成像或LDR)的图片在屏幕上显示的颜色亮度为介于0(最低亮度)到1(最高亮度)的相对较低的动态范围。超出该范围则不能显示,原因在于,你既不能将颜色调得比黑色更暗,也不能让显示器的亮度超出其最大亮度值。


    尽管如此,在计算确定屏幕上的最终色彩像素时,你通常想让亮度超出这一范围值。例如,物体表面的一道亮光,在调至表面的较暗色彩前,其亮度可能是最大亮度值的两倍。如果只能在0到1之间进行调节,那么不管你在上面打多强的光,画面也无法调得比底色更亮。对于简单的照明,这处理起来相当方便,你可以通过计算将原有的任何亮度调至你想要的亮度,而较高级的照明技术则通常利用纹理来支持光密度和色彩。不过如果我们只有低动态范围纹理,进行此项操作则较麻烦。或许可以调节鲜艳色彩相关的纹理数值,不过,由于亮度梯度的线性区间影响,会在较暗区域形成条带效应,视觉效果较差。同样,对于显示有光有影场景或有光源场景的纹理,如果采用LDR,则可能出现以下方面的问题,即:明亮区域偏亮、暗区不够清晰,或者保持阴影的精度和调暗明亮区域。


    我们所需要的显示方案,应该既允许更大的动态范围,又能在较暗区域采用较小梯度显示色彩。来看看高动态范围成像(HDR)纹理吧。



    利用ASTC技术以3.56bpp压缩而成的HDR图像,采用三种曝光方式显示


    OpenGL® ES中,可以采用16比特浮点数值来指定HDR纹理。但是,典型的RGB纹理相当于48比特每像素(48bpp),而多数设计人员均不满意每像素24比特典型纹理所占用的空间,如果采用48bpp,则所占空间为两倍,这是一个较大缺陷。因此,我们需要进行压缩。


    支持HDR


    你可能会想到,ASTC技术可以采用不同编码模式处理图像中的各种纹理单元块,要确保选择最有效的模式,则取决于单元块的图像内容。在前一篇日志中,我们谈到LDR编码方案,不过ASTC技术也包括若干HDR编码模式,可以修改色彩存储和插补的方式。如果一个单元块所含的一系列像素值包括明暗纹理的适当分布,或纹理数值范围超出0~1,则色彩会以12比特伪对数的显示方案储存,它便于在解码器中转换成真正的浮点形式。这种显示方案的优点在于,我们在LDR中采用的相同线性插值,可以运用到对数值中,从而使此类数值将我们用于显示明暗的数值分隔开来,其产生的视觉畸变也最小。需进行的额外步骤是,在进行编码时,需将传入的浮点纹理值变成伪对数值;在解码时,最终将结果转换为浮点值。由于编码已选定,所以这些功能操作起来相当简单。一旦进行转换,ASTC技术会以同样方式将这些数值作为LDR数值处理,从而节省了硅芯片面积,并允许在LDR模式下进行灵活选择。


    纹理创建者可以决定采用HDRLDR来达到同样的色彩格式和比特率。当然,在许多情况下,HDR图片比LDR图片包含更多的信息,因此需采用更高的比特率。我们用HDR图片所做的实验显示,与8比特每像素相比,ASTC技术可以做出的效果接近于BC6H(现有的de facto HDR压缩标准)。尽管如此,能够得益于低比特率的HDR图像内容种类有很多(光照图是其中一种),而让这种操作变得可行很有意义。 


    3D纹理


    OpenGL, OpenGL ESDirectX APIs均支持3D纹理,但它们的利用率并不高。原因不难解释——它们较占空间。256x256RGB纹理较小,未压缩情况下占据192KiB空间。要在3D中获得同样的像素解决方案,要求纹素为256x256x256,其所占空间较大,为48MiB。对于多数应用程序而言,这便是3D技术人员所谓的“太大”。显然,我们不是要求压缩技术支持3D纹理,而是要让3D纹理能够被压缩。


    现如今,压缩方案通过简单地压缩 2D 切片已可以全面支持 3D 。在 256x256x256 这一案例中,我们简单地将它作为 256 个独立的切片,每条切片均为 256x256 像素点,然后单独压缩每条切片,并将它们连成矩阵。这样做在性能和质量两方面存在弊端。

    性能问题取决于你如何看待3D纹理。如果你正在展示一个面,它与你编码的切片方向平行,而一个纹素解码操作只需进入单个切片内的数据单元块。你还极有可能在同一单元块内或在缓存中发现附近的像素点。


    但是,如果你的画面是垂直方向映射,你将需要访问更多的纹理单元块,影响带宽和抖动纹理缓存。这样会形成较大程度的性能从属,而这不是关于复杂性或内容构造等方面的可控内容,而是不可预见的视角。这真令人讨厌!


    第二个问题是,在 3D 纹理中,我们通常显示的是实际容积数据,而真实的纹理特点是三维的。因此纹理中的这些数值与切片关联,这便是压缩算法可以开发的内容。如果你将这些切片分开,会妨碍压缩并导致在给定的比特率下形成质量较低的图片。

    ASTC技术的3D模式引入了一种新理念——压缩数据中一个128比特的单元块可以覆盖一个3D足迹(从3x3x3像素点到6x6x6像素点,梯度在二者之间)。这相当于将比特率从4.7调低至 0.56比特每像素。由于单元块是立方体(或接近立方体,类似于4X4X5的规格也可操作),无论从哪个方向看,它们都是相似的。通过切片方法查看,几乎完全消除了性能方面的较大差异。

    我们演示了利用ASTC技术在2比特每像素的情况下进行3D纹理编码。这相当于8X8像素点单元块的切片,或采用4X4X4像素单元块进行3D本地编码。3D编码可将本地质量提高约为2dB,说明图层之间更多的关联性可以通过压缩算法进行利用,从而使质量大幅提高。


    对于包含边界清楚的不同色彩区域的3D纹理而言,我们还会发现这种定义纹理划分的方法的一大优点。如果将这种方法用作函数而非表格,则可轻松(一旦你意识到这种可能性)定义关于XYZ的函数,而非仅仅是XY的函数。无需大型ROM,只需最低的附加硬件成本,我们便可得到一份3D分区表。

    3D单元块需要对像素加权矩阵的布局进行修改,不过这正适合128比特单元块的构造,并可重新利用2D情形下的大量功能单元。例如,有一种巧妙的方法是采用简单内插的方式在加权值中插入数值,而非通过三维插值来计算有效的加权值。这样操作可以减小与2D双线性内插相同的工作量,而且我们可以重新利用相同的内插硬件,节省电力和空间。

    让我们切换到常规问题吧:是的,这是另一种自主选择,因此ASTC技术还支持3D HDR纹理!不过,你还期待什么?


    互动


    获得ASTC技术评估编解码器,请访问Mali Developer Center,可支持LDR,HDR和3D纹理压缩。


    你是否有HDR3D纹理方面的新应用?在评论中与我们分享吧!


    Sean EllisARM媒体处理部技术团队的一员


    他于1988年开始从事3D图形工作,包括ARM最初的机器产品Archimedes。他是Java移动3D图形标准规范(M3GM3G2)的主要制定者。目前工作是界定ARM下一代GPU的架构。他还参与专利工作,保护ARM在多媒体领域的创新成果。


    原文链接:http://blogs.arm.com/multimedia/1011-more-astc-in-arm-mali-gpus-high-dynamic-range-and-3d

    展开全文
  • 杀毒软件工作原理 及 现在主要杀毒技术

    万次阅读 多人点赞 2011-05-22 03:17:00
    卡巴,NORTON,咖啡杀毒软件引擎技术深入探讨 <br />一、杀毒软件引擎与病毒库的关系 <br />首先必须指出杀毒软件的引擎与其病毒库并没有什么直接的关系。杀毒引擎的任务和功能非常简单,就是对于给定的...
    卡巴,NORTON,咖啡 杀毒软件引擎技术深入探讨

    一、杀毒软件引擎与病毒库的关系

    首先必须指出杀毒软件的引擎与其病毒库并没有什么直接的关系。杀毒引擎的任务和功能非常简单,就是对于给定的文件或者程序进程判断其是否是合法程序(对应于杀毒软件厂商自己定义的正常和非异常程序规范而言。正常的程序规范是指在程序所在系统平台上操所系统本身洗净有定义的或者业界已经公认的程序行为过程,比如操作系统正常运行就必须要求应用程序与系统核心进行进程响应并与交换相关数据。非异常程序活动是指可能存在非法程序操作结果但能够以较高的置信度确定其非非法程序活动规范的。一般情况下,相关文件的复制,移动,删除等都奔包括在该界定范围内)。

    我们知道病毒的最终目的有些是与合法活动很类似的,在这种情况下,要求软件厂商必须自己有一个行为规范界定规则,在一个给定的范围和置信度下,判断相关操作是否为合法。在这方面,各个厂商的界定是有区别的,一般而言非美国厂商界定是非常严格的,只有有很高的置信水平的程序行为,他们才判别为非病毒操作。记得前一阵论坛上有人给了四段简单的代码,很多杀毒软件将其判为病毒或有病毒性质的文件行为,实际上看那几段代码可以知道,其结果并不足以视之为病毒。美国厂商一般判断比较复杂,这主要由于美国市场上的杀毒软件引擎来源比较复杂,比如Norton,有足够的技术资料确信它的杀毒软件引擎是自成体系的,而Mcafee则存在一定的外界技术引进(收购所罗门)。

    用简单的话说,杀毒引擎就是一套判断特定程序行为是否为病毒程序(包括可疑的)的技术机制。一个完整的技术引擎遵守如下的行为过程:

    ⑴非自身程序行为的程序行为捕获。包括来自于内存的程序运行,来自于给定文件的行为虚拟判断,来自于网络的动态的信息等等。一般情况下,我们称之为引擎前端。捕捉的方法非常多,除Norton以外的杀毒软件采用的都是行为规范代码化的方法。Norton由于与微软有远远高于其它厂商合作关系,其实现过程比较独特,另有叙述。
    ⑵基于引擎机制的规则判断。这个环节代表了杀毒引擎的质量水平,一个好的杀毒引擎应该能在这个环节发现很多或者称之为相当规模的病毒行为,存而避免进入下一个判断环节。传统的反病毒软件引擎使用的是基于特征码的静态扫描技术,即在文件中寻找特定的十六进制字符串,如果找到,就可判定文件感染了某种病毒。但这种方法在当今病毒技术迅猛发展的形势下已经起不到很好的作用了。为了更好的发现病毒,相继开发了所谓的虚拟机,实时监控等相关技术。这个环节被叫做杀毒软件引擎工作的核心层。

    ⑶引擎与病毒库的交互作用。这个过程往往被认为是收尾阶段,相对于前两个环节,这个阶段速度是非常慢的,杀毒引擎与要将非自身程序行为过程转化为杀毒软件自身可识别的行为标识符(包括静态代码等),然后与病毒库中所存贮的行为信息进行对应,并作出相应处理。当然必须承认,当前的杀毒软件对大量病毒的识别都是在这个阶段完成的。因此一个足够庞大的病毒库往往能够弥补杀毒软件引擎的不足之处。但是必须意识到,如果在核心层阶段就可以结束并清除病毒程序,那么杀毒软件的工作速度将会大幅提升。“很可惜的是,当前我们没有足够聪明的杀毒引擎来完成这个过程”,这就是为什么有病毒库的原因。

    Norton是微软最高级的安全方面核心合作厂商,因此它的杀毒软件在某些方面工作比较特殊。比如在杀毒软件的安装,使用和功能实现方面,大部分厂商采用的是中间件技术,在系统底层与非自身应用程序之间作为中间件存在并实现其功能;另有一些厂商使用的是应用程序或者嵌入技术,相对而言这种方法安全性较低;Norton和Mcafee实现方式比较相似,Norton采用了基于系统最底层的系统核心驱动,这种实现方式是最安全的或者说最高级的实现方式,当然这需要微软的系统源代码级的支持(要花许多money),业界公认,这是最稳定的实现方法,但从目前而言,只Norton一家。Mcafee实现方式与Norton很接近,一般称之为软件驱动。相当于在系统中存在一个虚拟“硬件”,来实现杀毒软件功能。这些实现方式关系着杀毒引擎对程序行为进行捕捉的方式。
    我们使用的Intel系列处理器有两个 Ring层,对应两个层,微软的操作系统将系统中的所有行为分为如下几个层:

    ⑴最底层:系统核心层,这个层的所有行为都由操作系统已经内置的指令来实现,所有外界因素(即使你是系统管理员)均不能影响该层的行为。Norton的核心层既工作在这个层上。

    ⑵硬件虚拟层(HAL)。为了实现硬件无关性,微软设计了该层。所有的外部工作硬件(相对于系统核心而言)都进入HAL,并被HAL处理为核心层可以相应的指令。我们所使用的硬件的驱动程序既工作在该层上。当外界硬件存在指令请求时,驱动程序作出相关处理后传给核心层。如果无与之对应的驱动相应,那么将按照默认硬件进行处理。好像安全模式下硬件的工作就被置于默认硬件模式。Mcafee的杀毒软件,就被认为工作在HAL层上。

    ⑶用户层。我们所知的大部分杀毒软件既工作与该层上。一个完整的程序行为请求是如下流程:位于3户层上的应用程序产生指令行为请求,被传递至2HAL进行处理,最后进入1最底层后进入CPU的指令处理循环,然后反向将软件可识别的处理结果经1-2-3再响应给应用程序。对于Norton而言,其整个工作过程如下:3-2-1,完成;Mcafee:3-2-1-1-2,完成:其余:3-2-1-1-2-3,完成;这个环节代表了杀毒软件引擎的前端行为规范的获得。只从这个过程而言,Norton和Mcafee是比较先进的。具体到系统与CPU的Ring()的对应,Win NT时代,微软的NT系统被设计成与四个Ring()层相对应,RISC系列的处理器有四个Ring。因此现在的大部分杀毒软件是不能工作在NT上的。具体来说,CISC有四个Ring(),RISC有两个Ring()。

    尽管比较先进的工作方式给Norton和Mcafee带来了较高的系统稳定性(HAL层很少出现问题,最底层出问题的几率接近于零),较快的响应速度(减少了环节),但同时也带来了一些问题:1.资源占用比较厉害。在Mcafee上体现的不是很明显,在Norton上表现非常明显。因为对于越底层的行为,硬件资源分配越多。最好资源的是什么?当然是操作系统。应为它最最底层。2.卸载问题。卸载底层的组件出问题的概率是相对比较高的,因此Norton的卸载比较慢,偶尔还容易出问题。

    因此,有人质疑微软Windows操作系统的不稳定性,是否会拖累Norton?实际上,Windows的内核层设计是非常优秀的,很多时候,操作系统的不稳定性来源于以下几个方面:

    ⑴应用程序设计不合理,许多程序设计者根本就未读过微软的32位程序设计指南,所设计的程序并不严格符合微软规范。我们看到,大量多年前设计的软件还能运行于最新的Win XP平台,原因很简单:这个软件在设计时完全遵循了微软的程序设计规范。

    ⑵驱动程序的编写有问题,与HAL层有冲突。

    因此,片面地认为微软的操作系统将会影响Norton的稳定性是不合理的。
    业界有人认为,先进杀毒软件的引擎设计已经日趋复杂,类如Norton这一类的厂商其产品的引擎应该已经覆盖了操作系统的各个层级,以提高防护能力。在一篇文档中有程序员提出有足够的信息认为Norton,Mcafee,趋势的产品自己修改了标准的系统相关协议,比如TCP/IP等,以达到所谓的完整防护的目的。NOD32的一篇官方文档,就指出,反病毒厂商有必要全面更新系统的诸多协议,以达到最快的速度和杀毒效果。

    二、病毒技术浅析

    要讨论怎样反病毒,就必须从病毒技术本身的讨论开始。正是所谓“知己知彼,百战不殆”。很难想象一个毫无病毒写作经验的人会成为杀毒高手。目前国内一些著名反病毒软件公司的研发队伍中不乏病毒写作高手。只不过他们将同样的技术用到了正道上,以毒攻毒。当今的病毒与DOS和Win 3.x时代下的从技术角度上看有很多不同。最大的转变是:引导区病毒减少了,而脚本型病毒开始泛滥。原因是在当今的操作系统下直接改写磁盘的引导区会有一定的难度(DOS则没有保护,允许调用INT13直接写盘),而且引导区的改动很容易被发现,并且微软在设计操作系统时加强了对引导区的程序行为管理,写一个完美的引导区病毒难度很大,所以很少有人再写了;而脚本病毒以其传播效率高且容易编写而深得病毒作者的青睐。但是最最落后的杀毒引擎也就是只基于静态代码的杀毒引擎都能干掉该种病毒(病毒库搞好就行)。

    要讨论的技术主要来自于二进制外壳型病毒(感染文件的病毒),并且这些技术大都和操作系统底层机制或386以上CPU的保护模式相关,值得研究。DOS下的外壳型病毒主要感染 16位的COM或EXE文件,由于DOS没有(文件和引导区)保护,它们能够轻松地进行驻留,减少可用内存(通过修改MCB链),修改系统代码,拦截系统服务或中断。而到了WIN9X和WINNT/2000时代,搞个运行其上的32位Windows病毒变得难了点。由于存在页面保护,你不可能修改系统的代码页(如果你强到连操作系统代码都能改,偶无话可说)。由于I/O许可位图中的规定,你也不能进行直接端口访问。在Windows中,你不可能像在 DOS里那样通过截获INT21H来拦截所有文件操作。总之,当你以一个用户态权限运行,你的行为就会受到操作系统严格的控制(在Win XP中,这种权限管理极为严格,分成了好几个等级)。Windows下采用的可执行文件格式和DOS下的EXE文件截然不同(普通程序采用PE,驱动程序采用LE格式),所以病毒的感染文件的难度增大了(PE和LE比较复杂,中间分了若干个节,如果感染错了,将导致文件不能继续执行)。当今病毒的新技术太多,随便介绍几个。

    1、系统核心病毒

    386及以上的X86 CPU实现了4个特权级模式(Windows只用到了其中两个),其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的用户程序使用,它们工作在用户态。运行于处理器核心态的代码,不受任何的限制,可以自由地访问任何有效地址,进行直接端口访问。而运行于用户态的代码则要受到处理器的诸多限制,它们只能访问映射其地址空间的页表项中规定的在用户态下可访问页面的虚拟地址,且只能对任务状态段(TSS)中I/O许可位图(I/O Permission Bitmap)中规定的可访问端口进行直接访问(此时处理器状态和控制标志寄存器EFLAGS中的IOPL通常为0,指明当前可以进行直接I/O的最低特权级别是Ring0)。以上的讨论只限于保护模式操作系统,像在DOS这种实模式操作系统里,则没有这些概念,其中的所有代码都可被看作运行在核心态。既然运行在核心态有如此之多的优势,那么病毒当然没有理由不想得到Ring0。处理器模式从Ring3向Ring0的切换发生在控制权转移时,有以下两种情况:访问调用门的长转移指令CALL,访问中断门或陷阱门的INT指令。现代操作系统通常使用中断门来提供系统服务,通过执行一条陷入指令完成模式切换。在X86处理器上,这条指令是INT;在Win 9X下是INT30(保护模式回调);在Linux下则是INT80;在Win NT/2000下是INT2E。用户模式的服务程序(如系统DLL)通过执行一个INTXX来请求系统服务,然后处理器模式将切换到核心态,工作于核心态的相应的系统代码将服务于此次请求,并将结果传给用户程序。

    在最新发布的Win XP SP2中,采用了“数据执行保护”(DEP)技术。这是一种基于处理器支持的内存页面保护技术,它将更为严格地控制用户访问的权限,它禁止在标记为数据存储的内存区域中执行代码。当某些程序或病毒尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码。

    2、驻留病毒
    驻留病毒是指那些在内存中寻找合适的页面并将病毒自身拷贝到其中且在系统运行期间能够始终保持病毒代码的存在。驻留病毒比那些直接感染(Direct-Action)型病毒更具隐蔽性,它通常要截获某些系统操作来达到感染传播的目的。进入核心态的病毒,可以利用系统服务来达到此目的。如CIH病毒,就通过调用一个由VMM导出的服务VMMCALL _PageAllocate在大于0XC0000000的地址上分配一块页面空间。而处于用户态的程序要想在程序退出后仍驻留代码的部分于内存中似乎是不可能的,因为无论用户程序分配何种内存都将作为进程占用资源的一部分,一旦进程结束,所占资源将立即被释放。所以我们要做的是分配一块进程退出后仍可保持的内存。

    另外,还可以通过修改系统动态连接模块(DLL)来进行驻留。Win 9X下系统DLL(如Kernel32.dll 映射至BFF70000)处于系统共享区域(2G-3G),如果在其代码段空隙中写入一小段病毒代码则可以影响其它所有进程。但Kernel32.dll 的代码段在用户态是只读的。所以,必须通过特殊手段修改其页保护属性。在Win NT/2000/XP系统里,DLL所在的页面被映射到进程的私有空间(如Kernel32.dll映射至77ED0000)中时,具有写时拷贝属性,即没有进程试图写入该页面时,所有进程将共享这个页面;而当一个进程试图写入该页面时,系统的页面错误处理代码将检查到该异常进程,并给它分配一个新页面,并拷贝原页面内容于其上,且更新进程的页表以指向新分配的页。这种共享内存的优化给病毒的写作带来了一定的麻烦,病毒不能象在Win 9X下那样仅仅修改Kernel32.dll一处代码便一劳永逸。它需要利用WriteProcessMemory,向每个进程映射Kernel32.dll的地址写入病毒代码,这样每个进程都会得到病毒体的一个副本,这被称为多进程驻留或每进程驻留(Muti-Process Residence or Per-Process Residence)。

    在如今的病毒设计中,那些传统的挂钩――捆绑方法并不很受欢迎,原因在于新的操作系统里,许多函数规则是不可预知的。所谓的”黑箱“设计,使得设计人员更偏爱系统级别的线程捆绑,或更直接的接管权限控制的方法。采用最复杂的线程捆绑技术,甚至可以使杀毒软件和防火墙得不到足够的信息来区分一个程序是否合法。更高级别的抢夺权方法,甚至可以结束所有杀毒软件的进程,包括卡巴斯基所采用的受保护的内存线程技术。

    普通病毒是通过将自身附加到宿主尾部(如此一来,宿主的大小就会增加),并修改程序入口点来使病毒得到击活。但现在不少病毒通过使用特殊的感染技巧,能够使宿主大小及宿主文件头上的入口点保持不变。附加了病毒代码,却使被感染文件大小不变听起来让人不可思议。其实,它利用了PE文件格式的特点:PE文件的每个节之间留有按簇大小对齐后的空洞,病毒体如果足够小,则可以将自身分成几份并分别插入到每个节最后的空隙中,这样就不必额外增加一个节,因而文件大小可以保持不变。著名的CIH病毒,正是运用这一技术的典型范例(它的大小只有1K左右)。

    病毒在不修改文件头入口点的前提下,要想获得控制权并非易事:入口点不变,意味着程序是从原程序的入口代码处开始执行的,病毒必须要将原程序代码中的一处修改为导向病毒入口的跳转指令。一些查毒工具通过扫描可执行文件头部的入口点域,如果发现它指向的地方不正常,即不在代码节而在资源节或重定位节中,则有怀疑文件感染了某种病毒。而病毒界中的EPO(入口点模糊)技术,则可以很好的对付这样的扫描,同时它还是反虚拟执行的重要手段。

    另外,值得一提的是现在不少病毒已经支持对压缩文件的感染。如Win32.crypto病毒就可以感染ZIP,ARJ,RAR,ACE,CAB等类型的压缩文件。这些病毒的代码中,含有对特定压缩文件类型解压并压缩的代码段,可以先把压缩文件中的内容解压出来,然后对合适的文件进行感染,最后再将感染后文件压缩回去并同时修改压缩文件头部的校验和。目前不少反病毒软件都支持扫描多种格式的压缩文件,但是对有些染毒的压缩文件无法杀除。

    目前,杀毒软件在对待加壳病毒的时候,表现比较差的是瑞星。可能是瑞星的杀毒引擎对加壳的程序不灵敏,瑞星自己甚至加壳了很多病毒放到病毒库里

    三、杀毒引擎的实现

    杀毒引擎目前主流有以下一些实现方式:虚拟机技术,实时监控技术,智能码标识技术,行为拦截技术。其中,后面两个为近年来出现的技术。采用智能码标识技术的目的是提高杀毒速度并且预防未知病毒,但就现实而言,除了东方卫士不成功的试验外,其余厂商并未开发完全基于该技术的引擎,Norton的开发人员认为:“没有足够的技术手段来实现这种杀毒理念。而行为拦截技术(或者别的什么智能杀毒技术)也是一种预防未知病毒的方法,与虚拟机技术相似,通过对程序行为的分析来判断其是否为病毒。

    对于未知病毒的判断,实际上代表着杀毒软件厂商在引擎研究方面的最高能力。业界公认,防止未知病毒是“代表研究水平的”。业界上,对于杀毒软件防止未知病毒能力是按照如下方法衡量的:以评测当日的杀毒软件最新版本为该厂商的供测试版本,未知病毒通常由以下途径得来:

    ⑴病毒作者提供。有些病毒作者在将自己的病毒发布前,也许为了炫耀技术,总爱送给一些业界的安全杂志供其评测(最佩服这种人)。

    ⑵专业研究实验室。大部分业界安全杂志都有自己的研究实验室,他们的研究人员会根据最新的趋势和技术手段及工具,编写一些病毒。一般情况下,这些病毒不会泄漏到网上。

    ⑶假病毒。一些类似于病毒行为的文件,程序等。测试的时候病毒库被置空(就是杀毒软件试图调用病毒库时采用程序方法向其返回一个空结果),在这种情况下进行测试。如果有人有兴趣,可以到病毒论坛上搞点新手写的小病毒(一般也就100-200行),弄上几十个拿自己的杀毒软件试一试,就会发现在平均状态下,从Norton病毒库被置空时起,对未知病毒判断能力还是挺强的。对于其他许多杀毒软件,就没有那么好远了,尤其在对付比较复杂的蠕虫病毒时,某些厂商的产品近乎全军覆没。
    下面对杀毒引擎最主要的两种技术――虚拟机和实时监控进行介绍。

    1、虚拟机
    虚拟机,在反病毒界也被称为通用解密器,已经成为反病毒软件中最重要的组成部分之一。杀毒引擎中的虚拟机,和那些诸如VMWare的“虚拟机”是有区别的。

    其实,对于虚拟机,其设计思想是有渊源可寻的。VMWare作为原操作系统下的一个应用程序,可以为运行于其上的目标操作系统创建出一部虚拟的机器,目标操作系统就象运行在单独一台真正机器上,丝毫察觉不到自己处于VMWare的控制之下。当在VMWare中按下电源键(Power On)时,窗口里出现了机器自检画面,接着是操作系统的载入,一切都和一台真正的计算机一样。至于Win XP,则是采用区域内存访问,来实现对16位程序的支持。 VM是一个完全由软件虚构出来的东西,以和真实电脑完全相同的方式来对应用程序所提出的需求进行响应。从某种角度来看,你可以将一部标准的PC的结构视为一套 API。这套API的元素包括硬件I/O系统,和以中断为基础的BIOS和MS-DOS。Win 9X常常以它自己的软件,来代理这些传统的API元素,以便能够对珍贵的硬件多重发讯。在VM上运行的应用程序认为自己独占整个机器,它们相信自己是从真正的键盘和鼠标获得输入,并从真正的屏幕上输出。稍被加一点限制,它们甚至可以认为自己完全拥有CPU和全部内存。

    查毒引擎中的虚拟机,并不是像VMWare的工作原理那样,为待查的可执行程序创建一个虚拟的执行环境,提供它可能用到的一切元素,包括硬盘,端口等,让它在其上自由发挥,最后根据其行为来判定是否为病毒。(当然这是个不错的构想,但考虑到其设计难度过大,需模拟元素过多且行为分析要借助人工智能理论,因而只能作为以后发展的方向。)就目前而言,卡巴斯基在这方面做得还可以。而Mcafee的新产品中,则加入了一种缓冲区溢出保护技术,本质上其实也是一种虚拟技术。查毒引擎的虚拟机是一个软件模拟的CPU,它可以象真正CPU一样取值,译码,执行,可以模拟一段代码在真正CPU上运行得到的结果。给定一组机器码序列,虚拟机就会自动从中取出第一条指令操作码部分,判断操作码类型和寻址方式以确定该指令长度,然后在相应的函数中执行该指令,并根据执行后的结果确定下条指令的位置,如此循环反复直到某个特定情况发生以结束工作,这就是虚拟机的基本工作原理和简单流程。

    设计虚拟机查毒的目的,就是为了对付加密变形病毒,虚拟机首先从文件中确定并读取病毒入口处代码,然后以上述工作步骤解释执行病毒头部的解密段(Decryptor),最后在执行完的结果(解密后的病毒体明文)中查找病毒的特征码。这里所谓的“虚拟”,并非是指创建了什么虚拟环境,而是指染毒文件并没有实际执行,只不过是虚拟机模拟了其真实执行时的效果。这就是虚拟机查毒基本原理。

    早期病毒没有使用任何复杂的反检测技术,如果拿反汇编工具打开病毒体代码,看到的将是真正的机器码。因而可以由病毒体内某处一段机器代码和此处距离病毒入口(注意不是文件头)偏移值,来唯一确定一种病毒。查毒时,只需简单的确定病毒入口并在指定偏移处扫描特定代码串。这种静态扫描技术对付普通病毒是万无一失的。

    随着病毒技术的发展,出现了一类加密病毒。这类病毒的特点是:其入口处具有解密子(Decryptor),而病毒主体代码被加了密。运行时首先得到控制权的解密代码将对病毒主体进行循环解密,完成后将控制交给病毒主体运行,病毒主体感染文件时会将解密子,用随机密钥加密过的病毒主体,和保存在病毒体内或嵌入解密子中的密钥一同写入被感染文件。由于同一种病毒的不同传染实例的病毒主体是用不同的密钥进行加密,因而不可能在其中找到唯一的一段代码串和偏移来代表此病毒的特征,似乎静态扫描技术对此即将失效。但是,因为不同传染实例的解密子仍保持不变机器码明文,所以如果应用特征码查毒技术,虽然有一定的误报风险(解密子中代码缺少病毒特性,同样的特征码也会出现在正常程序中),但仍不失为一种有效的方法。

    由于加密病毒还没有能够完全逃脱静态特征码扫描,所以病毒写作者在加密病毒的基础之上进行改进,使解密子的代码对不同传染实例呈现出多样性,这就出现了加密变形病毒。它和加密病毒非常类似,唯一的改进在于病毒主体在感染不同文件会构造出一个功能相同但代码不同的解密子,也就是不同传染实例的解密子具有相同的解密功能但代码却截然不同。比如,原本一条指令完全可以拆成几条来完成,中间可能会被插入无用的LJ代码。这样,由于无法找到不变的特征码,静态扫描技术就彻底失效了。在这种情况下,虚拟机技术将会派上用场。

    2、实时监控
    实时监控,其实并非什么新技术,早在DOS时代就出现了。在Windows下要实现实时监控决非易事,因为普通用户态程序是不可能监控系统的活动的,这也是出于系统安全的考虑。病毒实时监控普遍使用了驱动编程技术,让工作于系统核心态的驱动程序去拦截所有的文件访问。当然由于工作系统的不同,驱动程序无论从结构还是工作原理都不尽相同的,当然程序写法和编译环境更是千差万别了。上面提到的病毒实时监控,实质就是对文件的监控。除了文件监控外,还有各种各样的实时监控工具,都具有各自不同的特点和功用。现在流行的网络监控,邮件监控基本上是对文件监控的改进,革命性的改动没有。

    病毒实时监控,其实就是一个文件监视器。它会在文件打开,关闭,清除,写入等操作时检查文件是否是病毒携带者,如果是则根据用户的决定选择不同的处理方案,如清除病毒,禁止访问该文件,删除该文件或简单地忽略。这样就可以有效地避免病毒在本地机器上的感染传播,因为可执行文件装入器在装入一个文件执行时首先会要求打开该文件,而这个请求又一定会被实时监控在第一时间截获到,它确保了每次执行的都是干净的不带毒的文件从而不给病毒以任何执行和发作的机会。以上仅仅是病毒实时监控的主要工作过程,设计上还存在以下几个难点:

    ⑴驱动程序的编写不同于普通用户态程序的写作,难度很大。
    编写用户态程序时,你需要的仅仅就是调用一些熟知的API函数来完成特定目的,比如打开文件你只需调用CreateFile就可以了;但在驱动程序中,你将无法使用熟悉的CreateFile。在Win NT/2000下,你可以使用ZwCreateFile 或NtCreateFile(Native API),但这些函数通常会要求运行在某个IRQL(中断请求级)上,如果你对中断请求级或延迟/异步过程调用中非分页/分页内存的概念不清楚,那么你的驱动将很容易导致蓝屏死机。Ring0下的异常,将往往导致系统崩溃,因为它对于系统总是被信任的,所以没有相应处理代码去捕获这个异常。在Win NT下对KeBugCheckEx的调用将导致蓝屏的出现,接着系统将进行转储并随后重启。另外驱动程序的调试不如用户态程序那样方便,用象VC ++那样的调试器是不行的,你必须使用系统级调试器,如SoftIce,KD,TRW等。

    现今国内主要杀毒技术

     

    特征码技术:运用程序中某一段或几段64字节以下的代码作为判别程序病毒的主要依据,几乎所有国内杀毒软件都在用.

      复合特征码技术:下面给图, 因为本人艺术细胞原因 所以点到为止

      abcd 所有都在的情况下, 木马可以被杀到 不管有几个a 或者几个b

      虚拟机技术:卡巴运用的技术,它表现在穿壳能力的强大

      行为查杀技术:根据某些病毒会在计算机里面的行为作为依据(如在注册表内增加什么键值),满足三个以上就视为木马或病毒.

      启发式杀毒技术:运用病毒特有的结构,来检测病毒(如nod32)

      国内外部分杀毒软件的特点:

      金山:超级垃圾的杀毒软件,花哨东西多得要死,实际杀毒功能却属于世界数一数二地弱,如果不想中木马,你最好别装.它甚至连木马也杀不清

      江民或KV:跟金山差不多,稍微比它好点,但是也比较垃圾,它的技术都是买来经过二次改造,没什么特色.

      瑞星:个人认为是国内是国内出的最强地杀毒,经过分析,它有三套毒库

      瑞星的内存杀毒我们也搞不清楚内核机制,所以分析的只是现象:

      1、普通的木马病毒(不常见的),瑞星不进行内存特征码定义,,

      文件免杀了内存就免杀了

      2、瑞星的右键快捷查杀和运行主程序查杀,效果不一样,右键不杀不代

      表运行主程序不杀,有些内存杀的木马病毒,修改了运行主程序查杀的特

      征码,内存就免杀了。网络泛滥的木马病毒(如鸽子,密码神通,广外幽灵等),瑞星进行内存特征码定义,通常是多区段特征码定义,其中有些用免杀壳加密加花后,OD载入不杀,但运行后被杀

      这样看来感觉瑞星象是3套特征码定义,1是右键查杀,2是主程序运行查杀,

      3是内存查杀,我是这样分类的

      针对上述现象,瑞星内存免杀我们通常这样做,OD分段定位,先NOP入口点区段,仍被杀则NOP其他区段,直到不杀,找出内存特征码进行修改

      说明:A B C代表的是病毒特征码,括号()表示可能不存在

      关于OD加载入内存不杀,运行后被内存查杀的问题:

      OD加载的和真正的运行有区别,一些加壳的东西加了木马OD载入不杀内存,真正运行了就被杀,说明真正运行了内存中会还原某些代码,所以遇到加壳OD不杀,运行被杀的情况,平时我们遇到的木马,未加密加壳前在OD中是可以被杀和定位内存特征码的至于一种情况,如果木马未做任何处理的时候,就是一个原始木马,拿来OD载入不杀内存,运行了就杀,这种情况我没遇到过,如果你遇到了无壳的出现这种情况,基本上就是被一个内存免杀技术不过关的人修改过的,碰巧被你用了

      如果你在免杀过程中遇到了OD载入不杀,运行内存被杀的情况,请尝试修改

      特征码,而不是给它加花或加密,正确修改了内存特征码是可以完全内存免杀的

      以上就是黑客小熊所分析的瑞星,瑞星不是用来实时监控,是用来手动查杀内存用的.

      诺顿:它查杀的是PE文件头,就是那一串代码,有一个加壳程序可以把它打乱,高技术的甚至可以把它整个移走以免杀.

      卡巴斯基:国内外数一数二的杀毒软件,曾获世界第一的称号.它的优点就是穿壳能力墙(虚拟机技术),弱点是一见花指令就怕.免杀它一般是加花指令.

      NOD32:启发式杀毒技术,不再是单纯的特征码技术,就是运用一些木马程序特有的结构来判别是否木马,但是缺点是解密能力差,免杀它通常加一个壳再加一个花.

      Ewido:一款非常不错的杀木马软件,它的内存查杀和瑞星一样变态,而且穿花能力强,比起国内木马克星来说它不知道好多少倍.而且他加入了注册表查杀,免杀它要先过内存再加强壳

      运用软件进行端口及进程防御

      冰刃:用于查看隐藏端口,进程,服务等,是一个非常好的安全工具.

      端口关联查看器:看端口工具.

      木马辅助查找器:灰鸽子工作室出品,用于监视文件.

      Regmon注册表监视器:用来监视注册表.

      Filemon文件监视器,用来查看文件调用的所有DLL

    展开全文
  • 摘要:本文从“要学习培养的管理知识和技能”、“如何培养...前国泰安信息技术有限公司教育事业一、三部技术总监梁鹏远 从技术岗位走向管理岗位之前,要做好哪些准备工作?本文以软件研发人员转型为项目经理为例进行
  • 浅谈产品事业技术管理”思路

    千次阅读 2013-03-31 21:35:00
    浅谈产品事业技术管理”思路本系列文章由ex_net(张建波)编写,转载请注明出处。... 管理范围:合作单位、团队、以及我们自己的开发团队目标:走标准化技术规范、提升产品质量、确保工期可控意义:让多个
  • 2019新的一年已经到来,如何制定个人it工作计划呢? 下面是收集整理的it个人工作计划,欢迎阅读。 下手方向 其实无论你是否是IT行业都可以从以下5个方向入手。 写好年度总结的基本要点 年度工作总结时应本着...
  • 非常难得的 CMOS sensor 工作原理的深入技术科普

    万次阅读 多人点赞 2019-01-11 17:04:05
    由于只有接收到的信号强度达到某一个阈值时才有可能驱动模数转换电路工作,对每个像素来说,如果接收到的光子数量低于某个值就如同没有接收到一样,根本就不会产生输出信号。显然,由于感光面积大的像素比感光面积小...
  • 互联网公司的技术体系

    千次阅读 热门讨论 2016-09-29 23:40:25
    互联网,是个较为明确且范围有限的概念。因此,互联网技术相对也是有限的,互联网公司的技术体系也是有限的。 站得更高一点看,它也就“那么点技术”。
  • ZigBee技术

    千次阅读 2014-06-25 09:32:13
    ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的...
  • 中科院计算所在可信大数据软件技术方面的研究工作.doc 【本文doc文档】 中科院计算所在可信大数据软件技术方面的研究工作.ppt 【本文ppt演讲稿】 PS:前段时间接到任务,对中科院计算所在可信大数据软件技术方面的...
  • DMR技术白皮书

    千次阅读 2015-11-25 20:34:23
    但模拟技术已受到来自其自身技术以及政策上的限制,其主要限制包括电池使用寿命短、语音质量(在覆盖范围边缘时)欠佳、通信和集成数据应用程序低效等。此外,模拟无线通讯用户面临的各种频谱限制,导致了通信拥堵与...
  • 一位10年Java工作经验的架构师聊Java和工作经验

    万次阅读 多人点赞 2015-09-10 13:44:26
    黄勇( 博客),从事近十年的 JavaEE 应用开发工作,现任阿里巴巴公司系统架构师。...热爱技术交流,乐于分享自己的工作经验。著有《架构探险——从零开始写Java Web框架》一书。 我的十年技术之路 CSDN:
  • Atitit 互联网 技术公司的组织架构 事业 分公司     1. 常见组织结构形式包括中央集权、分权、直线以及矩阵式等。 1 1.1. 组织架构类型分为:有限公司制、子公司制、连锁制、事业制、分公司制。 1 2. ...
  • DDR3和DDR2和DDR的工作原理及技术区别

    千次阅读 2013-02-28 10:10:53
    由于DDR2的数据传输频率发展到 800MHz时,其内核工作频率已经达到了200MHz,因此,再向上提升较为困难,这就需要采用新的技术来保证速度的可持续发展性。另外,也是由于速度 提高的缘故,内存的地址/命令与控制总线...
  • 技术高手的创意

    千次阅读 2009-08-25 08:06:00
    技术高手到图书高手易水寒本文由《Windows Server2008魔法学院———奠基术》一书作者提供 目前,读者考虑一本书是否值得购买的主要因素之一,往往是作者的技术功底。确实,有着深厚技术积累的作者往往能写出有...
  • 非接触式通信技术之RFID

    千次阅读 2011-05-19 10:48:00
     RFID射频识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,可工作于各种恶劣环境。RFID技术可识别高速运动物体并可同时识别多个标签,操作快捷方便。 ...
  • 关于做好2010年上半年计算机...1号)和河南省人事厅、河南省信息产业厅《转发人事、信息产业〈关于印发“计算机技术与软件专业技术资格(水平)考试暂行规定”和“计算机技术与软件专业技术资格(水平)考
  • 不断提升服务能力和监管水平,更好地满足人民群众高品质雏形需求,在2019年11月交通运输印发了《全国高速公路视频联网工作实施方案》和《全国高速公路视频云联网技术要求》。 在收到通知的第一时间,我们团队认真...
  • 不懂技术 如何管理好研发部门?

    万次阅读 2011-03-06 18:34:00
    ——“最佳提问者与解答者”评选各位职场高手,我在一家中小企业工作,从销售员做到了副总,目前主要负责销售部和技术部的管理工作,这两个部门是公司最主要的两大部门,技术部负责公司的新产品开发,但长年以来管理...
  • 项目管理之---项目范围蔓延

    千次阅读 2012-07-17 09:06:47
    一、项目管理中,什么是范围蔓延...特征蔓延:不受控制地增加技术特征到一个项目中。你本来想更好更出色的完成项目,但你不断增加新的想法...可能会失去宏观上对项目的把握,反而失败。 二、项目范围蔓延案例: 公司
  • 计算机科学与技术专业:主要学什么? 本文主要包括如下内容: 程序员职位要求 CS 专业课程列表 ...新零售技术事业群-java开发-淘系技术部 https://job.alibaba.com/zhaopin/position_detail.htm?positionId=...
  • 软件测试工程师工作总结

    万次阅读 多人点赞 2018-04-18 21:02:05
    1、为什么要在一个团队中开展软件测试工作? 因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程...
  • 团队建设之做好技术团队管理

    千次阅读 2012-05-30 15:19:18
    All Rights Reserved !  做过团队管理,知道团队管理的麻烦,所以收集资料...经常看到有人问程序员适合做管理吗,或者手底下有牛人比我技术更好怎么办,或者感叹一下做管理好难啊之类的。同时,相当大的一部分程
  • 如何进行软件技术管理?

    千次阅读 2019-06-11 17:58:00
    这个问题其实来源于一次面试,在聊完一堆的技术架构之后,面试官抛出一个问题:“你是怎么进行研发管理的工作的?”当时我的回答是:“主要是应用Scrum来进行管理。”后续的情况不细说,但是我觉得我这句话来概括...
  • 联合国工作机会,面向中国!!!

    千次阅读 2006-02-14 09:19:00
    联合国工作机会,招中国的原文URL:http://www.un.org/chinese/employment.htm原文内容:
  • 计算机技术与软件专业技术资格...这是由国家人力资源和社会保障、工业和信息化领导下的国家级考试,其目的是,科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。 原
  • 售前工作职责和流程

    万次阅读 2012-06-04 16:12:17
    售前人员应该是项目开发人员与业务销售人员的桥梁,在业务销售人员眼中,售前人员扮演的是技术人员或技术专家的角色,而在项目实施中的开发人员眼中,售前人员是专注技术的销售人员,在用户眼中,售前人员,是代表...
  • 离线光学字符识别(OCR)技术简介

    千次阅读 2011-10-18 16:09:17
    转自:http://hi.baidu.com/whynotdo/blog/item/214cb04484b7f22ccffca3d7.html  所谓OCR (Optical Character Recognition光学字符识别)技术,是指电子设备(例如扫描仪或数码相机)检

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,808
精华内容 38,723
关键字:

技术部的工作范围