首页
社区
课程
招聘
求助
2006-4-28 15:35 3597

求助

2006-4-28 15:35
3597
我想问个问题,我写了个小程序
就是熟悉一下seh  但问题是  这个程序会产生异常  在我们进到异常代码时不是已经由ring-3 到 ring-0了吗  为什么还会产生异常  请不要笑 我就是这么想的  如果不用virtualprotect  在tasm的批处理文件中:
tasm32 /m3 /ml seh2,,;
        tlink32 /Tpe /aa  seh2,seh2,,d:\tasm50\lib\import32.lib
        应该加什么条件呢?  
请指教  谢谢!
.386
.model flat,stdcall
option casemap:none
extrn MessageBoxA:proc
extrn ExitProcess:proc
.data
tit1 db 'you are here~!',0
msg1 db 'the goal is you!',0
.code
start:
xor eax,eax
push offset seh_handler
push fs:[0]
mov fs:[0],esp
mov eax,100
xor edx,edx
cdq
div edx
xor ebx,ebx
push ebx
call ExitProcess
seh_handler:
push ebp
mov ebp,esp
lea esi,dword ptr[ebp+10h]
xor ecx,ecx
mov [esi+10h],ecx
mov [esi+04h],ecx
mov [esi+08h],ecx
mov [esi+0ch],ecx
lea edx,dword ptr[_change]
mov dword ptr[edx],0cd20h
_change:
nop
nop
nop
nop
xor ebx,ebx
push ebx
push offset tit1
push offset msg1
push ebx
call MessageBoxA
mov esp,ebp
pop ebp
mov eax,-1
retn
end start

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 291
活跃值: (208)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
thebutterfly 5 2006-4-28 19:42
2
0
用户态发生异常-切换到核心态-寻找异常处理例程-如果有用户态的异常处理程序则切换回用户态处理异常
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wire 2006-4-29 14:17
3
0
谢谢 还有个问题:请教你
那么为什么我还能在用户态下修改调试寄存器呢?
雪    币: 291
活跃值: (208)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
thebutterfly 5 2006-4-29 18:43
4
0
你能在用户态下直接修改吗?
试试这条指令运行时会发生什么:

mov  dr0, eax

你只能通过SEH修改CONTEXT. 修改后恢复现场的工作是由操作系统内核完成的
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wire 2006-4-29 22:22
5
0
谢谢指教 呵呵!
游客
登录 | 注册 方可回帖
返回