Windows 异常机制 和 利用 特点

 

SEH 前几天看了一下,大概知道了一下,之前也是有一些了解的,MS 为了程序的健壮性,增加了 SEH ,我想,这个其实,就是一个回调函数,我们平时的编程用的不多,可能应为我们的水平还有待提高吧。。

回到正题,以前在 加密3 中知道,这是一种链式的 分发函数, 当程序产生异常时,系统捕获到之后,它会立刻跳向

异常处理的函数链表的开头,在这个 MS 定义的一场表中寻找能够处理这样异常情况的函数,当然,这是在我们自己的

程序中没有 定义自己的回调函数 来处理 异常的情况下的,那好,如果,我们定义了我们自己的异常处理函数,

那么, 程序会首先在我们的 程序 中来执行异常的处理机制,如果我们搞定不了,系统就会来接管,如果还不行,

系统就会强制的结束程序。 这些都是我之前知道的东西。。

那么我们能怎么样来利用这样的机制能。。。

 

1:在编程中,函数之间的数据传递过程中,我们可以加入我们的异常处理函数,增加我们程序的健壮性, 我们可以自己来封装一些 MS 提供的一些东西, 想对字符串的操作,我们就可以 加入 对字符串 buffer 的校验,当然在写一些保护程序的时候,反调试, debugxxx ,当调用这样的函数是,我们就可以 结束产生一个让系统和程序无法恢复的错误,

就像最近调试驱动 经常弄得XP 蓝屏一样。。

2:那么,在逆向的过程中,我们同样可以在解密的过程中利用这样的特点来对付,为了保护程序而故意产生的异常

来干扰我们的调试的 SEH ,具体 的 做法有三种,前几天,我总结了一下,本质上还是根据 MS 处理异常调用的

一个内核的.DLL, KiUserExceptionDispatcher ----> CALL ZwContinue ; 调用 ZwContinue , 我们可以根据当时 寄存器  ECX + 0XB8 来得到我们的 出口地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值