王爽实验8程序分析

4 篇文章 0 订阅
王爽实验8程序分析
assume cs:codesg
codesg segment
             mov ax,4c00H
             int 21H
start:
             mov ax,0
s:   
             nop
             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
执行流程:
程序从start处 mov ax,0开始执行,执行到mov cs:[di],ax,就把s2:处jmp short s1拷贝到s处,即覆盖2个nop(正好2个字节)
jmp short s1 在s2处,可以计算一下需要往上编译10个字节(3(jmp short s1)+3*2(mov ax,0)+2(int 21H)),
debug可以看到机器码为ebf6,f6是补码,转换一下即10,也即是向上偏移10个字节,这样的话s:处的2个nop的代码修改成
ebf6。
程序接着往下运行,跑到s0:jmp short s,这样又s:处,执行EBF6,即往上偏移10字节,计算一下就知道,ip这个时候指向0,
跑到codesg段开始处,即执行mov ax,4c00H;int 21H
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值