Windows异常处理机制

OD调试恶意代码时经常会创建vsjitdebugger.exe子进程,如下图:

看名字vsjitdebugger.exe是VisualStudio的just-in-time debuger,恶意代码和VisualStudio肯定没什么联系,为什么恶意代码会创建vsjitdebugger.exe子进程?这和Windows的异常处理机制有关。

1、cpu执行程序汇编代码时,发现异常,会把异常告知操作系统,操作系统首先会让程序自身处理这个异常,程序自身有能力(程序中注册的有异常处理函数)处理,程序就继续运行;

2、程序自身没有能力处理(程序中没有注册异常处理函数),这个异常还没有被处理,就有操作系统来处理,就提示用户是调用\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug处的调试器调试还是结束程序。

如果在有调试器参与的情况下,程序出现异常,操作系统不会把异常处理权交给程序自身而是调试器,调试器可以把处理权继续转交给程序,也可以自己处理(修改异常处代码、更改程序运行路径)

解释恶意代码会创建vsjitdebugger.exe子进程的原因:

恶意代码在被调试器(OD)过程中出现异常--->CPU告知了操作系统--->操作系统异常处理权交给了调试器(OD),调试器(OD)没有选择自己来处理这个异常--->而是又把处理权交给了恶意代码本身,恶意代码作者自身没有写异常助理函数--->处理权又回到操作系统这里,操作系统使用对所有程序都一样的处理方法:提示用户是调用\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug处的调试器调试程序还是结束掉出现异常的程序,于是就出现了开头创建vsjitdebugger.exe子进程的图片。

扫描二维码关注公众号,回复: 5690629 查看本文章

另外vsjitdebugger.exe程序是安装VisualStudio时,附带安装的,注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug处的值也是安装VisualStudio时修改的;

还有注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug的含义就是:进程出现异常时操作系统调用的默认调试器路径;这个是可以有用户来修改的,比如可以设置OD作为默认调试器。

猜你喜欢

转载自blog.csdn.net/singleyellow/article/details/88087430