vista下动态开启localkerneldebug的实现与分析

vista下动态开启localkerneldebug的实现与分析

ID:33994457

大小:84.00 KB

页数:7页

时间:2019-03-03

vista下动态开启localkerneldebug的实现与分析_第1页
vista下动态开启localkerneldebug的实现与分析_第2页
vista下动态开启localkerneldebug的实现与分析_第3页
vista下动态开启localkerneldebug的实现与分析_第4页
vista下动态开启localkerneldebug的实现与分析_第5页
资源描述:

《vista下动态开启localkerneldebug的实现与分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Vista下动态开启LocalkernelDebug的实现与分析ConTrailVista出來好一阵了,各位内核爱好者一定很想仔细的探究一下Vista的内核里面有了哪些新调用、新函数和新功能。我们平时最常用的内核调试方式自然非Windbg的LocalKernelDebug莫属,VM双机调试严重占用系统资源,经常会卡死以及跑飞等,支持Vista的第三方调试器如Syser等则还存在各种各样的bug。只有WinDbg简单方便、安全稳定而且占用资源少,但是在Vista下却默认不支持LocalKernelDebug功能,必须运行“bededit-debugon”命令并且重启之后才行。而我们都知道,

2、一个以调试模式启动的Windows和一个正常启动的Windows有很多地方是不一样的,我们需要的是调试一个正常的Windows,而不是Debug模式的Windowso很幸运地在网上找到一个国人写的工具:VistaLKD能够很好的实现我想要的功能。这么cool的软件我当然想知道它是怎么实现的,于是就简单地逆向了一下它的驱动,知其然还要知其所以然,这样才能不断进步嘛:-)用IDA打开VlkdKnl.sys慢慢分析。从DriverEntry开始,先是一小段打印作者及版权信息的UnicodeString赋值及DbgPrint,然后就到了Sub_10486,跟进去看一下,很容易就看到IoGetCu

3、rrentProcess>_strnicmp和字符串"System”。经常进行内核编程的同学应该一眼就能看出这个就是大名鼎鼎的GetProcessNameOffset()B数。返冋刚才的DriverEntry里,把Sub_10486给Rename成GetProcessNameOffset,再把它的返回值dwrod_112e0给改成Offset。接下來的这个Sub_101c4让我郁闷了好久,在这个Sub里一开始先获得KdSystemDebugControl的地址,然后sub_10990这个函数太复杂了,即便是用了传说中的F5插件(Hex-Raysdecompileplugin)也很麻烦,很

4、难理得清楚。不过里面一大堆16进制的数据和emp指令,很容易看出来是在搜特征码。在这儿我用了一个比较取巧的方法,就是动静结合。先静态反汇编ntkrnlpa.exe里面的KdSystemDebugControl函数,然丿匸使用这个工具开了LocalKernelDebug再动态反汇编KdSystemDebugControl函数,再对比代码,就很容易看出这个函数的操作了。我的ntkrnlpa.exe文件版本为6.0.6001.18145,ntkrnlpa.exe里面的KdSystemDebugControl函数反汇编代码如下:push0F4hpushoffsetdword_464AA0call

5、_SEH_prolog4xorebx,ebxmov[ebp+var_28],ebxmov[ebp+var_20],ebxmov[ebp+P],ebxempds:byte_71BFEA,bljnzloc_6810FBempbyte_4F6E67,bljnzloc_6810FBempKdDebuggerEnabled,bljzloc_6810FBloc_6810FB:moveax,0C0000022call_SEH_epilog4retn1Ch下面是使用了工具VistaLKD之后的KdSystemDebugControl函数反汇编代码:lkd>uKdSystemDebugControl120

6、nt!KdSystemDebugControl:81a97bc5push81a97bcapush81a97bcfcall81a97bd4xor81a97bd6mov81a97bd9mov81a97bdcmov81a97bdfjmp8la97beljmp8Ia97be8add81a97bedficom81a97bf2test81a97bf9push81a97bfetest81a97c00add81a97c02add81a97c08or0F4hoffsetnt!??::FNODOBFM::vstring,+Ox6910(8187baa0)nt!_SEH_prolog4(8186a588)eb

7、x,ebxdwordptr[ebp-28h],ebxdwordptr[ebp-20h],ebxdwordptrfebp-24hl,ebxnt!KdSystemDebugControl+0x3e(81a97c03)1085:0F8IB32Feax,lD380000hwordptr[bx+si+0F81h]dwordptr[eax+lD380000h],eax0F819493hal,bhal,0byteptrlecx+458BFC5Dh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。