449330787 发表于 2020-3-20 15:15:35

检测点10.5(2题详解)

很多人不知道为什么ax等于1,其实这个1,是nop占领的1个字节,因此偏移地址里要分一层给他。
由题目可知ss:指的是栈底的数据,栈底是由call dword prt ss:这段代码写进去的,先写cs,再写ip(这个ip是call dword prt ss:的下一段代码的ip,也就是nop)。因此ss:=ip      ss:=cs      注意: ip 和cs 要占4个字节
由movax,offset s   可以知道ax=s段的偏移地址,
由sub ax,ss:换算出来就是, s段的偏移地址-ip,
他们的段地址都是cs,因此nop占多少字节,就多几层偏移地址,nop这个指令只占了1个字节,所以ax等于1,如果将nop换成其他代码,
例如 mov ax,offset sax就会等于3,因为这段代码要3个字节,

bx 就很简单了,换算出来 等于 cs-cs,等于0

文小诗 发表于 2020-3-31 00:12:50

好详细,困扰我一天的问题终于解决了
页: [1]
查看完整版本: 检测点10.5(2题详解)