华中科技大学汇编实验报告7.docx_第1页
华中科技大学汇编实验报告7.docx_第2页
华中科技大学汇编实验报告7.docx_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 实 验 报 告课程名称: 汇编语言程序设计实验 实验名称: 实验七 跟踪与反跟踪程序设计 实验时间: 2016-5-3,14:00-17:30 实验地点: 南一楼804室73号实验台 指导教师: 张勇 专业班级:计算机科学与技术201409班学 号: U201414813 姓 名: 唐礼威 同组学生: 无 报告日期: 2016年 5 月 7日 原创性声明 本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用已经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体已经公开发表的作品或成果,不存在剽窃、抄袭行为。特此声明!学生签名: 日期: 成绩评定实验完成质量得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)报告撰写质量得分(30分)(报告规范、完整、通顺、详实等)总成绩(100分)指导教师签字: 日期:汇 编 语 言 程 序 设 计 实 验 报 告目录1实验目的与要求12实验内容13实验过程23.1任务123.1.1设计思想及存储单元分配23.1.2流程图23.1.3源程序33.1.4实验步骤83.1.5实验记录83.2任务293.2.1设计思想及存储单元分配93.2.2流程图93.2.3源程序93.2.4实验步骤94体会9参考文献101 实验目的与要求(1)熟悉跟踪与反跟踪的技术;(1)提升对计算机系统的理解与分析能力。2 实验内容任务1:数据加密与反跟踪在实验二的基础上,增加查询前输入密码的功能,密码不对则程序退出,只有密码正确之后才能完成后续的功能。密码采用密文的方式存放在数据段中。各科成绩也以密文方式存放在数据段中。加密方法自选。可以采用计时、中断矢量表检查、堆栈检查、间接寻址等方式中的一种或多种方式反跟踪。成绩表中要有自己的名字和各科成绩(密文存放)。提示:为了使源程序的数据段中定义的密码、学生姓名、各科成绩能在汇编之后变成密文,可以使用数值运算符(参见教材P48)对变量的初始值进行变换。例如,如果想使语文成绩90分变成密文,加密算法是与密钥字符“W”做异或运算,则可写成: YUWEN DB 90 XOR W任务2:跟踪与数据解密 解密同组同学的加密程序,获取该同学的成绩。 注意:两人一组,每人实现一类加密与反跟踪方法,把执行程序交给对方解密。如何设计反跟踪程序以及如何跟踪破解的,是本次实验报告中重点需要突出的内容。3 实验过程3.1 任务13.1.1 设计思想及存储单元分配此次实验主要是两部分内容:1.实现正常功能模块(即实验2所做的内容)2.加密模块:要求提供验证密码功能(加密算法设计:使用的是简单的算数逻辑运算,具体是将姓名与s异或,成绩与Bat异或,密码为Bat,采用函数(X-29H)*3对保存的密码进行编码;反跟踪功能设计:在各个模块中穿插反跟踪代码,防止破解人员利用td破解)。3.1.2 流程图3.1.3 源程序.386STACK SEGMENT USE16 STACK DB 200 DUP(0)STACK ENDS;DATA SEGMENT USE16NUM DD 3RADX DD 10BASE DB 10D1 DB 0DH,0AH,STUDENT NAME:$D2 DB 0DH,0AH,GRADE:$PROMPT db 0dh, 0ah, please enter password: $MSG db 0dh, 0ah, please input target name : $BUF DB z XOR s,hXOR s,aXOR s, 7 DUP(0) DB 100 XOR B ,85 XOR a, 80 XOR t, ? DB l XOR s,iXOR s,sXOR s,i XOR s,6 DUP(0) DB 80 XOR B, 98 XOR a, 70 XOR t,?PWD DB 3 XOR C ;密码串的长度为3,采用与常数43H异或的方式编码成密文 DB (B -29H)*3 ;真实密码为Bat。采用函数(X-29H)*3对保存的密码进行编码。 DB (a -29H)*3 DB (t -29H)*3 DB 0A1H,5FH,0D3H ;用随机数填充密码区到6个字符,防止破解者猜到密码长度;IN_PWD DB 7 ;输入密码,最大长度6个字符 DB ? DB 7 DUP(0);INPUT DB 11 DB ? DB 11 DUP(0)P1 DW PASS1 ;地址表E1 DW OVERP2 DW PASS2P3 DW PASS3DATA ENDS;CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX LEA DX,PROMPT MOV AH,9 INT 21H LEA DX,IN_PWD ;输入密码字符串 MOV AH,10 INT 21H cli ;计时反跟踪开始 mov ah,2ch int 21h push dx ;保存获取的秒和百分秒 MOV CL,IN_PWD+1 ;比较输入的串长与密码长度是否一样 XOR CL,C SUB CL,PWD MOVSX BX,CL ADD BX,OFFSET P1 mov ah,2ch ;获取第二次秒与百分秒 int 21h sti cmp dx,esp ;计时是否相同 pop dx jz OK1 ;如果计时相同,通过本次计时反跟踪 mov bx,offset E1 ;如果计时不同,则把转移地址偏离P1OK1: mov bx,bx cmp word ptr cs:bx,0B60FH ;是否是PASS1处的指令,其实是用于判断前面比较的;串长是否相同 jz OK2 jmp E1OK2: jmp bx db How to go ;定义的冗余信息PASS1: MOVZX CX,IN_PWD+1 cli ;堆栈检查反跟踪 push P2 ;PASS2的地址压栈 MOV SI,0 MOV DL,3 pop ax mov bx,esp-2 ;把栈顶上面的字(PASS2的地址)取到 sti jmp bx ;如果被跟踪,将不会转移到PASS2 db i donot know!PASS2: MOVZX AX,IN_PWD+2SI ;比较密码是否相同。把输入的串变成密文,与保存的密文比较 SUB AX,29H MUL DL CMP AL,PWD+1SI JNZ ERR2 INC SI DEC CX CMP CX,0 JNE PASS2 JMP PASS3ERR2: MOV EBX,OFFSET P1 MOV EDX,1 JMP WORD PTR EBX+EDX*2 ;指向OVER db YES,get it;PASS3: ;正常功能区 lea dx, msg ; 输出提示信息 - 请输入姓名 mov ah, 9h int 21h lea dx, input ; 读入学生姓名, 以 $ 符号结尾 mov ah, 0ah int 21h lea esi, input+2 lea edi, buf xor ebx, ebx xor ecx, ecxsearch_loop: cmp ecx, num jge search_finish xor eax, eaxsearch_inner: cmp eax, radx jge search_finish mov dl, esi + eax xor dl, s cmp edi + ebx, dl jnz search_next cmp byte ptr edi + ebx + 1, 0 jz search_finish inc eax inc ebx jmp search_inner db the future will be better tomorrowsearch_next: inc ecx imul ebx, ecx, 14 jmp search_loop db welcome to hustsearch_finish: xor ebx, ebxoutput: sub ebx,ecx imul bx,14 ; 根据目标学生下标值, 找到分数缓冲区首地址 mov si,0 mov ax, 0 mov dx, 0 mov al,buf+10bx+si xor al,in_pwd+2si add ax, ax inc si mov dl, buf+10bx+si xor dl,in_pwd+2si add ax, dx ; al = zh * 2 + ma inc si mov dl, buf+10bx+si xor dl,in_pwd+2si sar dl, 1 add ax, dx ; al = zh * 2 + ma + en / 2 sal ax, 1 ; al = 2 * al mov dx, 7 idiv dl ; al = al / 7 inc si mov buf+10bx+si, al ; avg = al ( al / 3.5) push ax mov dl, 0ah mov ah, 2h int 21h mov dl, 0dh mov ah, 2h int 21h pop ax cmp al, 90 ; switch 语句 jge gradea cmp al, 80 jge gradeb cmp al, 70 jge gradec cmp al, 60 jge graded jmp gradee db my sunshinegradea: mov dl, 41h mov ah, 2h int 21h jmp pass3gradeb: mov dl, 42h mov ah, 2h int 21h jmp pass3gradec: mov dl, 43h mov ah, 2h int 21h jmp pass3graded: mov dl, 44h mov ah, 2h int 21h jmp pass3gradee: mov dl, 45h mov ah, 2h int 21h jmp pass3 OVER: MOV AH,4CH INT 21HCODE ENDS END START3.1.4 实验步骤1. 绘制程序流程图;2. 根据程序流程图,编写shiyan7.asm;3. 编译、链接源程序,生成可执行目标文件shiyan7.exe;4. 运行shiyan7.exe,检查程序具有正常功能;5. 输入正确密码后,键入学生姓名,可以正常查询出成绩;6. 输入错误密码后,程序直接终止运行;。3.1.5 实验记录(包括实验条件、输入/输出、错误和修改等信息的记录)1、 实验环境条件:P3 1GHz,256M内存;WINDOWS XP命令行窗口;EDIT.EXE 2.0;MASM.EXE 6.0; LINK.EXE 5.2; TD.EXE 5.0。2、 输入密码Bat后程序运行如下当输入错误的密码时程序直接停止运行,当破解人员在td里调试时,由于执行两条指令的时间远大于执行程序的时长,通过检测这一时差,若两次计时调用间时长过长,直接结束程序,阻止了破解人员进一步破解;当破解人员利用反汇编工具运行程序时,栈顶数据的值被修改,可通过此检测程序是否是在反汇编环境下执行;若程序在异常环境下运行,则立即终止程序。3.2 任务23.2.1 设计思想及存储单元分配在td里单步执行待破解的程序,可以很直观地获得程序的执行流程和完成的操作。若碰到反跟踪程序段,配合设置断点的方法,绕过反跟踪程序段设置的陷阱。3.2.2 流程图 无3.2.3 源程序无3.2.4 实验步骤1. 运行TD,开始破解密码;2. 当遇到疑似反跟踪代码时,若其中含有功能代码,则在其尾部设置断点,直接运行过去;3. 当遇到疑似反跟踪代码时,若其中不含功能代码,纯粹为反跟踪代码,则直接修改IP寄存器的值,跳过此段代码的执行;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论