学习记录----2020.7.29

学习记录

前几天xctf的海外赛是毛子那边办的,跟着一个师傅做题,倒也蛮不错的。
老外的思路果然很骚2333
题目的wp上传到ctf分区了

然后这几天主要就看书那些的,看了些vt以及异常处理的东西。
异常处理以前看过,相当于整理了一下笔记吧
这里记录一下SEH与VEH

VEH与SEH的异同

当异常发生时,VEH会优先于SEH获得程序控制权(如果有调试器的话,调试器会优先于SEH),系统会自动调用通过注册AddVectoredExceptionHandler注册的VEH回调函数,如果修复了异常则返回EXCEPTION_CONTINUE_EXECUTION,随后在异常的发生处以CONTEXT指定的线程环境继续运行,这种情况下SEH就会被跳过。如果回调函数不能处理,则会返回一个EXCEPTION_CONTINUE_SEARCH,之后系统会采取与SEH相同的策略遍历VEH链表。若VEH链表也未能处理,便将控制权回交给系统,随后系统进入SEH处理例程。

而VEH与SEH的不同点主要在于

  • 注册机制不同。SEH的相关信息主要保存于栈中,后注册的回调函数位于SEH链表的首端,所有当异常发生时总是先由内层回调函数优先处理;而VEH的相关信息存储于独立的链表中(实际存储在ntdll中),且VEH在注册中可以指定回调函数是位于链表首或者尾,即可以控制函数的优先处理权。
  • 优先级不同。如上所述,VEH会优先于SEH被调用。
  • 作用范围不同。除了顶层异常处理(这是个全局回调函数)外,SEH的作用范围仅局限于安装它的某个函数内部,即SEH时基于线程的;而VEH可以捕获整个进程的
  • VEH不需要栈展开。SEH的处理是基于栈的,涉及栈展开,有两次被调用的机会;而VEH不是,故只有一次机会

后记

今天洗澡的时候想了想,感觉最近或多或少还是没有全身心投入,打算适当改善一下自己的学习状态。然后就是最近每天晚上还有事情,相当于说也就白天可以拿来学习,所以还是抓紧吧,争取九月份试着去找个实习啥的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值