《汇编语言》王爽——一个奇怪的程序之EBF6

来源:互联网 发布:数据库备份服务器 编辑:程序博客网 时间:2024/05/29 12:02

参照图片和注释吧

assume cs:codesgcodesg segmentmov ax,4c00hint 21hstart:mov ax,0//程序入口点s: nop//这个位置的内容稍后被替换了(当这里第二次执行时,就是那句EBF6了)   nop//这个位置的内容稍后被替换了(当这里第二次执行时,就是那句EBF6了。                        //先往下走一步至1419:000A,然后jmp,往前跳10个字节,走到了1419:00                        //  00)   mov di,offset s//di=0008H   mov si,offset s2//si=0020H   mov ax,cs:[si]//s2处的指令(EBF6)拿过来了,复制给ax.   mov cs:[di],ax//ax再传给cs:[8],即s处被改动,上图中1419:0020处的EBF6被复                                //制到了s处(1419:0008),EBF6是两个字节大小,正好把                                //1419:0008、1419:0009都填满了s0:jmp short s//马上调回到s处s1:mov ax,0//此处以下没有被执行到   int 21h   mov ax,0s2:jmp short s1//这里最初已经计算出了s2和s1之间的距离,                        //18H - 20H = -10(十进制)= F6(十六进制补码的)   nopcodesg endsend start


原创粉丝点击