关于seh(1)
好久就想写点东西了,无赖自己太懒了。好不容易写了篇进程插入得投了,
还被退回来了,郁闷。
天天打游戏,玩奇迹,其实每天我都知道要好好学习,就是克制不住。
正题。
大家看清楚了,这里写的不是SHE偶像组合,是结构化错误处理,不知道我有没有翻译错误。
其实以前我对这玩意儿重来不在乎,不就是try,catch么,有什么难的,这些天也看了一些东西,觉得这东西确实不是那么简单的。
明确一下学习目的,这里讲的seh的目的就是为了做一些"不正当"的事情,比如黑客呀,进入ring0亚等等,所以,会牵扯到其他的很多知识,我懂得我会尽量说明白,不过,如果你是那种觉得vb就已经很好用不想再学其他语言的人,我劝你还是别看了,这里面没有你想要的东西,大部分是汇编。不是我对谁不满,而是这是事实。或许你说可以用vb编出嵌入汇编的程序,但是那只是奇技淫巧罢了。
首先讲一下关于c++中的错误的处理方法。
try. 这是一个很简单的语句,一般来讲和catch配套使用例如:
try
{
int a=34;
int b=0
int c=a/b;
}
catch(int errno)
{
.......//错误的处理
}
程序执行try块里面的语句,如果遇到错误,就会把错误类型逐个的和后面的catch括号里面的错误类型比较,如果有匹配的就交给这个catch处理,如果没有的话有系统处理,默认的方式是中断运行。
这里最重要的就是错误的类型号了,我这里不多说了,你们自己去查书,我们以后主要还是接触到asm,毕竟比高级语言自由的多,这一讲只是抛砖引玉,引出一个话题。
当然有个简单的方法,就是不管出什么错,由一个catch统统承担,可以使用下面的代码:
catch(...)
{
...........//处理代码
}
用catch(...)就可以捕获任何类型的异常。
这是c++封装的异常处理,其实和一般的seh差不多,先写到这里,
好像和我们的目标----进入ring0差得比较远。不过不要着急,我知道一次写太多你们看这也吃力,一次这么一点点大家看着舒服嘛。大家体会一下,下次就准备我们的正式旅途了。
不知道大家有没有觉得看老外写的书特别费劲,他们写书老是拐弯抹角,不一句话讲清楚,尤其是那个lippman,越来越受不了他了,不过他的书又不得不看,如果大家对我的写作方式有什么意见告诉我。