南开大学《逆向工程》期末考试备战考题全集1.docx

上传人:b****3 文档编号:4801285 上传时间:2022-12-09 格式:DOCX 页数:21 大小:27.29KB
下载 相关 举报
南开大学《逆向工程》期末考试备战考题全集1.docx_第1页
第1页 / 共21页
南开大学《逆向工程》期末考试备战考题全集1.docx_第2页
第2页 / 共21页
南开大学《逆向工程》期末考试备战考题全集1.docx_第3页
第3页 / 共21页
南开大学《逆向工程》期末考试备战考题全集1.docx_第4页
第4页 / 共21页
南开大学《逆向工程》期末考试备战考题全集1.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

南开大学《逆向工程》期末考试备战考题全集1.docx

《南开大学《逆向工程》期末考试备战考题全集1.docx》由会员分享,可在线阅读,更多相关《南开大学《逆向工程》期末考试备战考题全集1.docx(21页珍藏版)》请在冰豆网上搜索。

南开大学《逆向工程》期末考试备战考题全集1.docx

南开大学《逆向工程》期末考试备战考题全集1

《逆向工程》课程期末复习资料

《逆向工程》课程讲稿章节目录:

第1章基础知识

逆向工程

逆向分析技术

文本字符

字节序

Win32API函数

Windows消息机制

第2章动态分析技术

OllyDbg的界面

OllyDbg的配置

Olly加载程序

OllyDdg的INT3断点和硬件断点

OllyDdg内存断点

OllyDbg消息断点

OllyDbg条件断点

OllyDbg插件

OllyDbg的跟踪

WinDbg调试器

Windbg符号文件

WinDbg调试过程

第3章静态反汇编

文件类型分析

反汇编引擎

IDAPro加载可执行文件

IDAPro的窗口

IDAPro导航

IDAPro交叉引用

IDAPro函数分析

IDAPro识别数组、结构体

IDAPro增强反汇编

十六进制工具与静态分析技术应用实例

第4章逆向分析技术

函数的识别

识别变量

识别IF分支结构

识别switch分支结构

识别循环

数学运算符

虚函数

64软件逆向技术

第5章演示版保护技术

序列号保护方式

警告窗口

时间限制

菜单功能限制

KeyFile保护

网络验证

光盘检测

只运行一个实例

第6章Windows内核基础

内存空间、权限空间布局

Windows与内核启动过程

WindowsR3与R0通信

内核函数和内核驱动模块

内核对象

SSDT

TEB和PEB

第7章Windows下的异常处理

异常处理的基本概念

SEH的概念及基本知识

SEH异常处理程序原理及设计

向量化异常处理

x64平台上的异常处理

异常处理的实际应用

第8章PE文件格式

PE的基本概念

PE文件头

区块

输入表

绑定输入、输出表

基址重定位

资源

TLS初始化、调试载入目录、延迟载入数据_

程序异常数据NET头部

编写PE编辑工具

一、客观部分:

(单项选择、多项选择、判断)

★考核知识点:

基础知识

参见讲稿章节:

1.在关于逆向工程(reverseengineering)的描述中,正确的是()

A.从己经安装的软件中提取设计规范

B.按照“输出—>处理—>输入”的顺序设计软件

C.用硬件来实现软件的功能

D.根据软件处理的对象来选择开发语言和开发工具

2.以下说法错误的是()

A.逆向工程是指根据已有的产物和结果,通过分析来推导出具体的实现方法。

B.在软件汉化和软件解密的过程中,首要问题是对被汉化和解密的软件进行分析。

C.通过静态分析我们可以真正了解软件中各个模块的技术细节。

D.对软件分析来说,静态分析只是第一步,动态跟踪才是分析软件的关键。

附(考核知识点解释):

逆向工程(ReverseEngineering)是指根据已有的产物和结果,通过分析来推导出具体的实现方法。

对软件来说,“可执行程序—反编译—源代码”的过程就是逆向工程。

逆向工程的内容可以分为如下3类。

(1)软件使用限制的去除或者软件功能的添加。

(2)软件源代码的再获得。

(3)硬件的复制和模拟。

参见讲稿章节:

1.判断题:

计算机中储存的信息都是用二进制数表示的,但如果要处理文本,并不需要先把文本转换为相应的二进制数。

()

2.判断题:

Unicode是ASCII字符编码的一个扩展,只不过在Windows中用2字节对其进行编码。

()

附(考核知识点解释):

文本字符

计算机中储存的信息都是用二进制数表示的,屏幕上显示的字符都是二进制数转换之后的结果。

如果要处理文本,就必须先把文本转换为相应的二进制数。

在学习过程中,我们会与各类字符打交道。

这些字符在Windows里扮演着重要的角色。

字符集

字符集是一个系统支持的所有抽象字符的集合。

字符是各种文字和符号的总称:

文字

标点符号

图形符号

数字

IP地址

字节存储顺序

计算机领域在描述“关于字节该以什么样的顺序传送的争论”时引用了“endian”一词,翻译为“字节序”,表示数据在存储器中的存放顺序,主要分为大端序(Big-endian)和小端序(Little-endian),其区别如下。

Big-endian:

高位字节存入低地址,低位字节存入高地址。

Little-endian:

低位字节存入低地址,高位字节存入高地址。

Intel处理器使用的是小尾方式存储(LittleEndianness)

低位字节存入低地址,高位字节存入高地址

参见讲稿章节:

1.判断题:

Windows是一个消息(Message)驱动式系统。

Windows消息提供在应用程序与应用程序之间、应用程序与Windows系统之间进行通信的手段。

附(考核知识点解释):

Windows消息机制

Windows是一个消息(Message)驱动式系统。

Windows消息提供在应用程序与应用程序之间、应用程序与Windows系统之间进行通信的手段。

应用程序想要实现的功能由消息触发,通过对消息的响应和处理完成。

Windows系统中有两种消息队列:

一种是系统消息队列;另一种是应用程序消息队列。

计算机的所有输入设备由Windows监控。

当一个事件发生时,Windows先将输入的消息放入系统消息队列,再将输入的消息复制到相应的应用程序队列中,应用程序中的消息循环在它的消息队列中检索每个消息并发送给相应的窗口函数。

一个事件从发生到到达处理它的窗口函数必须经历上述过程。

值注得意的是消息的非抢先性,即不论事件的急与缓,总是按到达的先后排队(一些系统消息除外),而这可能导致一些外部实时事件得不到及时的处理。

★考核知识点:

OllyDdg调试器

参见讲稿章节:

1.判断题:

OllyDbg只能进行动态调试。

()

2.判断题:

OllyDbg是调试Ring0级程序的首选工具。

()

OllyDbg调试器

附(考核知识点解释):

OllyDbg(简称“OD”)是由OlehYuschuk()编写的一款具有可视化界面的用户模式调试器。

OllyDbg结合了动态调试和静态分析,具有GUI界面,非常容易上手,对异常的跟踪处理相当灵活。

这些特性使OllyDbg成为调试Ring3级程序的首选工具。

它的反汇编引擎很强大,可识别数千个被C和Windows频繁使用的函数,并能将其参数注释出来。

它会自动分析函数过程、循环语句、代码中的字符串等。

★考核知识点:

OllyDdg的INT3断点和硬件断点

1.判断题:

INT3断点不改变原程序的机器码。

()

2.判断题:

硬件断点最多可以设置4个。

()

参见讲稿章节:

附(考核知识点解释):

断点

断点(Breakpoint)是调试器的一个重要功能,使执行的程序中断在指定的地方,从而方便对其进行分析。

INT3断点

INT3断点指令,其机器码是OxCC,也常被称为“CC指令”。

当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常,从而停在断点处,然后将断点处的指令恢复成原来的指令。

使用INT3断点的优点是可以设置无数个断点,缺点是改变了原程序机器码,容易被软件检测到。

硬件断点

硬件断点和DRx调试寄存器有关。

硬件断点的原理是使用DR0,DR1,DR2,DR3设定地址,并使用DR7设定状态,因此最多设置4个断点。

硬件执行断点与CC断点的作用一样,但因为硬件执行断点不会将指令首字节修改为“CC”,所以更难检测。

 

★考核知识点:

OllyDdg内存断点

参见讲稿章节:

选择题:

OllyDbg可以设置()个内存断点

A.1个个个个

附(考核知识点解释):

内存断点

OllyDbg可以设置内存访问断点或内存写入断点,原理是对所设的地址的内存页设置不可访问或不可写属性,这样当内存访问或写入的时候就会产生异常。

OllyDbg截获异常后,比较异常地址是不是断点地址,如果是就中断,让用户继续操作。

因为每次出现异常时都要通过比较来确定是否应该中断,所以内存断点会降低OllyDbg的执行速度。

OllyDbg只能设置1个内存断点。

★考核知识点:

WinDbg调试器

参见讲稿章节:

判断题:

WinDbg最强大的地方还是命令行,通常结合GUI和命令行进行操作。

()

多选题:

WinDbg支持哪些调试()

A.以打开、附加的方式调试应用程序

B.可以分析Dump文件

C.可以进行远程调试

D.内核调试

★考核知识点:

文件类型分析

参见讲稿章节:

单选题:

IDA的原始嵌入式脚本语言叫作()。

单选题:

IDA分析数据时,数据类型可以在()之间转换

、dw、df、dw、dd、dd、df、dd、df

多选题:

下列说法正确的是()

A.PEiD这类文件分析工具是利用导入函数搜索来完成识别工作的

B.开发语言都有固定的启动代码,利用这一点就可以识别程序是由何种语言编译的

C.被加密程序处理过的程序中会留下加密软件的相关信息,利用这一点就可以识别程序是被何种软件加密的

D.PEiD提供了一个扩展接口文件,用户可以自定义一些特征码,这样就可以识别新的文件类型了

附(考核知识点解释):

文件类型分析

逆向分析程序的第一步就是分析程序的类型,了解程序是用什么语言编写的或用什么编译器编译的,以及程序是否被某种加密程序处理过,然后才能有的放矢,进行下一步工作。

这个分析过程需要文件分析工具的辅助。

常见的文件分析工具有PEiD,ExeinfoPE等。

此类工具可以检测大多数编译语言、病毒和加密软件。

★考核知识点:

反汇编引擎

参见讲稿章节:

单选题:

以下对x86架构指令集支持最全的反汇编引擎是()

A.ODDisasmB.BeaEngineC.Udis86D.Capstone

多选题:

下列是反汇编引擎的有()

判断题:

OllyDbg自带的反汇编引擎ODDisasm,优点是具有汇编接口(即文本解析,将文本字符串解析并编码成二进制值),这个特性曾经独树一帜,且支持64位指令的汇编和反汇编。

()

判断题:

Keystone和Capstone是同一系列的引擎,由同一维护者主导开发。

Capstone主要负责跨平台多指令集的反汇编工作,而Keystone主要负责跨平台多指令集的汇编工作。

与O11yDbg的汇编器一样,Keystone也只支持文本汇编,不支持像AsmJit那样的函数式汇编。

()

附(考核知识点解释):

反汇编引擎概述

在安全软件和保护软件的开发过程中经常会用到汇编引擎和反汇编引擎,例如OllyDbg、IDA、VMProtect、加壳软件和反编译器等。

反汇编引擎的作用是把机器码解析成汇编指令。

常用的反汇编引擎有ODDisasm、BeaEngine、Udis86、Capstone,汇编引擎有ODAssemhler、Keystone、AsmJit。

★考核知识点:

IDAPro加载可执行文件

参见讲稿章节:

单选题:

IDA是按()装载PE文件的

A.交叉参考B.参考重命名C.格式化指令操作数D.代码和数据转换

多选题:

下列关于IDA有关说法正确的是()

A.IDA最主要的特性是交互和多处理器。

用户可以通过对IDA的交互来指导IDA更好地进行反汇编。

B.IDA是按区块装载PE文件的,例如.text(代码块)、.data(数据块)、.rsrc(资源块)、.idata(输入表)和.edata(输出表)等

C.IDA反汇编所消耗的时间与程序大小及复杂程度有关,通常需要等待一段时间才能完成。

D.IDA可以格式化指令使用的常量,因此应尽可能使用符号名称而非数字,从而使反汇编代码更具可读性。

IDA根据被反汇编指令的上下文、所使用的数据作出格式化决定。

对其他情况,IDA一般会将相关常量格式化成一个十进制常量。

★考核知识点:

IDAPro导航

参见讲稿章节:

单选题:

IDAPRO简称IDA,是一个交互式()工具

A.调试B.汇编C.编译D.反汇编

★考核知识点:

IDAPro交叉引用

参见讲稿章节:

单选题:

通过()可以知道指令代码的相互调用关系

A.交叉参考B.参考重命名C.格式化指令操作数D.代码和数据转换

★考核知识点:

IDAPro函数分析

参见讲稿章节:

多选题:

IDA反汇编代码可以输出()格式文件

★考核知识点:

IDAPro识别数组、结构体

参见讲稿章节:

判断题:

IDA有着较强的数组聚合能力。

它可以将一串数据声明变成一个反汇编行,按数组的形式显示,从而简化反汇编代码清单。

()

判断题:

IDA在进行反汇编的时候能正确区分数据和代码。

()

★考核知识点:

IDAPro增强反汇编

参见讲稿章节:

判断题:

进人指令汇编修改状态,jne指令共2字节,因此用2个nop指令代替,这种跳过算法分析直接修改关键跳转指令使程序注册成功的方法,通常被解密者称为“爆破法”。

()

★考核知识点:

十六进制工具与静态分析技术应用实例

参见讲稿章节:

单选题:

()十六进制工具提供了文件比较功能

多选题:

常用的十六进制工具有()

参见讲稿章节:

多选题:

在以下的传递方式中,()是函数传递参数的方式

A栈方式

B队列方式

C寄存器方式

D通过全局变量进行隐含参数传递

单选题:

虚函数的地址是在()时候确定的

A程序编写时

B编译程序时

C调用即将进行时

D程序执行后

判断题:

局部变量是函数内部定义的一个变量,其作用域和生命周期作用于整个程序。

()

判断题:

调用虚函数时,程序先取出虚函数表指针,得到虚函数表的地址,再根据这个地址到虚函数表中取出该函数的地址,最后调用该函数。

()

参见讲稿章节:

单选题:

以下先执行语句块,再进行表达式判断的循环语句是。

()

Ado循环

Bwhile循环

Cfor循环

D都不是

判断题:

程序在运行时,先调用main函数执行用户编写的代码,再执行初始化函数代码。

()

参见讲稿章节:

判断题:

C++的三大核心机制是封装、继承、多态,虚函数就是多态的一种体现。

VC++实现虚函数的方式是虚表。

()

附(考核知识点解释):

C++的三大核心机制是封装、继承、多态,虚函数是多态的一种体现,对于面向对象思想设计的软件,虚函数是软件逆向分析还原面向对象代码的重要手段。

VC++实现虚函数的方式是虚表,如果一个类中有虚函数,编译器就会为这个类生成一个虚表,不同的类,虚表是不相同的,相同的类对象,共享一个虚表。

★考核知识点:

序列号保护方式

参见讲稿章节:

判断题:

软件验证序列号,其实就是验证用户名和序列号之间的数学映射关系()

★考核知识点:

警告窗口

参见讲稿章节:

判断题:

若要完全去除警告窗口,只需找到创建该窗口的代码并将其跳过。

()

判断题:

在另外一些情况下,对话框不是以资源形式存在的,通过常用断点就可以拦截不下来。

()

多选题:

去除警告窗口常用的3种方法是()

A.修改程序的资源

B.静态分析

C.动态分析

D.放置不管

★考核知识点:

时间限制

参见讲稿章节:

判断题:

演示版软件一般都有使用时间的限制,例如试用30天,超过试用期也能运行。

()

多选题:

用于获取时间的API函数有()

A.GetSystemTime

B.GetLocalTime

C.GetFileTime

D.timeGetTime

★考核知识点:

菜单功能限制

参见讲稿章节:

选择题:

允许或禁止指定的菜单条目的API函数是()

A.EnabIeMenultem()函数

B.Enablewindow()函数

C.GetTickCount()函数

D.timeGetTime()函数

★考核知识点:

KeyFile保护

参见讲稿章节:

选择题:

确定文件是否存在的API函数是()

A.FindFirstFileA函数

B.CreateFileA函数

C.GetFileAttributesA函数

D.ReadFile函数

选择题:

打开文件以获得其句柄的API函数是()

A.FindFirstFileA函数

B.CreateFileA函数

C.GetFileAttributesA函数

D.ReadFile函数

选择题:

允许或禁止指定窗口的API函数是()

A.EnabIeMenultem()函数

B.Enablewindow()函数

C.GetTickCount()函数

D.timeGetTime()函数

★考核知识点:

内核空间、权限空间布局

参见讲稿章节:

单选题:

CPU设计者将CPU的运行级别从内向外分为4个,依次为R0,R1,R2,R3,()拥有最高执行权限

A.R0B.R1

单选题:

用户的应用程序(就是用VisualC++等工具开发的应用程序)也是运行在()级上的

A.R0B.R1

★考核知识点:

Windows与内核启动过程

参见讲稿章节:

单选题:

请对Windows的启动过程包括的以下几个阶段的顺序进行排列()

(1)初始化启动阶段

(2)启动自检阶段

(3)Boot加载阶段

(4)检测和配置硬件阶段

A3412B2341C2134D3214

判断题:

Windows与内核启动过程中在Boot加载阶段,先对ntldr进行设置,然后从启动分区加载ntldr。

()

附(考核知识点解释):

Windows的启动过程包括以下几个阶段。

(1)启动自检阶段

在打开电源时,计算机开始自检过程,从BIOS中载入必要的指令,然后进行一系列的自检操作,进行硬件的初始化检查(包括内存、硬盘、键盘等),同时在屏幕上显示信息。

(2)初始化启动阶段

自检完成后,根据CMOS的设置,BIOS加载启动盘,将主引导记录(MBR)中的引导代码载入内存。

接着,启动过程由MBR来执行。

启动代码搜索MBR中的分区表,找出活动分区,将第1个扇区中的引导代码载入内存。

引导代码检测当前使用的文件系统,查找ntldr文件,找到之后将启动它。

BIOS将控制权转交给ntldr,由ntldr完成操作系统的启动工作(注意:

Windows7与此不同,使用的是Bootmgr)。

(3)Boot加载阶段

在这个阶段,先从启动分区加载ntldr,然后对ntldr进行如下设置。

①设置内存模式。

如果是x86处理器,并且是32位操作系统,则设置为“32-bitflatmemorymode”;如果是64位操作系统,并且是64位处理器,则设置为64位内存模式。

②启动一个简单的文件系统,以定位、ntoskrnl、Hal等启动文件。

③读取文件。

(4)检测和配置硬件阶段

在这个阶段会检查和配置一些硬件设备,例如系统固件、总线和适配器、显示适配器、键盘、通信端口、磁盘、软盘、输入设备(例如鼠标)、并口、ISA总线上运行的设备等。

(5)内核加载阶段

ntldr将首先加载Windows内核和硬件抽象层(HAL)。

HAL会对硬件底层的特性进行隔离,为操作系统提供统一的调用接口。

接下来ntldr从注册表的HKEY_LOCAL_MACHINE\System\CurrentControlSet键下读取这台机器安装的驱动程序,然后加载驱动程序。

初始化底层设备驱动,在注册表的HKEY_LACAL_MACHINE\System\CurrentControlSet\Services键下查找“Start”键的值为0和1的设备驱动。

(6)Windows的会话管理启动

驱动程序加载完成,内核会启动会话管理器。

这是一个名为的程序,是Windows系统中第1个创建的用户模式进程,其作用如下。

.创建系统环境变量。

.加载,它是Windows子系统的内核模式部分。

.启动,它是Windows子系统的用户模式部分。

.启动。

.创建虚拟内存页面文件。

.执行上次系统重启前未完成的重命名工作(PendingFileRename)。

(7)登录阶段

Windows子系统启动的系统服务提供对Windows用户的登录和注销的支持,可以完成如下工作。

.启动服务子系统),也称服务控制管理器(SCM)。

.启动本地安全授权(LSA)过程)。

.显示登录界面。

登录组件将用户的账号和密码安全地传送给LSA进行认证处理。

如果用户提供的信息是正确的,能够通过认证,就允许用户对系统进行访问。

(8)Windows7和WindowsXP启动过程的区别

.BIOS通过自检后,将MBR载入内存并执行,引导代码找到启动管理器Bootmgr。

.Bootmgr寻找活动分区boot文件夹中的启动配置数据BCD文件,读取并组成相应语言的启动菜单,然后在屏幕上显示多操作系统选择画面。

.选择Windows7系统后,Bootmgr就会读取系统文件windows\system32\,并将控制权交给。

.加载Windows7的内核、硬件、服务等,然后加载桌面等信息,从而启动整个Windows7系统。

★考核知识点:

WindowsR3与R0通信

参见讲稿章节:

单选题:

Windows内核部分会调用一些内核层的函数。

这些函数都以固定的前缀开始,分别属于内核中不同的管理模块,其中“Ps”属于哪个模块()

A管理层B核心层C进程管理D安全管理

判断题:

Windows内核驱动模块是内核的重要组成部分,虽然有微软自己开发的内核驱动,但是没有第三方开发的内核驱动。

()

附(考核知识点解释):

Windows分为应用层与内核层。

当应用程序调用一个有关I/O的API(例如WriteFile)时,实际上这个API被封装在应用层的某个DLL库(例如和文件中。

而DLL动态库中的函数的更底层的函数包含在文件中。

中的NativeAPI是成对出现的,分别以“Nt”和“Zw”作为前缀。

即ZwCreateFile函数和NtCreateFile函数,只是名字不一样。

WindowsAPI函数调用中的NativeAPI函数。

NativeAPI函数调用中断int2E或者SysEnter指令,从R3进入R0。

内核中的SSDT,有与中NativeAPI一一对应的系统处理服务函数,即内核态的Nt*系列函数。

 

★考核知识点:

内核函数与内核驱动模块

参见讲稿章节:

判断题:

SSDT的全称是系统服务描述符表,SSDT用于处理应用层通过下发的各个API操作请求。

()

★考核知识点:

内核对象

参见讲稿章节:

判断题:

TEB与PEB不一样,在系统内核空间中,而不是在应用层中的结构。

()

判断题:

PEB存在于用户地址空间中,记录了进程的相关信息。

每个进程都有自己的PEB信息。

()

★考核知识点:

SSDT

参见讲稿章节:

判断题:

WinDbg有限制地支持本地内核调试,只能查看一些重要的系统数据结构,不能通过下断点的方式进行调试。

()

判断题:

利用WinDbg调试内核有多种方法。

例如,WinDbg通过USB、1394火线、COM及网络把两台机器连接起来。

()

★考核知识点:

TEB与PEB

参见讲稿章节:

判断题:

x64系统内核驱动需要验证数字签名,但是直接运行没有数字签名的驱动的操作也能成功。

()

判断题:

加载内核驱动的方法很多,可以使用工具来加载。

()

★考核知识点:

异常处理的基本概

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1