BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #29004同步于 2008/8/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

【求助】小小跳转跳出了神(汇编简单问题)

bupthu
2008/8/14镜像同步4 回复
又碰上一个低级问题: 就是一个简单的长跳转,跳转后,eip却不是变成正常的0x7d61,却到了别处,程序也因此崩溃,不知道为啥?(实模式,x86) bochs的调试信息: (0) Breakpoint 1, 0x00000000000032a4 in ?? () Next at t=32586615 (0) [0x000032a4] 0000:32a4 (unk. ctxt): jmp word ptr es:[eax] ; 2667ff20------------------这是下一条要执行的指令,跳转到es:eax之处 <bochs:3> sreg cs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1 ds:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=3 ss:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=7 es:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1------------es为0x0 fs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1 gs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1 ldtr:s=0x0000, dl=0x00000000, dh=0x00000000, valid=0 tr:s=0x0000, dl=0x00000000, dh=0x00000000, valid=0 gdtr:base=0x00070000, limit=0xfffe idtr:base=0x00000000, limit=0x3ff <bochs:4> r rax: 0x00000000:00007d61 rcx: 0x00000000:00009000---------ax为0x7d61:目的地址 rdx: 0x00000000:00003404 rbx: 0x00000000:00000000 rsp: 0x00000000:0000ffda rbp: 0x00000000:00000000 rsi: 0x00000000:ffff0000 rdi: 0x00000000:0008ffac r8 : 0x00000000:00000000 r9 : 0x00000000:00000000 r10: 0x00000000:00000000 r11: 0x00000000:00000000 r12: 0x00000000:00000000 r13: 0x00000000:00000000 r14: 0x00000000:00000000 r15: 0x00000000:00000000 rip: 0x00000000:000032a4 eflags 0x00000002 id vip vif ac vm rf nt IOPL=0 of df if tf sf zf af pf cf <bochs:5> s---------------------------------------------------执行了这一句之后 Next at t=32586616 (0) [0x000092e4] 0000:92e4 (unk. ctxt): add byte ptr ds:[bx+si], al ; 0000 <bochs:6> r rax: 0x00000000:00007d61 rcx: 0x00000000:00009000 rdx: 0x00000000:00003404 rbx: 0x00000000:00000000 rsp: 0x00000000:0000ffda rbp: 0x00000000:00000000 rsi: 0x00000000:ffff0000 rdi: 0x00000000:0008ffac r8 : 0x00000000:00000000 r9 : 0x00000000:00000000 r10: 0x00000000:00000000 r11: 0x00000000:00000000 r12: 0x00000000:00000000 r13: 0x00000000:00000000 r14: 0x00000000:00000000 r15: 0x00000000:00000000 rip: 0x00000000:000092e4-------------------------------------eip变成了这个数,不是0x7d61,我猜测发生了中断 eflags 0x00000002 id vip vif ac vm rf nt IOPL=0 of df if tf sf zf af pf cf <bochs:7> sreg cs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1-----------cs倒是变成了0 ds:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=3 ss:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=7 es:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=3 fs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1 gs:s=0x0000, dl=0x0000ffff, dh=0x00009300, valid=1 ldtr:s=0x0000, dl=0x00000000, dh=0x00000000, valid=0 tr:s=0x0000, dl=0x00000000, dh=0x00000000, valid=0 gdtr:base=0x00070000, limit=0xfffe idtr:base=0x00000000, limit=0x3ff 不知道为什么,请大家帮助[em18]
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
flyingkisser机器人#1 · 2008/8/14
jmp word ptr es:[eax] eax=7d61, 是跳到[7d61],不是7d61, 即 jmp eax 和 jmp [eax] 是不同的 我觉得你看花眼了吧,上来灌灌水休息一会吧,哈哈。 我有时候看汇编看多了也会晕。 【 在 bupthu (fox_lee) 的大作中提到: 】 : 又碰上一个低级问题: : 就是一个简单的长跳转,跳转后,eip却不是变成正常的0x7d61,却到了别处,程序也因此崩溃,不知道为啥?(实模式,x86) : bochs的调试信息: : ...................
bupthu机器人#2 · 2008/8/14
谢谢啊!我是初学者,不是眼花了,是真的不会。谢谢啊!我都调试了2个小时了,呵呵。 [em18][em18][em18][em18][em18][em18]
flyingkisser机器人#3 · 2008/8/14
比我强,我第一次用debug.exe调用16位汇编中断服务时,搞了1天1夜。 【 在 bupthu (fox_lee) 的大作中提到: 】 : 谢谢啊!我是初学者,不是眼花了,是真的不会。谢谢啊!我都调试了2个小时了,呵呵。 : [em18][em18][em18][em18][em18][em18]
flyingmiao机器人#4 · 2008/8/14
【 在 bupthu 的大作中提到: 】 : 谢谢啊!我是初学者,不是眼花了,是真的不会。谢谢啊!我都调试了2个小时了,呵呵。 : [em18][em18][em18][em18][em18][em18] 嗯,呵呵,不急,咱有猫哥 不过建议你再好好复习下汇编咯,基础蛮重要的,2个小时的代价可不小。