Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 汇编语言 > SEH示例代码1
【标  题】:SEH示例代码1
【关键字】:SEH
【来  源】:http://blog.csdn.net/ljjue/archive/2006/12/17/1447033.aspx

SEH示例代码1

Your Ad Here

;************************************************************************
;*项目名称:SEH示例                                                                                *
;************************************************************************
;*代码名称:SEH_1.asm                                                                          *
;*代码功能:SEH跟踪分析                                                                        *
;************************************************************************
;*代码作者:by ljjue, 2006-10-30                                                            *
;************************************************************************

;************************************************************************
;汇编模式定义
;************************************************************************
.386
.model flat,stdcall
option casemap:none

;************************************************************************
;头文件定义
;************************************************************************
include  windows.inc
include  kernel32.inc
includelib kernel32.lib
include  user32.inc
includelib user32.lib

;************************************************************************
;数据段定义
;************************************************************************
.const
szTitle  db 'ok',0
szTextOK db '修复了异常!',0
szTextSEH db 'SEH succeed',0

;************************************************************************
;代码段
;************************************************************************
.code
;************************************************************************
;程序入口
;************************************************************************
Start:
 assume FS:NOTHING
 push offset perThread_Handler ;异常处理句柄,handler
 push fs:[0]    ;
 mov fs:[0],esp   ;建立SEH链
 mov esi,0
 mov eax,[esi]   ;访问0内存异常
 
Exit:
 invoke MessageBox,NULL,addr szTextOK,addr szTitle,MB_OK
 
 ;恢复SEH链
 pop fs:[0]
        add esp,4
 invoke ExitProcess,NULL

;************************************************************************
;函数功能:异常处理回调函数
;************************************************************************
perThread_Handler:
 invoke MessageBox,NULL,addr szTextSEH,addr szTitle,MB_OK

 
 push ebp
 mov ebp,esp
 mov ebx,[ebp + 10h] 
 assume ebx:ptr CONTEXT
 mov [ebx].regEsi,00401000h ;修复寄存器使其不为0
 assume ebx:nothing
 mov eax,ExceptionContinueExecution ;ExceptionContinueExecution equ 0,表示已经修复异常,可从异常发生处或修改后的EIP处继续执行,否则你会陷入死循环,不断跳出对话框....
 
 mov esp,ebp
 pop ebp
 ret       

End Start 

SEH解释:【上一篇】
MASM32编程如何确保光标移至edit控件末:【下一篇】
【相关文章】
  • SEH解释
  • SEH (Structured Exception Handling) Security Changes in XPSP2 and 2003 SP1
  • windows核心编程--SEH(结构异常处理)
  • 利用SEH异常清硬件断点
  • SEH结构化异常处理
  • roseHA笔记多人blog
  • RoseHA(for Solaris)快速安装指引
  • Solaris8下RoseHA+Oracle双机安装步骤
  • MouseHook与KeyboardHook两个DLL的原代码
  • seh的另一种用法
  • 【随机文章】
  • 可以预览一下360度全景图的效果
  • 重定向控制台程序的输入输出程序(转载)
  • 保证系统正常的情况下如何卸载Win XP SP2
  • 《个人电脑的安全防范》课程介绍
  • 转载:AS400操作入门
  • 正则表达式基础语法
  • 拇指娃娃
  • 禁止使用reg文件
  • 软件资格与水平考试常见问题
  • 处理数据库中重复记录的方法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.