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

上传人:b****5 文档编号:27659759 上传时间:2023-07-03 格式:DOCX 页数:13 大小:91.12KB
下载 相关 举报
华中科技大学汇编实验报告.docx_第1页
第1页 / 共13页
华中科技大学汇编实验报告.docx_第2页
第2页 / 共13页
华中科技大学汇编实验报告.docx_第3页
第3页 / 共13页
华中科技大学汇编实验报告.docx_第4页
第4页 / 共13页
华中科技大学汇编实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

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

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

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

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

课程实验报告

课程名称:

汇编语言程序设计试验

试验名称:

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

试验时间:

-5-3,14:

00-17:

30试验地点:

南一楼804室73号试验台

指导老师:

张勇专业班级:

计算机科学与技术09班

学号:

U姓名:

唐礼威

同组学生:

无汇报日期:

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-2022 冰豆网网站版权所有

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