南开大学《逆向工程》期末考试备战考题全集1Word下载.docx
- 文档编号:17749058
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:21
- 大小:27.29KB
南开大学《逆向工程》期末考试备战考题全集1Word下载.docx
《南开大学《逆向工程》期末考试备战考题全集1Word下载.docx》由会员分享,可在线阅读,更多相关《南开大学《逆向工程》期末考试备战考题全集1Word下载.docx(21页珍藏版)》请在冰豆网上搜索。
识别变量
识别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)
低位字节存入低地址,高位字节存入高地址
Windows是一个消息(Message)驱动式系统。
Windows消息提供在应用程序与应用程序之间、应用程序与Windows系统之间进行通信的手段。
Windows消息机制
应用程序想要实现的功能由消息触发,通过对消息的响应和处理完成。
Windows系统中有两种消息队列:
一种是系统消息队列;
另一种是应用程序消息队列。
计算机的所有输入设备由Windows监控。
当一个事件发生时,Windows先将输入的消息放入系统消息队列,再将输入的消息复制到相应的应用程序队列中,应用程序中的消息循环在它的消息队列中检索每个消息并发送给相应的窗口函数。
一个事件从发生到到达处理它的窗口函数必须经历上述过程。
值注得意的是消息的非抢先性,即不论事件的急与缓,总是按到达的先后排队(一些系统消息除外),而这可能导致一些外部实时事件得不到及时的处理。
OllyDdg调试器
1.判断题:
OllyDbg只能进行动态调试。
2.判断题:
OllyDbg是调试Ring0级程序的首选工具。
OllyDbg调试器
OllyDbg(简称“OD”)是由OlehYuschuk()编写的一款具有可视化界面的用户模式调试器。
OllyDbg结合了动态调试和静态分析,具有GUI界面,非常容易上手,对异常的跟踪处理相当灵活。
这些特性使OllyDbg成为调试Ring3级程序的首选工具。
它的反汇编引擎很强大,可识别数千个被C和Windows频繁使用的函数,并能将其参数注释出来。
它会自动分析函数过程、循环语句、代码中的字符串等。
INT3断点不改变原程序的机器码。
硬件断点最多可以设置4个。
断点
断点(Breakpoint)是调试器的一个重要功能,使执行的程序中断在指定的地方,从而方便对其进行分析。
INT3断点
INT3断点指令,其机器码是OxCC,也常被称为“CC指令”。
当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常,从而停在断点处,然后将断点处的指令恢复成原来的指令。
使用INT3断点的优点是可以设置无数个断点,缺点是改变了原程序机器码,容易被软件检测到。
硬件断点
硬件断点和DRx调试寄存器有关。
硬件断点的原理是使用DR0,DR1,DR2,DR3设定地址,并使用DR7设定状态,因此最多设置4个断点。
硬件执行断点与CC断点的作用一样,但因为硬件执行断点不会将指令首字节修改为“CC”,所以更难检测。
选择题:
OllyDbg可以设置()个内存断点
A.1个个个个
内存断点
OllyDbg可以设置内存访问断点或内存写入断点,原理是对所设的地址的内存页设置不可访问或不可写属性,这样当内存访问或写入的时候就会产生异常。
OllyDbg截获异常后,比较异常地址是不是断点地址,如果是就中断,让用户继续操作。
因为每次出现异常时都要通过比较来确定是否应该中断,所以内存断点会降低OllyDbg的执行速度。
OllyDbg只能设置1个内存断点。
判断题:
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交叉引用
通过()可以知道指令代码的相互调用关系
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函数是()
允许或禁止指定窗口的API函数是()
A.EnabIeMenultem()函数
B.Enablewindow()函数
C.GetTickCount()函数
D.timeGetTime()函数
内核空间、权限空间布局
CPU设计者将CPU的运行级别从内向外分为4个,依次为R0,R1,R2,R3,()拥有最高执行权限
A.R0B.R1
用户的应用程序(就是用VisualC++等工具开发的应用程序)也是运行在()级上的
请对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等启动文件。
③读取文件。
在这个阶段会检查和配置一些硬件设备,例如系统固件、总线和适配器、显示适配器、键盘、通信端口、磁盘、软盘、输入设备(例如鼠标)、并口、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系统。
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系统内核驱动需要验证数字签名,但是直接运行没有数字签名的驱动的操作也能成功。
加载内核驱动的方法很多,可以使用工具来加载。
异常处理的基本概
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 逆向工程 南开大学 逆向 工程 期末考试 备战 考题 全集