RING3到RING0的函数跟踪

前两天面试,一位面试官老师提到了RING3到RING0的跟踪,自己以前是windbg跟踪过一次,想着再用OD跟踪一下

就在当复习一下,当时答面试官哥哥进R0是哪个函数的时候,竟然想不起来,只知道说是Ki开头的那个函数,真是汗颜,不珍惜机会啊

好好记住吧

OD加载咱们的notepad 下断点到CreateFileW,迷惑于是CreateFileW还是CreateFileA可以用PEID看一下,或者OD自己查找不过OD在这里不是太好用

然后OD运行(F9)到这里,看EIP很清晰就是该函数

继续往下调试就很顺利看到调用的NT函数,当然中间的这两个函数需要注意,如下,用它毕竟是因为该函数和字符串,路径有关

然后就看到调用的函数是NtCreateFile,最终是ZwCreateFile,当然他们的入口地址是一样的,如下

现在还还没进去R0呢就再去跟进esi,可以看到他的索引号(42),和调用的KiFastSystemCall,索引号的意思是要在SSDT找位置,对应的位置找对应的函数地址,所以我们懂了实际上R3就是找索引号,然后陷进去到R0,找对应SSDT的位置得真正运行函数地址

KiFastSystemCall是进R0得关键

这是KiFastSystemCall的实现,sysenter就是中断进R0了调用NtCreateFile,返回

返回后记得释放啊

最后retn看到CreateFileW了

 

借用曾是土木人的一张图:

 

posted @ 2018-05-27 23:55  _Flame  阅读(344)  评论(0编辑  收藏  举报