julien
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2404回复:5

有没有汇编下写SEH的资料

楼主#
更多 发布于:2001-06-07 09:09
R.T.
想说爱你不容易
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-12 14:11
MSJ 1997 January有讲
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
julien
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-12 14:50
MSJ 是什么东东,能贴就贴出来吗
想说爱你不容易
softice
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-06-14 09:11
其二:每线程异常处理
FS中的值是一个十六位的选择子,它指向包含线程重要信息的数据结构TIB,线程信息块。其的首双字节指向我们称为ERR的结构:

1st dword +0         pointer to next err structure
                     (下一个err结构的指针)
2nd dword +4         pointer to own exception handler
                   (当前一级的异常处理函数的地址)

所以异常处理是呈练状的,如果你自己的处理函数捕捉并处理了这个异常,那么当你的程序发生了异常时,操作系统就不会调用它缺省的处理函数了,也就不会出现一个讨厌的执行了非法操作的红叉。
下面是cih的异常段:

MyVirusStart:
push ebp
lea eax, [esp-04h*2]
xor ebx, ebx
xchg eax, fs:[ebx]         ;交换现在的err结构和前一个结构的地址
                                   ; eax=前一个结构的地址
                                   ; fs:[0]=现在的err结构指针(在堆栈上)
call @0
@0:
pop ebx
lea ecx, StopToRunVirusCode-@0[ebx]     ;你的异常处理函数的偏移
push ecx                           ;你的异常处理函数的偏移压栈
push eax                           ;前一个err结构的地址压栈
;构造err结构,记这时候的esp(err结构指针)为esp0
……
StopToRunVirusCode:
@1  = StopToRunVirusCode
           xor    ebx, ebx                         ;发生异常时系统在你的练前又加了一个err结构,所以要先找到原来的结构地址
mov eax, fs:[ebx]                 ; 取现在的err结构的地址eax
mov esp, [eax]                     ; 取下个结构地址即eps0到esp
RestoreSE:                                        ;没有发生异常时顺利的回到这里,你这时的esp为本esp0
pop dword ptr fs:[ebx]                 ;弹出原来的前一个结构的地址到fs:0
pop eax                             ;弹出你的异常处理地址,平栈而已
julien
驱动牛犊
驱动牛犊
  • 注册日期2001-06-08
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-06-14 21:26
谢谢
想说爱你不容易
lms2000
驱动牛犊
驱动牛犊
  • 注册日期2001-05-19
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望102点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2001-06-21 00:57
游客

返回顶部