1 assume cs:codesg
2 codesg segment
3 mov ax,4c00h
4 int 21h
5 start:mov ax,0
6 s:nop
7 nop
8 mov di,offset s
9 mov si,offset s2
10 mov ax,cs:[si]
11 mov cs:[di],ax
12 s0:jmp short s
13 s1:mov ax,0
14 int 21h
15 mov ax,0
16 s2:jmp short s1
17 nop
18 codesg ends
19 end start
执行完11行代码之后,程序变成了这样。
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:mov ax,0
s:jmp short s1//由于短转移保存的是位移,所以我们可以正常返回,因为上面三行代码的位移是和原来s2应该跳转的上面三行位移是一样的。
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0:jmp short s
s1:mov ax,0
int 21h
mov ax,0
s2:jmp short s1
nop
codesg ends
end start
汇编语言实验八(王爽)分析一个奇怪的程序
最新推荐文章于 2023-03-06 11:11:13 发布