华中科技大学汇编实验报告7.docx

上传人:b****3 文档编号:10756972 上传时间:2023-05-27 格式:DOCX 页数:14 大小:91.30KB
下载 相关 举报
华中科技大学汇编实验报告7.docx_第1页
第1页 / 共14页
华中科技大学汇编实验报告7.docx_第2页
第2页 / 共14页
华中科技大学汇编实验报告7.docx_第3页
第3页 / 共14页
华中科技大学汇编实验报告7.docx_第4页
第4页 / 共14页
华中科技大学汇编实验报告7.docx_第5页
第5页 / 共14页
华中科技大学汇编实验报告7.docx_第6页
第6页 / 共14页
华中科技大学汇编实验报告7.docx_第7页
第7页 / 共14页
华中科技大学汇编实验报告7.docx_第8页
第8页 / 共14页
华中科技大学汇编实验报告7.docx_第9页
第9页 / 共14页
华中科技大学汇编实验报告7.docx_第10页
第10页 / 共14页
华中科技大学汇编实验报告7.docx_第11页
第11页 / 共14页
华中科技大学汇编实验报告7.docx_第12页
第12页 / 共14页
华中科技大学汇编实验报告7.docx_第13页
第13页 / 共14页
华中科技大学汇编实验报告7.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

华中科技大学汇编实验报告7.docx

《华中科技大学汇编实验报告7.docx》由会员分享,可在线阅读,更多相关《华中科技大学汇编实验报告7.docx(14页珍藏版)》请在冰点文库上搜索。

华中科技大学汇编实验报告7.docx

华中科技大学汇编实验报告7

课程实验报告

课程名称:

汇编语言程序设计实验

实验名称:

实验七跟踪与反跟踪程序设计

实验时间:

2016-5-3,14:

00-17:

30实验地点:

南一楼804室73号实验台

指导教师:

张勇专业班级:

计算机科学与技术201409班

学号:

U*********姓名:

唐礼威

同组学生:

无报告日期:

2016年5月7日

原创性声明

 本人郑重声明:

本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。

除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。

特此声明!

学生签名:

日期:

成绩评定

实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)

报告撰写质量得分(30分)(报告规范、完整、通顺、详实等)

总成绩(100分)

指导教师签字:

                    日期:

 

1

实验目的与要求

(1)熟悉跟踪与反跟踪的技术;

(1)提升对计算机系统的理解与分析能力。

2实验内容

任务1:

数据加密与反跟踪

在实验二的基础上,增加查询前输入密码的功能,密码不对则程序退出,只有密码正确之后才能完成后续的功能。

密码采用密文的方式存放在数据段中。

各科成绩也以密文方式存放在数据段中。

加密方法自选。

可以采用计时、中断矢量表检查、堆栈检查、间接寻址等方式中的一种或多种方式反跟踪。

成绩表中要有自己的名字和各科成绩(密文存放)。

提示:

为了使源程序的数据段中定义的密码、学生姓名、各科成绩能在汇编之后变成密文,可以使用数值运算符(参见教材P48)对变量的初始值进行变换。

例如,如果想使语文成绩90分变成密文,加密算法是与密钥字符“W”做异或运算,则可写成:

YUWENDB90XOR‘W’

任务2:

跟踪与数据解密

解密同组同学的加密程序,获取该同学的成绩。

注意:

两人一组,每人实现一类加密与反跟踪方法,把执行程序交给对方解密。

如何设计反跟踪程序以及如何跟踪破解的,是本次实验报告中重点需要突出的内容。

3实验过程

3.1任务1

3.1.1设计思想及存储单元分配

此次实验主要是两部分内容:

1.实现正常功能模块(即实验2所做的内容)2.加密模块:

要求提供验证密码功能(加密算法设计:

使用的是简单的算数逻辑运算,具体是将姓名与s异或,成绩与Bat异或,密码为Bat,采用函数(X-29H)*3对保存的密码进行编码;反跟踪功能设计:

在各个模块中穿插反跟踪代码,防止破解人员利用td破解)。

3.1.2流程图

3.1.3源程序

.386

STACKSEGMENTUSE16STACK

DB200DUP(0)

STACKENDS

;

DATASEGMENTUSE16

NUMDD3

RADXDD10

BASEDB10

D1DB0DH,0AH,'STUDENTNAME:

$'

D2DB0DH,0AH,'GRADE:

$'

PROMPTdb0dh,0ah,'pleaseenterpassword:

$'

MSGdb0dh,0ah,'pleaseinputtargetname:

$'

BUFDB'z'XOR's','h'XOR's','a'XOR's',7DUP(0)

DB100XOR'B',85XOR'a',80XOR't',?

DB'l'XOR's','i'XOR's','s'XOR's','i'XOR's',6DUP(0)

DB80XOR'B',98XOR'a',70XOR't',?

PWDDB3XOR'C';密码串的长度为3,采用与常数43H异或的方式编码成密文

DB('B'-29H)*3;真实密码为Bat。

采用函数(X-29H)*3对保存的密码进行编码。

DB('a'-29H)*3

DB('t'-29H)*3

DB0A1H,5FH,0D3H;用随机数填充密码区到6个字符,防止破解者猜到密码长度

;

IN_PWDDB7;输入密码,最大长度6个字符

DB?

DB7DUP(0)

;

INPUTDB11

DB?

DB11DUP(0)

P1DWPASS1;地址表

E1DWOVER

P2DWPASS2

P3DWPASS3

DATAENDS

;

CODESEGMENTUSE16

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

LEADX,PROMPT

MOVAH,9

INT21H

LEADX,IN_PWD;输入密码字符串

MOVAH,10

INT21H

cli;计时反跟踪开始

movah,2ch

int21h

pushdx;保存获取的秒和百分秒

MOVCL,IN_PWD+1;比较输入的串长与密码长度是否一样

XORCL,'C'

SUBCL,PWD

MOVSXBX,CL

ADDBX,OFFSETP1

movah,2ch;获取第二次秒与百分秒

int21h

sti

cmpdx,[esp];计时是否相同

popdx

jzOK1;如果计时相同,通过本次计时反跟踪

movbx,offsetE1;如果计时不同,则把转移地址偏离P1

OK1:

movbx,[bx]

cmpwordptrcs:

[bx],0B60FH;是否是PASS1处的指令,其实是用于判断前面比较的

;串长是否相同

jzOK2

jmpE1

OK2:

jmpbx

db'Howtogo';定义的冗余信息

PASS1:

MOVZXCX,IN_PWD+1

cli;堆栈检查反跟踪

pushP2;PASS2的地址压栈

MOVSI,0

MOVDL,3

popax

movbx,[esp-2];把栈顶上面的字(PASS2的地址)取到

sti

jmpbx;如果被跟踪,将不会转移到PASS2

db'idonotknow!

'

PASS2:

MOVZXAX,IN_PWD+2[SI];比较密码是否相同。

把输入的串变成密文,与保存的密文比较

SUBAX,29H

MULDL

CMPAL,PWD+1[SI]

JNZERR2

INCSI

DECCX

CMPCX,0

JNEPASS2

JMPPASS3

ERR2:

MOVEBX,OFFSETP1

MOVEDX,1

JMPWORDPTR[EBX+EDX*2];指向OVER

db'YES,getit'

;

PASS3:

; 正常功能区

leadx,msg;输出提示信息-请输入姓名

movah,9h

int21h

leadx,input;读入学生姓名,以'$'符号结尾

movah,0ah

int21h

leaesi,input+2

leaedi,buf

xorebx,ebx

xorecx,ecx

search_loop:

cmpecx,num

jgesearch_finish

xoreax,eax

search_inner:

cmpeax,radx

jgesearch_finish

movdl,[esi+eax]

xordl,'s'

cmp[edi+ebx],dl

jnzsearch_next

cmpbyteptr[edi+ebx+1],0

jzsearch_finish

inceax

incebx

jmpsearch_inner

db'thefuturewillbebettertomorrow'

search_next:

incecx

imulebx,ecx,14

jmpsearch_loop

db'welcometohust'

search_finish:

xorebx,ebx

output:

subebx,ecx

imulbx,14;根据目标学生下标值,找到分数缓冲区首地址

movsi,0

movax,0

movdx,0

moval,buf+10[bx+si]

xoral,in_pwd+2[si]

addax,ax

incsi

movdl,buf+10[bx+si]

xordl,in_pwd+2[si]

addax,dx;al=zh*2+ma

incsi

movdl,buf+10[bx+si]

xordl,in_pwd+2[si]

sardl,1

addax,dx;al=zh*2+ma+en/2

salax,1;al=2*al

movdx,7

idivdl;al=al/7

incsi

movbuf+10[bx+si],al;avg=al(al/3.5)

pushax

movdl,0ah

movah,2h

int21h

movdl,0dh

movah,2h

int21h

popax

cmpal,90;switch语句

jgegradea

cmpal,80

jgegradeb

cmpal,70

jgegradec

cmpal,60

jgegraded

jmpgradee

db'mysunshine'

gradea:

movdl,41h

movah,2h

int21h

jmppass3

gradeb:

movdl,42h

movah,2h

int21h

jmppass3

gradec:

movdl,43h

movah,2h

int21h

jmppass3

graded:

movdl,44h

movah,2h

int21h

jmppass3

gradee:

movdl,45h

movah,2h

int21h

jmppass3

OVER:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.1.4实验步骤

1.绘制程序流程图;

2.根据程序流程图,编写shiyan7.asm;

3.编译、链接源程序,生成可执行目标文件shiyan7.exe;

4.运行shiyan7.exe,检查程序具有正常功能;

5.输入正确密码后,键入学生姓名,可以正常查询出成绩;

6.输入错误密码后,程序直接终止运行;。

3.1.5实验记录

(包括实验条件、输入/输出、错误和修改等信息的记录)

1、实验环境条件:

P31GHz,256M内存;WINDOWSXP命令行窗口;EDIT.EXE2.0;MASM.EXE6.0;LINK.EXE5.2;TD.EXE5.0。

2、输入密码Bat后程序运行如下

当输入错误的密码时程序直接停止运行,当破解人员在td里调试时,由于执行两条指令的时间远大于执行程序的时长,通过检测这一时差,若两次计时调用间时长过长,直接结束程序,阻止了破解人员进一步破解;当破解人员利用反汇编工具运行程序时,栈顶数据的值被修改,可通过此检测程序是否是在反汇编环境下执行;若程序在异常环境下运行,则立即终止程序。

3.2任务2

3.2.1设计思想及存储单元分配

在td里单步执行待破解的程序,可以很直观地获得程序的执行流程和完成的操作。

若碰到反跟踪程序段,配合设置断点的方法,绕过反跟踪程序段设置的陷阱。

3.2.2流程图

3.2.3源程序

3.2.4实验步骤

1.运行TD,开始破解密码;

2.当遇到疑似反跟踪代码时,若其中含有功能代码,则在其尾部设置断点,直接运行过去;

3.当遇到疑似反跟踪代码时,若其中不含功能代码,纯粹为反跟踪代码,则直接修改IP寄存器的值,跳过此段代码的执行;

4.在验证密码与计算成绩处,找出加密手段;在相关数据段,找出暗文数据;

5.利用暴力破解法,编写破解脚本,结合加密手段与暗文,得到明文数据;

6.记录明文数据,并利用源代码进行验证,查看是否成功破密;

4体会

这次实验初步熟悉了一些跟踪与反跟踪手段:

中断向量检测、计时检测、堆栈检测。

提升了自己对计算机系统的理解与分析能力,懂得如何进行简单的数据加密。

这次实验收获很大,相信对今后的编程有很大的帮助。

参考文献

[1]王元珍等.80x86汇编语言程序设计.版本(第1版)

[2]王晓虹等.汇编语言程序设计教程.版本(第1版)

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2