计算机107软件保护技术实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件保护技术实验指导书
步山岳
计算机工程系
特别提示
1.在实验报告封面上要正确写上课程名称“软件保护技术”、班级、学号、姓名。
书写实验报告内容包括:
(1)实验目的与要求;
(2)实验环境;
(3)实验内容与实验步骤(实验步骤、源代码);
(4)实验心得(可以是心得体会、难点讨论、意见建议等)。
2.对实验3一定要提前预习,充分准备,明确设计思路、编程逻辑和算法过程。
3.做实验时要将教材、实验指导书和实验报告带到实验室,便于学习。4.实验时要及时记录实验过程中所碰到问题和解决方法,并写到实验报告上。
5.每次做实验之前,请先看一下实验指导书中该实验最后“实验说明”,然后在做实验。
6.写实验报告时,除“实验目的与要求”外,“实验环境”要和当前实验室的实验环境相同,对于“实验内容与步骤”内容应该是你真正所做实验的具体内容,做什么就写什么请不要抄实验指导中的“实验内容与步骤”。
实验 1 W32DASM静态分析软件(4学时)
实验目的
1.了解静态分析软件基本功能;
2.熟悉W32DASM使用;
3.学会软件静态分析的基本方法。
实验环境
Pentium4 1.4G Hz以上CPU,256M以上内存,10G以上硬盘,安装Windows2000以上操作系统,静态分析软件W32Dasm调试器。
实验内容与步骤
1.安装W32DASM,配置W32DASM。
2.加载文件,打开要静态分析的程序文件,如ReverseMe。
3.转到程序入口点,即程序执行的起始点。
4.转到代码开始,即反汇编代码清单中反汇编指令的开始点。
5.转到指定代码的位置。
6.执行文本跳转。
7.执行调用。
8.输入函数,即调用外部dll文件的函数。
9.输出函数。
10.菜单参考,即列出应用程序菜单的相关信息。
11.对话框参考,即列出应用程序调用对话框的信息
12.串式数据参考,即列出程序中相关的字符串、对话等信息。
13.复制汇编代码文本,即打印或复制指定行的汇编代码。
14.装载32位的汇编代码动态调试。
15.单步跟踪程序。
16.设置激活断点。
17.保存反汇编文本文件。
实验说明
静态分析软件W32DASM具体使用方法见教材,要先看懂ReverseMe源程序,分析ReverseMe反汇编代码时要参考ReverseMe源程序。区分反汇编代码中的区块信息、菜单与对话框信息、输入函数信息、输出函数信息、程序代码列表、程序执行入口代码等部分。注意ReverseMe中API函数、提示字符串信息,要尽可能理解反汇编代码中的地址值、转移语句、赋值语句、寄存器中值的变化。要熟悉W32DASM各菜单,功能键的使用。
学生做实验的同时,将实验过程写在实验报告上,课后写实验体会。
实验2 OllyDbg软件动态分析(4学时)
实验目的
1.了解动态分析软件基本功能;
2.了解动态分析软件破解程序基本方法;
3.熟悉OllyDbg使用。
实验环境
Pentium4 1.4G Hz以上CPU,256M以上内存,10G以上硬盘,安装Windows2000以上操作系统,动态分析软件OllyDbg1.10调试器。
实验内容与步骤
1.安装OllyDbg 。
2.执行OllyDbg.exe文件,在OllyDbg窗口上选择“文件(File)”→“打开(Open)”→输入调试的文件名TraceMe。
3. 代码窗口
代码窗口(O11yDbg帮助文件自称反汇编窗口)显示被调试程序的代码。它有四个列;Address(虚拟地址)、Hex dump(机器码)、Disassembly(汇编代码)和Comment (注释)最后一列Comment显示相关API参数或运行简表,单击鼠标右键执行每个选项。
2.信息窗口( Information window)
动态跟踪时,与指令相关的各寄存器值、AP1函数调用提示、跳转提示等信息显示,单击鼠标右键执行每个选项,单击鼠标右键执行每个选项。
3.数据窗口
以十六进制和字符方式显示文件在内存中的数据,类似于SoftICE的数据窗口,单击鼠标右键执行每个选项。
4.寄存器窗口(Registers window)
显示CPU各寄存器的值,支持浮点、MMX,3DNow!寄存器,可以单击鼠标右键切换,单击鼠标右键执行每个选项。
5.堆栈窗口(Stack window)
单击鼠标右键执行每个选项。
6.文件(file)
执行每个选项。
7.查看(view)
执行每个选项。
8.调试(debug)
执行每个选项。
9.选项(option)
执行每个选项。
10.TraceMe实例分析
实验说明
动态分析软件OllyDbg具体使用方法见教材P154-158,也可以看OllyDbg的帮助文挡。要先看懂TraceMe原程序,在实验过程中要重点熟悉OllyDbg功能和使用方法,。
学生做实验的同时,将实验过程写在实验报告上,课后写实验体会。
附录1 TraceMe.cpp源代码
#include
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("chap231");//通过TEXT定义“chap231”为字符
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject (WHITE_BRUSH);
wndclass.lpszMenuName = NULL ; //没有菜单
wndclass.lpszClassName = szAppName ; // "chap231"
if (!RegisterClass (&wndclass))//
return 0 ; // wndclass结构注册失败时返回。
hwnd = CreateWindow(szAppName,
TEXT ("静态分析技术实例"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);
while (GetMessage (&msg, NULL, 0, 0))
{ // 当得到消息是do:
TranslateMessage (&msg);