首页 > 其他 > 详细

RtlIsValidHandler 调试

时间:2020-11-27 19:29:01      阅读:72      评论:0      收藏:0      [点我收藏+]

Win 10 1909( 18363.1198)  ,x32 dbg, NoSEH.exe

程序进入后对栈进行安全操作和局部变量存储后:

技术分享图片

需要注意的是,ntdll 似乎总是占据用户态的最高地址。

技术分享图片

__safe_se_handler_table:

技术分享图片

 

函数地址表中全是 RVA,前面几个 RVA + ntdll 基址后得到的函数对应分别是

75220 ——> KiUserApcExceptionHandler     752B0 ——> KiUserCallBackExceptionHandler

77440 ——> UnWind_Handler4     7B130 ——> __Except_handler4

7BC40 ——> UnWind_handler    89F80 ——> Exceptionhandler     

89FB0 ——> UnWindhandler     8A0B0 ~ 8A0EF ——> FinalExceptionHandlerPad0 ~ 63

技术分享图片

经历 jmp 后,执行对取得值的检验

技术分享图片

接下来计算得到传入参数的 RVA 地址(前面经过检验该函数地址在 ntdll 内)

技术分享图片

接下来进入一个循环,该循环将会通过对 ecx(0x47) 值的计算,得到不同函数的 RVA。将取得的 RVA 与早已存储在局部函数中的 _excpet_handler 的 RVA 作比较,若相符则表明该函数位于异常处理函数地址表中,说明是合法有效的。

技术分享图片

若在 ecx 为 1 前找到函数,则会跳出循环、退出函数并返回 1

技术分享图片

否则程序将调用 memset 函数情况栈中的数据和记录异常的函数,然后退出并返回值 0

技术分享图片

 

RtlIsValidHandler 调试

原文:https://www.cnblogs.com/Rev-omi/p/14048008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!