欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]异常处理流程(二) 三种常见的异常

[原创]异常处理流程(二) 三种常见的异常

很多时候我们需要主动制造异常,那么异常代码长什么样呢?我们来了解三种常见的异常。

第一种,内存访问异常。

内存页面的属性有三种,可读(R),可写(W),可执行(E)。如果有一段内存段只有读属性,但调试员却想修改这段内存的数据。这时会显示:访问违规,并提示使用shift+f7/8/9来忽略异常。

怎么知道那个段有什么权限呢?来到M窗口观察“访问”列即可,里面是R,W,E三个字母的组合,如图。


怎么修改权限呢?M窗口找到PE头,双击就可以查看 PE文件了,如下图所示。


最后几行,有一行叫:Offset to PE signature  该值加基址就是PE头开始的地方,翻译成:PE头的偏移量。介绍几个参数

Addressofentrypoint 程序的入口,这是偏移,就是程序加载的起始位置,是EP,不是OEP,就是载入程序后从哪开始运行


往下拉,看到ASCII’’text”,这里是对.text的属性设置处


text段最后:characterastics=CODE|EXECUTE|READ|WRITE,说明这段的权限是可执行,可读,可写。那么怎么修改属性呢?在这行右键-修改整数,这里显示为E0000200,将其改为60000200就将权限改为了可读可执行。就成功修改了权限。保存即可

第二是除零异常。因为除数不能为0,即分母不能为0。这是四则运算的原则,我们来构造一段除零异常的代码,如下:

Xor ecx,ecx                将ECX是被除数置0

Mov eax,1                  给被除数赋初始值为1

Div ecx                       eax除以ecx

运行这段代码时,OD左下角会显示除零异常。

第三是无效指令和特权指令时异常

我们无法创造一个系统不认识的指令。这类指令会被认为是无效的

特权指令的典型是int3指令,在CC断点那一课我们了解过一些。中断的本质是异常。


注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功