逆向工程实验报告

合集下载

逆向工程训练实验报告(3篇)

逆向工程训练实验报告(3篇)

第1篇一、实验目的本次实验旨在通过逆向工程的方法,深入了解软件的内部结构和运行机制,提高对编程语言的掌握程度,增强程序调试和问题解决的能力。

通过本次实验,我学会了如何使用逆向工程工具对程序进行解构和分析,为今后的软件开发和问题排查打下坚实的基础。

二、实验内容1. 实验环境- 操作系统:Windows 10- 逆向工程工具:OllyDbg、IDA Pro- 被分析程序:一款简单的计算器软件2. 实验步骤(1)导入程序:使用OllyDbg或IDA Pro打开被分析程序,将其加载到调试器中。

(2)分析程序入口:找到程序的入口点,即程序的开始执行位置。

(3)分析函数调用:观察程序中各个函数的调用关系,了解程序的整体结构。

(4)分析关键代码段:针对程序中的关键代码段,进行详细分析,包括变量、数据结构、算法等。

(5)分析程序流程:根据函数调用关系和关键代码段,绘制程序流程图,了解程序的执行过程。

(6)分析程序漏洞:在分析过程中,注意查找程序中可能存在的漏洞,如缓冲区溢出、整数溢出等。

(7)总结实验结果:对实验过程中发现的问题进行总结,并提出相应的解决方案。

3. 实验结果(1)程序结构:经过分析,该计算器软件主要由以下几个模块组成:- 输入模块:负责获取用户输入的数值。

- 运算模块:负责进行加、减、乘、除等运算。

- 输出模块:负责将运算结果输出到屏幕。

(2)关键代码段:在运算模块中,发现以下关键代码段:```cdouble result = 0.0;char operator = '+';while (scanf("%lf", &num) != EOF) {if (operator == '+') {result += num;} else if (operator == '-') {result -= num;} else if (operator == '') {result = num;} else if (operator == '/') {result /= num;}operator = getchar();}printf("Result: %lf\n", result);```(3)程序漏洞:在分析过程中,发现以下漏洞:- 缓冲区溢出:在读取用户输入时,未对输入长度进行检查,可能导致缓冲区溢出。

软件逆向工程实验报告

软件逆向工程实验报告

一、实验目的通过本次实验,使学生掌握软件逆向工程的基本原理、方法和工具,提高对软件程序的理解和分析能力,为后续的软件安全、漏洞挖掘和软件维护等方向的学习打下基础。

二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 逆向工程工具:IDA Pro4. 源代码:C语言编写的简易计算器程序三、实验步骤1. 编译源代码首先,使用Visual Studio 2019将C语言编写的简易计算器程序编译成可执行文件。

2. 加载可执行文件在IDA Pro中打开编译生成的可执行文件,开始逆向工程分析。

3. 分析程序结构观察程序的结构,了解程序的入口点、函数调用关系、数据结构等。

4. 反汇编代码将程序代码反汇编,查看汇编指令和寄存器使用情况。

5. 分析函数逻辑对关键函数进行逐行分析,理解函数的功能和实现逻辑。

6. 分析变量和参数分析程序中的变量和参数,了解程序的数据处理过程。

7. 恢复源代码尝试使用IDA Pro的插件或工具将反汇编代码恢复成C语言源代码。

8. 总结实验结果总结实验过程中遇到的问题、解决方法以及实验心得。

四、实验结果与分析1. 程序结构分析通过分析程序结构,发现该简易计算器程序主要由主函数(main)和辅助函数(如:add、sub、mul、div等)组成。

主函数负责处理用户输入,调用相应的辅助函数进行计算,并将结果显示在屏幕上。

2. 函数逻辑分析以加法函数(add)为例,分析其实现逻辑如下:```add:mov eax, [ebp+8] ; 将第一个参数(被加数)的值存储在eax寄存器add eax, [ebp+12] ; 将第二个参数(加数)的值加到eax寄存器mov [ebp+16], eax ; 将计算结果存储在内存地址[ebp+16]处ret```该函数首先将第一个参数的值存储在eax寄存器中,然后将其与第二个参数的值相加,并将结果存储在内存地址[ebp+16]处。

逆向工程技术实习报告

逆向工程技术实习报告

一、实习背景随着科技的飞速发展,逆向工程技术在各个领域得到了广泛的应用。

为了提高自身的专业技能,培养实践能力,我于2021年7月至8月参加了逆向工程技术实习。

本次实习使我深入了解了逆向工程技术的原理、方法和应用,提高了我的专业技能。

二、实习目的1. 掌握逆向工程技术的理论知识,了解其发展现状和应用领域。

2. 熟悉逆向工程软件的操作,提高实际应用能力。

3. 学会逆向工程技术的数据处理和模型重建方法。

4. 培养团队协作和沟通能力。

三、实习内容1. 逆向工程原理及方法实习期间,我学习了逆向工程的基本原理和方法。

逆向工程主要包括数据采集、数据处理、模型重建和逆向设计四个阶段。

数据采集阶段,主要采用三维扫描仪获取实物模型的点云数据;数据处理阶段,对采集到的点云数据进行预处理,包括降噪、去噪、分割等;模型重建阶段,通过曲面重建技术将点云数据转换为曲面模型;逆向设计阶段,根据重建的曲面模型进行修改和优化,以满足实际需求。

2. 逆向工程软件操作实习期间,我学习了逆向工程软件的操作,包括ZBrush、Rhino、SolidWorks等。

通过实际操作,我掌握了软件的基本功能,如曲面建模、曲线建模、网格编辑等。

同时,我还学会了如何利用软件进行逆向设计,提高了我的实际应用能力。

3. 数据处理与模型重建在实习过程中,我学习了数据处理和模型重建的方法。

首先,对采集到的点云数据进行预处理,包括降噪、去噪、分割等,提高数据的准确性;然后,利用曲面重建技术将点云数据转换为曲面模型,通过编辑和优化曲面,满足实际需求。

4. 团队协作与沟通在实习过程中,我与团队成员共同完成了多个逆向工程项目。

通过团队协作,我们解决了项目中的各种问题,提高了工作效率。

同时,我还学会了与团队成员有效沟通,提高了自己的沟通能力。

四、实习成果1. 熟练掌握了逆向工程的基本原理和方法。

2. 熟练掌握了逆向工程软件的操作,提高了实际应用能力。

3. 学会了数据处理和模型重建的方法,为今后的工作打下了基础。

逆向工程实习报告

逆向工程实习报告

逆向工程实习报告一、实习背景与目的随着科技的飞速发展,逆向工程作为一种重要的技术手段,在各个领域得到了广泛的应用。

为了更好地了解逆向工程的基本原理和实际操作过程,提高自己的实践能力,我参加了为期一个月的逆向工程实习。

本次实习的主要目的是学习逆向工程的基本概念、方法和技术,通过实际操作,掌握逆向工程在实际工程中的应用,培养自己的创新意识和团队协作能力。

二、实习内容与过程1. 实习前的准备在实习开始前,我们参加了为期一周的理论学习,学习了逆向工程的基本概念、方法和技术。

通过学习,我们对逆向工程有了更深入的了解,为接下来的实习操作打下了坚实的基础。

2. 实习过程实习过程中,我们分为若干小组,每组成员共同完成一个逆向工程项目。

我所在的小组选择了一个汽车零部件作为逆向工程的对象。

(1)实物测绘我们首先对汽车零部件进行了实物测绘,通过测量得到了零部件的尺寸、形状等关键信息。

在这个过程中,我们学会了使用测量工具,如卡尺、量角器等,并掌握了测绘的基本技巧。

(2)建立三维模型根据测绘得到的数据,我们利用计算机辅助设计(CAD)软件,建立了零部件的三维模型。

在这个过程中,我们学会了如何将实物的二维信息转换为三维模型,并进行了模型的优化和调整。

(3)模型分析与改进通过对三维模型的分析,我们发现了零部件设计中存在的问题,如结构不合理、强度不足等。

针对这些问题,我们提出了改进方案,并对模型进行了修改。

(4)原型制作与测试根据改进后的三维模型,我们利用快速成型技术制作了零部件的原型。

然后,我们对原型进行了功能测试和性能测试,验证了改进方案的可行性。

三、实习收获与反思通过本次实习,我深刻体会到了逆向工程在实际工程中的重要性。

实习过程中,我们不仅学到了逆向工程的基本知识和技能,还培养了团队协作和创新意识。

同时,我也认识到逆向工程并非简单的复制和模仿,而是需要结合实际情况进行分析和改进。

四、总结总之,本次逆向工程实习让我受益匪浅。

逆向工程实习报告

逆向工程实习报告

一、实习背景随着科技的发展,逆向工程在各个领域中的应用越来越广泛。

逆向工程(Reverse Engineering)是指通过对现有产品进行剖析、分析和建模,从而获得产品设计的原理和结构信息。

为了更好地了解逆向工程的应用和发展,我选择了参加这次逆向工程实习,以期在实践中提升自己的专业技能。

二、实习内容1. 实习单位及时间实习单位:XX科技有限公司实习时间:2021年7月1日至2021年8月31日2. 实习项目及任务(1)项目名称:某型汽车零件逆向工程(2)任务描述:1. 对汽车零件进行实物测量,获取其尺寸和形状信息;2. 利用三维扫描仪对汽车零件进行扫描,获取其表面数据;3. 对扫描数据进行预处理,包括降噪、去噪等;4. 利用逆向工程软件对扫描数据进行曲面重建,生成三维模型;5. 对生成的三维模型进行优化,确保其精度和实用性;6. 将优化后的三维模型用于后续的设计和制造。

3. 实习过程(1)前期准备在实习开始前,我首先了解了逆向工程的基本原理和流程,包括实物测量、三维扫描、数据处理、曲面重建等。

同时,我还学习了相关的软件操作,如CNC加工中心、SolidWorks、UG等。

(2)实物测量在实习过程中,我参与了汽车零件的实物测量工作。

通过对零件的尺寸和形状进行测量,获取了其基本参数,为后续的三维扫描和数据处理提供了基础。

(3)三维扫描在实物测量完成后,我利用三维扫描仪对汽车零件进行了扫描。

扫描过程中,我注意了以下几点:1. 扫描仪与零件的距离和角度要适中,以保证扫描数据的准确性;2. 扫描过程中要保证扫描仪稳定,避免因抖动导致数据误差;3. 扫描时要覆盖零件的所有表面,确保数据的完整性。

(4)数据处理扫描完成后,我利用逆向工程软件对扫描数据进行预处理。

预处理主要包括降噪、去噪等操作,以提高数据的准确性。

(5)曲面重建在预处理完成后,我利用逆向工程软件对扫描数据进行曲面重建。

重建过程中,我注意了以下几点:1. 选择合适的重建算法,以保证重建结果的准确性;2. 优化重建参数,如网格密度、曲面质量等;3. 对重建结果进行修正,如填补空洞、消除噪声等。

逆向工程实验报告

逆向工程实验报告

逆向工程实验报告本次实验主要是对逆向工程的学习和应用。

逆向工程是一种通过分析一个系统或产品的结构和工作原理,来还原其设计、生产和制造的技术手段。

它的应用十分广泛,包括软件、硬件、机械、电子等领域。

在本次实验中,我们主要通过对一个简单的二进制程序的分析,来了解逆向工程的主要思想和基本技术。

实验环境和工具本次实验使用的操作系统是Windows 10,主要工具有IDA Pro和OllyDbg。

IDA Pro 是一个在逆向工程领域广泛应用的二进制代码分析工具,它可以将二进制程序转化成汇编代码,并提供调试和反汇编功能。

OllyDbg是一个Windows平台下,功能强大的动态调试器,它可以对正在运行的程序进行调试,并提供反汇编和实时内存查看等功能。

实验步骤1.运行二进制程序并观察其行为我们首先运行了一个名为CrackMe.exe的二进制程序,并观察程序的启动界面。

从启动界面可以看出该程序是一个密码破解工具,需要输入一个正确的密码才能解锁。

2.反汇编程序代码接着我们使用IDA Pro对该程序进行反汇编,将其转化成可读的汇编代码。

我们可以看到程序的逻辑十分简单,主要是读取用户输入的密码,然后与一个预先设定的密码进行比较。

如果输入的密码和预设的密码一致,则会输出一段恭喜信息。

否则则会提示密码错误并退出程序。

3.使用OllyDbg进行调试为了更加深入地了解程序的行为,我们使用OllyDbg对程序进行调试,并查看程序的状态和运行轨迹。

我们可以看到,程序在启动的时候会首先调用MessageBox函数,弹出提示用户输入密码的对话框。

如果用户输入的字符串长度不为0,则会调用与字符串比较的函数,判断输入的字符串是否正确。

如果字符串正确,则会返回到提示窗口中,输出“Congratulations! You have entered the correct password. ”的信息。

4.修改程序为了更好地理解逆向工程的应用,我们试图修改程序的行为,即尝试绕过输入正确密码的操作,直接进入正确密码的输出。

逆向工程报告

逆向工程报告

逆向工程报告一、报告概述本报告旨在对某社交软件进行逆向工程分析,其中包括该软件的功能模块、技术实现原理及其脆弱性。

该社交软件的代码基于Java开发,其中主要涉及了Socket通信、Java反射、消息队列等技术,同时也涉及到数据备份和恢复等方面。

二、软件分析1. 功能模块该社交软件的功能模块主要包括用户登录、添加好友、消息发送等。

其中用户登录模块采用了加密传输方式,但是由于弱加密算法,导致该模块存在安全风险。

添加好友模块采用了Java反射技术,使得该模块可以绕过权限检查。

消息发送模块采用了消息队列技术,提高了消息传递效率。

2. 技术实现原理该软件代码基于Java开发,采用了许多Java技术,如Socket通讯、Java反射等。

其中,Socket通讯是该软件实现客户端和服务器端通信的重要技术手段,通过TCP协议实现通讯过程中数据的可靠传输。

Java反射是该软件实现动态加载类和方法的基础技术,其主要实现原理是通过Class.forName()方法加载类,然后通过Class对象的getMethod()方法获取方法,再通过invoke()方法调用方法。

3. 脆弱性分析在逆向工程分析中,我们还发现该软件存在一些安全脆弱性,如用户登录模块采用的弱加密算法,导致用户密码被盗取的风险较高;添加好友模块采用的Java反射技术,存在权限绕过和代码注入的风险;消息发送模块采用的消息队列技术,如果没有进行适当的身份验证和消息加密,可能会导致消息泄露和篡改的风险。

三、结论与建议通过对该社交软件进行逆向工程分析,我们得出了该软件的功能模块、技术实现原理及其脆弱性等关键信息。

针对脆弱性问题,建议开发人员应加强对用户密码的加密处理,合理使用Java反射技术,确保代码的安全性;同时对消息传递进行适当的身份验证和消息加密,以保证数据的机密性和完整性。

逆向加工实训报告

逆向加工实训报告

一、实训目的本次逆向加工实训旨在通过实际操作,加深对逆向工程和加工原理的理解,提高动手实践能力,掌握逆向工程的基本流程和关键技术。

通过实训,使学生能够熟练运用逆向工程软件进行数据采集、处理和建模,并能够运用加工设备完成产品的加工制作。

二、实训环境实训地点:XXX学院机械工程实验室实训设备:逆向工程扫描仪、逆向工程软件、三维建模软件、CNC加工中心、加工工具等实训时间:2023年X月X日至2023年X月X日三、实训原理逆向工程(Reverse Engineering,简称RE)是指通过分析实物产品的结构、尺寸、功能等信息,重建其三维模型和设计参数的过程。

逆向加工是逆向工程的重要组成部分,它将逆向工程得到的三维模型进行加工,以实现产品的实体化。

四、实训过程1. 数据采集:使用逆向工程扫描仪对实物产品进行扫描,采集其表面点云数据。

2. 数据处理:将采集到的点云数据进行预处理,包括去噪、滤波、分割等,以提高数据质量。

3. 三维建模:利用逆向工程软件将处理后的点云数据转化为三维模型,进行表面光顺、简化等操作。

4. 模型修正:根据实际情况对三维模型进行必要的修正,如去除模型中的多余部分、调整尺寸等。

5. CNC编程:使用CNC编程软件根据三维模型生成加工路径和刀具轨迹。

6. 加工制作:将CNC编程生成的加工路径和刀具轨迹导入CNC加工中心,进行产品加工。

五、实训结果1. 成功采集并处理了一款实物产品的表面点云数据。

2. 利用逆向工程软件重建了该产品的三维模型,并对模型进行了修正。

3. 生成了CNC编程文件,并成功导入CNC加工中心。

4. 完成了产品的加工制作,达到了预期效果。

六、实训总结1. 通过本次实训,掌握了逆向工程的基本流程和关键技术,提高了动手实践能力。

2. 了解了逆向工程在产品研发、维修、改进等方面的应用。

3. 发现了在逆向工程过程中存在的问题,如数据采集精度、数据处理效率等,为今后的实训和实际应用提供了改进方向。

逆向工程实习报告

逆向工程实习报告

逆向工程实习报告第一篇:逆向工程实习报告逆向工程实习报告M0811 高略群通过这一星期的逆向工程实习,本人对逆向工程有了初步的了解。

逆向工程(Reverse Engineering,RE)是对产品设计过程的一种描述。

在工程技术人员的一般概念中,产品设计过程是一个从无到有的过程:设计人员首先构思产品的外形、性能和大致的技术参数等,然后利用CAD技术建立产品的三维数字化模型,最终将这个模型转入制造流程,完成产品的整个设计制造周期。

这样的产品设计过程我们可以称之为“正向设计”。

逆向工程则是一个“从有到无”的过程。

简单地说,逆向工程就是根据已经存在的产品模型,反向推出产品的设计数据(包括设计图纸或数字模型)的过程。

随着计算机技术在制造领域的广泛应用,特别是数字化测量技术的迅猛发展,基于测量数据的产品造型技术成为逆向工程技术关注的主要对象。

通过数字化测量设备(如坐标测量机、激光测量设备等)获取的物体表面的空间数据,需要经过逆向工程技术的处理才能获得产品的数字模型,进而输送到CAM系统完成产品的制造。

因此,逆向工程技术可以认为是“将产品样件转化为CAD模型的相关数字化技术和几何模型重建技术”的总称。

逆向工程的实施过程是多领域、多学科的协同过程。

从图1中我们可以看出,逆向工程的整个实施过程包括了测量数据的采集/处理、CAD/CAM系统处理和融入产品数据管理系统的过程。

因此,逆向工程是一个多领域、多学科的系统工程,其实施需要人员和技术的高度协同、融合。

逆向工程在CAD/CAM体系中的应用:逆向工程技术并不是孤立的,它和测量技术、CAD/CAM技术有着千丝万缕的联系。

从理论角度分析,逆向工程技术能按照产品的测量数据建立与现有CAD/CAM 系统完全兼容的数字模型,这是逆向工程技术的最终目标。

但凭借目前人们所掌握的技术,包括工程上的和理论上的(如曲面建模理论),尚无法满足这种要求。

特别是针对目前比较流行的大规模“点云”数据建模,更是远没有达到直接在CAD系统中应用的程度。

认识逆向工程实验报告(3篇)

认识逆向工程实验报告(3篇)

第1篇一、实验背景随着信息技术的飞速发展,软件系统和硬件设备在各个领域得到了广泛应用。

然而,在软件开发过程中,由于设计者可能出于商业机密、技术限制或其他原因,对软件系统的内部结构和实现细节进行隐藏。

逆向工程作为一种重要的技术手段,可以帮助我们理解、分析和复现这些系统的内部工作原理,从而为系统改进、漏洞挖掘、安全评估等提供支持。

本实验旨在通过逆向工程的基本方法,认识并掌握逆向工程的基本流程和技术要点,为后续的深入学习和应用打下基础。

二、实验目的1. 理解逆向工程的基本概念和意义。

2. 掌握逆向工程的基本流程和方法。

3. 熟悉逆向工程工具的使用。

4. 培养逆向分析、漏洞挖掘和系统复现的能力。

三、实验内容1. 逆向工程基本概念逆向工程是指通过分析已有的软件系统或硬件设备,恢复其设计意图、实现细节和功能的过程。

逆向工程通常包括以下几种类型:(1)代码逆向:分析源代码,了解其功能、结构和算法。

(2)二进制逆向:分析可执行文件,恢复其功能、结构和算法。

(3)硬件逆向:分析硬件设备,了解其电路、结构和功能。

2. 逆向工程基本流程逆向工程的基本流程如下:(1)目标选择:确定逆向工程的对象,如软件、硬件等。

(2)信息收集:收集目标系统的相关信息,如版本、依赖库等。

(3)分析:对目标系统进行静态和动态分析,了解其结构和功能。

(4)解密与反汇编:对加密或保护过的目标系统进行解密和反汇编。

(5)理解与重构:理解目标系统的设计意图和实现细节,进行重构。

(6)验证与测试:验证重构后的系统是否与原系统一致,进行测试。

3. 逆向工程工具常用的逆向工程工具有:(1)静态分析工具:IDA Pro、Ghidra、OllyDbg等。

(2)动态分析工具:WinDbg、WinDbgX、Fiddler等。

(3)反汇编工具:NASM、FASM、GAS等。

(4)调试工具:OllyDbg、WinDbg、Ghidra等。

四、实验步骤1. 选择一个简单的可执行文件作为实验对象。

逆向工程实验总结

逆向工程实验总结

逆向工程实验总结《逆向工程实验总结》做完这个逆向工程实验,整体的感受就像是一场在神秘迷宫里的探索之旅。

一开始的时候,真的是一头雾水,就像摸着黑在走路,完全不知道方向在哪里。

一、具体收获1. 工具的运用- 在这个实验里,我学会了使用一系列逆向工程的工具。

例如那个反汇编工具,一开始看到那些密密麻麻的代码就晕乎,但是经过不断地摸索,开始理解一些基本的汇编指令了。

我还记得刚开始用的时候,不明白那些寄存器的值代表什么,对“push”和“pop”指令也是一知半解。

后来通过反复调试,发现原来“push”是把数据推到堆栈里,就像是把东西放进一个盒子里储存起来,而“pop”就是再把它取出来。

这让我对计算机底层的内存操作有了很直观的认识。

2. 程序结构分析- 对程序的结构也有了更深入的理解。

逆向工程让我能够看到一个程序的组成部分,哪些是函数入口,哪些是循环结构,哪些是判断语句。

就好比拆解一个机械装置一样,把一个看似整体的软件分解成一个个小的零件,然后研究每个零件的功能和它们之间的协作关系。

3. 代码逻辑还原- 还原代码逻辑真是个很有挑战性的任务。

我得从汇编语言一步一步地推测出原来高级语言可能的逻辑。

这就像考古学家通过一些碎片去还原一个古代器物一样,要根据蛛丝马迹进行大胆的推测和小心的求证。

我遇到过这样一个情况,一个函数里面有好几个跳转指令,我开始怎么都弄不明白它到底在干什么,后来通过给变量赋不同的值来跟踪程序流程,才发现原来是根据输入参数的不同范围来执行不同的操作。

二、重要发现- 标志位的重要性:标志位在逆向工程中就像是信号灯一样。

在分析一段比较复杂的跳转代码的时候,我发现程序的走向是根据标志位的值来决定的。

比如说,当进位标志位CF为1或者为0时,程序会跳转到不同的地方。

这个发现让我在分析类似有条件跳转的代码时,首先就关注相关的标志位的状态。

现在想想,如果一开始就忽视了标志位,很多代码逻辑就根本没法弄明白。

这是我在这个实验里非常重要的一个发现,一定要特别标注出来。

逆向工程实习报告(模板)

逆向工程实习报告(模板)

长江大学逆向工程实习报告姓名:班级:学号:目录1、三维扫描仪的工作原理及操作步骤;2、三维打印机的工作原理及操作步骤;3、实物模型的零件图绘制;4、实物模型的立体图绘制。

产品三维扫描实验一、实验目的1、了解逆向工程的基本流程,并理解实物表面三维数字化在逆向设计中的重要性。

2、了解VIVID9i三维扫描仪原理。

3、熟练掌握VIVID9i三维激光扫描仪的操作方法和步骤。

二、实验原理自己查资料。

三、实验主要仪器设备1、VIVID9i三维激光扫描仪2、高档微机四、实验要求通过三维扫描仪对产品进行扫描,独立完成产品、模型的外观点云数据采集,得到产品的外观点云数据。

五、实验内容逆向工程简介(Reverse Engineering 简称RE)自己查资料六、仪器介绍型号:VIVID9i 厂商:柯尼卡美能达(Konica Minolta)精度:0.05mm 测量距离:800~1000mm面板介绍:镜头,激光发射孔,操作面板,数据线、电源线接入面板,底座微距(Tele)焦距f=25mm镜头中距(Mid)焦距f=14mm远距(Wild)焦距f=8mm七、实验步骤自己查资料八、注意事项1、将三维扫描仪正确放在三角支架上,(详细操作见支架使用说明),连接电源线和数据线。

2、取下镜头盖,根据被扫描物体大小确定镜头类型,镜头对准需要扫描的物体,并与水平成15º角。

3、插好软件锁,并依次开启扫描仪和电脑,然后启动扫描软件(Polygon Editing Tool)。

4、开启扫描软件,如第一次进行扫描需进行一些参数设置,选择所用扫描仪型号。

5、对扫描结果进行针对性删减,保留准确数据。

九、实验结果得到完整的***(扫描物体)外观点云数据。

十、实验小结通过本次实验,对产品扫描有一定的认识,并能熟练操作三维扫描仪,了解产品扫描的实际意义。

三维立体快速成型实验一、实验目的1、了解Z510快速成型机的工作原理2、掌握快速成型机的操作方法3、了解成型产品特性及后期处理工艺二、试验仪器1、三维立体快速成型机2、高档微机三、实验原理自己查资料四、仪器介绍1、快速成型技术相关介绍:快速成型是一种用材料逐层或逐点堆积,成型零件的技术,20世纪80年代,快速成型技术问世(又简称RP技术),综合了机械工程,CAD,数控技术和材料技术,可自动、直接、高速、精确的将设计思想转变成具有一定功能的实体模型,从而可以方便进行快速评估,方案修改和功能试验。

逆向工程实验报告

逆向工程实验报告

《逆向工程技术》课程期末大作业沐浴露外壳的三维扫描及逆向建模一、背景意义逆向工程技术不是传统意义上的“仿制”,而是综合应用现代工业设计的理论方法、生产工程学、材料工程学和有关专业知识,进行系统得地分析研究,进而快速开发制造出高附加值、高技术水平的新产品。

该项项技术与快速成型技术相结合,可以实现产品的快速三维拷贝,并经过重新建模修改或进行快速成型工艺参数的调整,还可以实现零件或模型的变异复原。

逆向工程源于商业及军事领域中的硬件分析。

其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。

逆向工程被广泛地应用到新产品开发和产品改型设计、产品仿制、质量分析检测等领域,它的作用是:1、缩短产品的设计、开发周期,加快产品的更新换代速度;2、降低企业开发新产品的成本与风险;3、加快产品的造型和系列化的设计;4、适合单件、小批量的零件制造,特别是模具的制造,可分为直接制模与间接制模法。

随着工业技术水平的提升以及生活水准的提高,任何通用性产品在消费者对于高品质的要求下,功能上的需求已不再是赢得市场竞争力的唯一条件。

所以新产品开发过程中的另一条重要路线就是样件的反求。

反求工程技术又称逆向工程技术(Reverse Engineering, RE)。

二、产品分析分析扫描对象(零件)的材质、颜色、形状、主要用途;扫描策略的制定;(例如是否需要喷粉处理,为何选用桌面扫描仪等)1.零件分析沐浴露外壳的材质为高密度聚乙烯(HDPE),高密度聚乙烯树脂可采用注射、挤出、吹塑和旋转成型等方法成型塑料制品。

采用注射成型可成型出各种类型的容器、工业配件、医用品、玩具、壳体、瓶塞和护罩等制品。

采用吹塑成型可成型各种中空容器、超薄型薄膜等。

零件颜色通体为白色(除贴纸外);零件的主要用途是装载功能,具有良好的耐热性和耐寒性,有较高的刚性和韧性,机械强度好,在这里作为沐浴露的容器。

2.扫描策略通过对零件特性的分析,选用桌面扫描仪可以快捷的实现3D数据的采集,桌面扫描仪能够扫描的尺寸范围也可以容纳下沐浴露的外壳,且桌面扫描仪具有基于标志点、特征、转台拼接、手动拼接等多样的功能。

逆向工程技术实习报告

逆向工程技术实习报告

逆向工程技术实习报告一、实习背景及目的随着科技的发展,我国逆向工程技术在玩具、模具、航空等领域的应用越来越广泛。

为了更好地了解逆向工程技术及其应用,提高自己的实际操作能力,我选择了逆向工程技术实习。

本次实习旨在学习逆向工程的基本原理、掌握逆向工程的关键技术,并将所学知识应用到实际项目中,提高自己的综合素质。

二、实习内容及过程1. 实习前的准备在实习开始前,我通过查阅资料、请教老师等方式,对逆向工程的基本概念、原理和技术进行了初步了解。

同时,我还学习了相关软件的使用方法,如三维扫描仪、三维建模软件等。

2. 实习内容实习期间,我参与了以下几个方面的内容:(1)三维扫描:使用三维扫描仪对实物进行扫描,获取其几何信息,生成三维点云数据。

(2)数据处理:利用专业软件对扫描得到的三维点云数据进行处理,包括去噪、滤波、平滑等操作,提高数据质量。

(3)三维建模:根据处理后的点云数据,利用三维建模软件重建实物的三维模型,并进行修改和优化。

(4)模型分析与应用:对重建的三维模型进行分析,提取所需信息,为后续的模具设计、产品优化等提供支持。

3. 实习过程在实习过程中,我按照指导老师的安排,逐步完成了每个阶段的任务。

在实际操作中,我遇到了一些问题,如数据处理过程中的噪声去除、模型重建中的误差控制等。

通过请教老师和自学,我逐步掌握了相关技巧,提高了自己的实际操作能力。

三、实习收获及反思1. 实习收获通过本次实习,我收获了以下几点:(1)掌握了逆向工程的基本原理和关键技术,如三维扫描、数据处理、三维建模等。

(2)学会了相关软件的使用方法,提高了自己的实际操作能力。

(3)了解了逆向工程技术在实际工程中的应用,为今后的学习和工作打下了基础。

2. 实习反思在实习过程中,我发现自己在某些方面的不足,如在数据处理过程中对算法理解不够深入,导致处理效果不理想。

在今后的工作中,我将继续努力学习,提高自己的专业素养,为将来的工作做好充分准备。

逆向工程实验报告

逆向工程实验报告

课程题目:利用OllyDbg逆向工具学习高级语言的输入输出与底层的对应关系( ( ( ( ( ( ( 一、 实验背景软件逆向工程是在 1990 年发展起来的,现在已经有一些会议和计算机用户组的专题会议主题。

软件逆向工程是分析目标系统,认定系统的组件及其交互关系,并且通过高层抽象或其他的形式来展现目标系统的过程。

逆向工程 是了解软件“所作所为”的一套最重要的技术和工具。

正式地讲,逆向工程是“通过分析目标系统以识别系统的组件以及这些组件之间的相互关系并创建该系统另一种形式的表或更高级的抽象过程”。

从工程实际的角度来看,大体上可以将软件逆向工程分为两大类: 1)从已知软件系统的完整代码出发,生成对应系统的 结构以及相关设计原理和算法思想的文档。

2)从没有源代码的程序出发,生成对应的源程序、系统结构以及相关设计原理和算法思想的文档等。

逆向工程在软件分析中的作用主要分为以下六个部分: 1)查找恶意代码,许多病毒和恶意代码的 探测技术使用逆向工程来理解那些令人憎恶的代码是怎样构成和运作的。

通过逆向找出可用作特征码 的可识别模式用于驱动商业探测器和代码扫描器。

2)发现意想不到的缺陷和错误,即使是设计最完美的系统也可能存在漏洞,这是由于我们使用的“前向工程”开发技术所固有的特点导致的。

逆向工程可以帮助我们在发生致命的软件失效前识别缺陷和错误。

3)查找是否使用了其他人所写的代码,搞清楚在应用程序的哪里使用了受保护的代码和技术,这对于保护知识产权不被滥用是很重要的。

逆向工程技术可用于检测应用程序是否包含所关心的软件单元。

(4)寻找对共享软件和开放源码的使用(在不该使用的地方),与侵犯代码版权相反的是,如果一个产品以 安全 和 专用 为目的,是否有可公开获取的代码可能是大家关心的问题。

逆向工程能够用于检测代码复制问题。

5)从其他(不同领域或用途)产品中学习,逆向工程技术使我们能够学习先进的软件方法,还允许新学员研究大师的作品。

逆向工程设计实习报告

逆向工程设计实习报告

逆向工程设计实习报告一、实习背景与目的随着科技的发展和市场竞争的加剧,逆向工程作为一种重要的技术手段,在产品设计、生产制造和市场竞争力提升等方面发挥着越来越重要的作用。

本次实习,我选择了逆向工程设计作为我的研究方向,旨在通过实践锻炼,提高自己的综合素质和实际操作能力。

二、实习内容与过程1. 实习单位与岗位本次实习单位为某电子产品设计公司,我被分配到了逆向工程设计部门,负责协助工程师进行逆向工程设计工作。

2. 实习任务与工作内容实习期间,我参与了多个项目的逆向工程设计工作,主要包括以下几个方面:(1)产品实物测绘:根据实际产品,进行精确的测绘,绘制出产品的三维模型。

(2)三维模型重建:利用专业软件,对实物照片进行处理,重建出产品的三维模型。

(3)工程图纸生成:根据三维模型,生成工程图纸,为生产制造提供技术支持。

(4)设计方案优化:结合实际情况,对现有产品进行设计方案的优化,提高产品的性能和市场竞争力。

3. 实习成果与收获通过实习,我完成了多个项目的逆向工程设计工作,掌握了逆向工程设计的基本流程和技巧,提高了自己的实际操作能力。

同时,我也学会了如何将理论知识运用到实际工作中,提高工作效率。

三、实习总结与展望本次实习,让我对逆向工程设计有了更深入的了解,也积累了宝贵的实践经验。

在今后的工作中,我将继续努力学习,提高自己的专业素养,为我国制造业的发展贡献自己的力量。

实习期间,我深刻体会到了实践的重要性,理论知识和实践操作相辅相成。

同时,我也认识到了团队协作的重要性,只有团结协作,才能取得更好的工作效果。

总之,本次实习让我受益匪浅,不仅提高了自己的专业技能,也锻炼了自己的沟通协调能力和团队合作精神。

在今后的工作中,我将继续努力学习,不断提高自己,为我国的逆向工程设计领域做出更大的贡献。

逆向工程综合实训报告

逆向工程综合实训报告

一、实训背景随着科技的不断进步,逆向工程在工业设计、产品研发、质量控制等领域发挥着越来越重要的作用。

为了提升学生的专业技能和工程实践能力,我们学院组织了逆向工程综合实训。

本次实训旨在让学生深入了解逆向工程的基本原理、关键技术以及在实际工程中的应用,通过动手实践,提高学生的逆向工程技能。

二、实训目的1. 理解逆向工程的基本概念、原理和方法。

2. 掌握逆向工程中常用的软件和硬件设备。

3. 学会逆向工程数据的采集、处理和建模。

4. 培养学生的创新思维和解决实际问题的能力。

三、实训内容本次实训主要包括以下内容:1. 逆向工程基本原理:介绍逆向工程的概念、发展历程、应用领域以及与传统工程设计的区别。

2. 逆向工程软件介绍:讲解常见的逆向工程软件,如Geomagic、Mimics、SolidWorks等,并比较其优缺点。

3. 逆向工程硬件设备:介绍三维扫描仪、坐标测量机、CNC加工中心等逆向工程中常用的硬件设备。

4. 逆向工程数据处理:学习如何进行逆向工程数据的预处理、几何建模、曲面重建等操作。

5. 逆向工程实例分析:通过实际案例,分析逆向工程在产品研发、质量控制等方面的应用。

四、实训过程1. 理论学习:首先,我们学习了逆向工程的基本概念、原理和方法,了解了逆向工程在各个领域的应用。

2. 软件学习:接下来,我们学习了常用的逆向工程软件,如Geomagic、Mimics等,并进行了实际操作练习。

3. 硬件设备操作:在老师的指导下,我们熟悉了三维扫描仪、坐标测量机等硬件设备的操作方法。

4. 数据处理与建模:我们学习了逆向工程数据的预处理、几何建模、曲面重建等操作,并尝试将理论知识应用到实际案例中。

5. 综合实训:在综合实训环节,我们选择了一个实际案例,从数据采集、处理、建模到最终的产品设计,完整地完成了逆向工程过程。

五、实训成果通过本次实训,我们取得了以下成果:1. 掌握了逆向工程的基本原理、关键技术以及在实际工程中的应用。

逆向工程实验报告

逆向工程实验报告

逆向工程实验报告目录一、实验目的与背景 (2)1. 实验目的 (2)2. 实验背景 (3)二、实验原理及流程 (4)1. 逆向工程概述 (5)1.1 定义与特点 (6)1.2 逆向工程的重要性与应用领域 (7)2. 实验原理 (9)2.1 逆向工程的技术手段 (10)2.2 实验流程设计 (11)三、实验材料与设备 (12)1. 实验材料 (13)2. 实验设备 (14)四、实验操作过程及记录 (15)1. 实验准备阶段 (16)1.1 设备连接与调试 (17)1.2 实验环境搭建 (18)2. 实验操作阶段 (19)2.1 逆向分析过程描述 (20)2.2 数据采集与处理分析 (21)五、实验结果与分析讨论 (22)1. 实验结果展示 (23)1.1 结果汇总表 (24)1.2 结果分析图表 (26)2. 结果分析讨论与对比研究 (27)一、实验目的与背景随着科技的快速发展,计算机硬件和软件技术不断更新换代,各种新型处理器和操作系统层出不穷。

为了提高学生的实践能力和技术创新能力,我们开展了逆向工程实验,通过对各类计算机设备进行拆解分析,了解其内部结构和工作原理,进而掌握逆向工程的基本方法和技巧。

本次实验旨在使学生熟练掌握逆向工程的基本流程和技术手段,包括硬件分析、软件调试、反汇编与反编译等。

学生将能够独立完成硬件设备的拆解分析任务,深入了解计算机系统的组成和工作原理,提高解决实际问题的能力。

逆向工程在信息安全、知识产权保护等领域具有广泛的应用价值。

通过对计算机设备的逆向工程分析,可以帮助我们更好地了解竞争对手的技术特点和战略布局,为自主知识产权的研发提供有力支持。

逆向工程也为破解恶意软件、保护系统安全提供了重要手段。

本次逆向工程实验将为学生提供一个实践操作的平台,培养学生的动手能力和创新精神,为未来的学习和职业发展打下坚实基础。

1. 实验目的本次逆向工程实验旨在通过分析和拆解一款具体的电子产品(例如智能手机、电脑等),深入理解其内部构造和工作原理,进而提升我们的动手能力和对计算机科学的认知。

实训报告逆向

实训报告逆向

一、实训背景随着信息技术的飞速发展,软件逆向工程已成为信息安全、软件开发等领域的重要技术手段。

逆向工程可以帮助我们理解软件的内部结构、功能和工作原理,从而提高我们的技术水平和创新能力。

本实训旨在通过实践操作,让学生掌握逆向工程的基本原理和常用工具,提高学生的逆向分析能力。

二、实训目标1. 理解逆向工程的基本概念、原理和方法;2. 掌握常用的逆向工程工具;3. 能够对软件进行逆向分析,提取关键信息;4. 培养学生的逆向分析思维和创新能力。

三、实训内容1. 逆向工程基本原理(1)逆向工程定义:逆向工程(Reverse Engineering)是指从已知的软件产品出发,通过分析、研究其内部结构和功能,获取设计意图、实现方法、代码结构等信息的过程。

(2)逆向工程目的:提高软件安全性、保护知识产权、改进软件设计、优化软件开发过程等。

(3)逆向工程方法:静态分析、动态分析、代码重构、反汇编、反编译等。

2. 常用逆向工程工具(1)静态分析工具:IDA Pro、OllyDbg、Ghidra等。

(2)动态分析工具:WinDbg、Fiddler、Wireshark等。

(3)反汇编工具:NASM、FASM等。

(4)反编译工具:JADX、Decompiler等。

3. 实训案例(1)选择一个开源软件,如Notepad++,进行逆向分析。

(2)使用IDA Pro打开Notepad++的可执行文件,进行静态分析。

(3)观察程序结构、函数调用、数据流等信息,分析程序功能。

(4)使用WinDbg进行动态分析,观察程序运行过程中的关键信息。

(5)根据分析结果,总结Notepad++的主要功能和实现方式。

四、实训过程1. 理论学习:阅读相关教材、资料,了解逆向工程的基本原理、方法和常用工具。

2. 工具安装与配置:安装IDA Pro、OllyDbg、WinDbg等逆向工程工具,并进行配置。

3. 实践操作:按照实训案例,对Notepad++进行逆向分析。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学信息与软件工程学院逆向工程实验报告姓名:XXX学号:201852090710指导教师:何兴高一、题目基于MBR的Bootkit的逆向分析二、题目梗概利用逆向工程技术,从可运行的程序系统出发,运用解密、反汇编、系统分析、程序理解等多种计算机技术,对软件的结构、流程、算法、代码等进行逆向拆解和分析,推导出软件产品的源代码、设计原理、结构、算法、处理过程、运行方法及相关文档等。

随着用户需求的复杂度越来越高,软件开发难度不断上升,快速高效地软件开发已成为项目成败的关键之一。

Bootkit是一种比较旧的技术,这个概念最早是在2005年由eEye Digital 安全公司在他们的“BootRoot"项目中提及的。

Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。

Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。

rootkit并不一定是用作获得系统root访问权限的工具。

实际上,rootkit是攻击者用来隐藏自己的踪迹和保留root访问权限的工具。

通常,攻击者通过远程攻击获得root 访问权限,或者首先密码猜测或者密码强制破译的方式获得系统的访问权限。

进入系统后,如果他还没有获得root权限,再通过某些安全漏洞获得系统的root 权限。

接着,攻击者会在侵入的主机中安装rootkit,然后他将经常通过rootkit 的后门检查系统是否有其他的用户登录,如果只有自己,攻击者就开始着手清理日志中的有关信息。

通过rootkit的嗅探器获得其它系统的用户和密码之后,攻击者就会利用这些信息侵入其它的系统。

所有在开机时比Windows内核更早加载,实现内核劫持的技术,都可以称之为Bootkit。

Bootkit主要是利用其内核准入和开机过程的隐身技术,在功能上无异于Rootkit。

传统的Rootkit利用系统启动时提升权限,而Bootkit主要被安置在外设的主引导扇区(也有放于Ntldr 文件、BIOS中的Bootkit)并驻留在整个系统的启动过程。

Bootkit属于Rootkit 的一种,但它却是更加高级的Rootkit,因为其存放于主引导扇区、启动文件之类地方,在操作系统启动之前驻留内存并内核运行之前劫持内核。

MBR即主引导扇区(Master Boot Record)是装有Linux系统的硬盘的第一个扇区,即C/H/S地址的0柱面0磁头1扇区。

这个扇区是系统开启时必须访问的扇区,记录本磁盘相关信息以及硬盘各个分区的大小和信息。

本实验旨在对基于MBR的BootKit的启动模块代码,也就是感染MBR后第1、第61、62扇区的模块进行逆向分析。

三、涉及知识点在本项目中,逆向涉及到的知识点有以下几个,分别是:●保护模式下的汇编语言●实模式下的汇编语言●BIOS中断服务●多级HOOK技术●计算机系统内核原理●NTLDR(系统加载程序,用于装载Windows xp 2003等版本)四、涉及工具在本项目中,涉及到的工具有以下几个,分别是:●IDA(主要静态分析Bootkit)、●Windbg●Bochs(主要是用于动态调试这个Bootkit)●Winhex工具五、源程序见附件六、过程及分析首先介绍一下这个样本黑盒后的症状:感染MBR(感染的具体形式为:真正的MBR被挪到了第63个扇区,Bootkit启动模块的代码在第1、61、62个扇区。

)直接在硬盘上写入了一个驱动(这种写入不是普通的在磁盘上释放一个文件,在系统的文件系统里面是看不见这个驱动的,在实验的虚拟机上是写入了未分区的空间中,通过Winhex工具可以查看到);生成一个DLL并运行然后10分钟后自动关机。

第1、61、62个扇区的代码中,第1个扇区的代码是实模式下的汇编语言,第61、62个扇区是保护模式下的汇编语言,所以在用IDA分析的时候要进行选择,至于这三个扇区的代码直接用Winhex截取出来然后进行逆向分析。

这个Bootkit的启动代码主要用了三级HOOK,分别为HOOK INT13h、HOOK NTLDR的特征码,HOOK内核的特征码。

下面将主要分析这三级HOOK的行为。

1、第一级HOOK(HOOK INT13h)seg000:7C35 @HOOK_INT13H:seg000:7C35 xor bx, bxseg000:7C37 mov eax, [bx+4Ch]seg000:7C3B mov es:73h, eaxseg000:7C40 mov word ptr [bx+4Ch], 66h ; 'f'seg000:7C45 mov word ptr [bx+4Eh], esseg000:7C48 push esseg000:7C49 push 4Dh ; 'M'seg000:7C4C retf上面的代码实现了HOOK INT13h ,即HOOK了BIOS的磁盘中断服务。

下面为HOOK INT13h后的主要代码,其中主要是搜索了NTLDR文件的特征码,特征码为:SignatureCode is : 8B F0 mov esi,eax85 F6 test esi,esi74 21 jz $+23h80..............这段代码运行后内核和BootDriver已经加载到内存中,当找到这段代码以后就对这段特征码进行HOOK,HOOK的过程用到了CALL NEAR[offset32],即相对的寻址方式。

这个HOOK利用了eEye BootRoot 里面的技术。

上面的主要代码是在第一个扇区中的代码实现的,是实模式下执行的代码。

2、第二级HOOK(HOOK NTLDR的特征码)这里主要为HOOK了NLTDR以后代码执行的过程,第二个HOOK的代码主要是在第61个扇区中实现的。

首先第二个HOOK会去搜索NTLDR中的特征码,搜索这个特征码是为了定位到BlLoaderBlock这个变量,这个变量中包括了很多有用的信息,如内核和BootDriver等等。

搜索过程为下图:图1当搜索到以后就可以定位到BlLoaderBlock,然后[[BlLoaderBlock]+0]就正好为模块链表的指针。

这个指针所指向的结构的一些主要成员为:+00h LIST_ENTRY module list links+08h [10h] 不太了解+18h PTR image base address+1Ch PTR module entry point+20h DWORD size of loaded module in memory+24h UNICODE_STRING full module path and file name+2Ch UNICODE_STRING module file name下图的代码就是利用上面介绍BlLoaderBlock的结构定位到了内核的基址。

图2当定位到内核以后,Bootkit将搜索内核的特征代码,然后对内核进行HOOK。

搜索的内核代码为:push 4Bh 6Ah 4Bhpush 19h 6Ah 19hcall InbvSetProgressBarSubset(x,x) E8 E8 DD E6 FFpush [ebp+var_470] FF B5 90 FB FF FF call IoInitSystem(x) E8 53 E6 FF FF 当搜索到了上面的内核特征码后,就对内核的call IoInitSystem(x)进行了HOOK,这个搜索特征码的过程如下图所示:图3当搜索到特征码后接下就会对Kernel的特征码进行HOOK,HOOK的特征码为:call IoInitSystem(x) E8 53 E6 FF FF 修改的地方为后面四个字节的偏移量。

通过这个HOOK Bootkit就能在内核运行的时候再次获得执行的机会。

下面的代码便是对内核进行HOOK的操作:图4从上图的代码看出,在这个过程中Bootkit会将HOOK内核的代码挪到内存中内核映像文件的末尾位置,大小正好为200个字节。

上面便是Bootkit的第二个HOOK所完成的工作。

3、第三级HOOK(HOOK Kernel的特征码)当HOOK Kernel后的代码运行时,主要的代码是在第62个扇区中。

其中的代码有些复杂,这里只介绍主要的执行流程。

这个HOOK代码主要的功能实现了加载并运行一个驱动程序。

第三级HOOK中首先是通过内核的输出表定位到ExAllocatePool函数,搜索这个内核的函数是通过Hash的比较。

当找到这个函数的地址以后就调用这个函数分配一片内存池,然后把下面的代码拷贝到这份内存中并在内存池中执行Bootkit后面的代码。

上面这个过程具体实现如下入所示:图5接下来Bootkit会把调用之前被HOOK的IoInitSystem(x)函数,即去Call这个函数,让IO去初始化系统。

当执行完这步操作以后,则会在内核中搜索和多函数,如NtReadFile、NtOpenFile、NtClose等函数,调用这些函数主要是为了能够把驱动直接从磁盘上读出来,然后运行。

具体过程为如下。

首先调用NtOpenFile打开磁盘,并定位那个驱动的位置。

过程为:图6接下来调用NtReadFile函数,把驱动从磁盘上读到内存中,过程为下图所示:图7当把驱动读入到内存以后Bootkit还有一个将驱动进行内存对齐的操作。

具体过程为下图所示:图8当对驱动进行内存对齐以后,就开始根据偏移定位到驱动的入口地址,然后运行驱动程序,具体过程下图所示为:图9当驱动执行完毕后,则把控制权交还给Bootkit的启动代码,Bootkit最后做的善后处理为:把正在运行的内存池里面的代码清零,然后把控制权交给操作系统的内核,让内核继续进行计算机的启动过程。

以上便是这个Bootkit样本的启动模块代码执行流程。

最后附上一个图,下图为HOOK Kernel处留下的痕迹。

图10Call IoInitSystem(x)被替换成了Call 806cee00,而806cee00地址处的代码是Bootkit第三个HOOK的代码。

七、心得逆向工程是一个实践性很强的学科,通过在线课程的学习以及亲手上机实验使得我在本次课程中收获很大,通过对程序的逆向工程的分析,本人对计算机技术有了更加深刻的认识。

感谢何兴高老师在课堂上的谆谆教诲,更感谢何老师在休息时间对我们的耐心讲解。

相关文档
最新文档