- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Vista下动态开启Local kernel Debug的实现与分析
ConTrail
Vista出來好一阵了,各位内核爱好者一定很想仔细的探究一下Vista的内核里面有了哪 些新调用、新函数和新功能。我们平时最常用的内核调试方式自然非Windbg的Local Kernel Debug莫属,VM双机调试严重占用系统资源,经常会卡死以及跑飞等,支持Vista的第三 方调试器如Syser等则还存在各种各样的bug。只有WinDbg简单方便、安全稳定而且占用 资源少,但是在Vista下却默认不支持Local Kernel Debug功能,必须运行“bededit -debug on” 命令并且重启之后才行。而我们都知道,一个以调试模式启动的Windows和一个正常启动 的Windows有很多地方是不一样的,我们需要的是调试一个正常的Windows,而不是Debug 模式的Windowso很幸运地在网上找到一个国人写的工具:VistaLKD能够很好的实现我想 要的功能。这么cool的软件我当然想知道它是怎么实现的,于是就简单地逆向了一下它的 驱动,知其然还要知其所以然,这样才能不断进步嘛:-)
用IDA打开VlkdKnl.sys慢慢分析。从DriverEntry开始,先是一小段打印作者及版权 信息的UnicodeString赋值及DbgPrint,然后就到了 Sub_ 10486,跟进去看一下,很容易就看 到IoGetCurrentProcess _strnicmp和字符串System”。经常进行内核编程的同学应该一眼 就能看出这个就是大名鼎鼎的GetProcessNameOffset()B数。返冋刚才的DriverEntry里,把 Sub_10486 给 Rename 成 GetProcessNameOffset,再把它的返回值 dwrod_112e0 给改成 Offset。 接下來的这个Sub_101c4让我郁闷了好久,在这个Sub里一开始先获得 KdSystemDebugControl的地址,然后sub_ 10990这个函数太复杂了,即便是用了传说中的 F5插件(Hex-Rays decompile plugin)也很麻烦,很难理得清楚。不过里面一大堆16进制的 数据和emp指令,很容易看出来是在搜特征码。在这儿我用了一个比较取巧的方法,就是 动静结合。先静态反汇编ntkrnlpa.exe里面的KdSystemDebugControl函数,然丿匸使用这个工 具开了 Local Kernel Debug再动态反汇编KdSystemDebugControl函数,再对比代码,就很容 易看出这个函数的操作了。
我的 ntkrnlpa.exe 文件版本为 6.0.6001.18145, ntkrnlpa.exe 里面的 KdSystemDebugControl 函数反汇编代码如下:
push
0F4h
push
offset dword_464AA0
call
_SEH_prolog4
xor
ebx, ebx
mov
[ebp+var_28], ebx
mov
[ebp+var_20], ebx
mov
[ebp+P], ebx
emp
ds:byte_71BFEA, bl
jnz
loc_6810FB
emp
byte_4F6E67, bl
jnz
loc_6810FB
emp
KdDebuggerEnabled, bl
jz
loc_6810FB
loc_6810FB:
mov eax, 0C0000022 call _SEH_epilog4
retn 1 Ch
下面是使用了工具VistaLKD之后的KdSystemDebugControl函数反汇编代码:
lkd u KdSystemDebugControl 120
nt! KdSystemDebugControl:
81a97bc5
81a97bc5
push
81a97bca
push
81a97bcf
call
81a97bd4
xor
81a97bd6
mov
81a97bd9
mov
81a97bdc
mov
81a97bdf
jmp
8la97bel
jmp
8Ia97be8
add
81a97bed
ficom
81 a97bf2
test
81a97bf9
push
81a97bfe
test
81a97c00
add
81a97c02
add
81a97c08
or
offset nt! ?? ::FNODOBFM::vstring,+Ox6910 (8187baa0) nt!_SEH_prolog4 (8186a588)
ebx,ebx
dword ptr [ebp-28h],ebx
dword ptr [ebp-20h],ebx
dword ptr feb
您可能关注的文档
最近下载
- 实验六文本文件的简单应用.doc VIP
- 厨房各作业区点心配菜冷菜间卫生控制.pdf VIP
- 生产安全管理人员考试_金属冶炼(铝及铝合金制造与铸造)_练习题及答案_共350题_第2套_2021_练习模式.pdf VIP
- 风景园林(景观设计)专业中级职称理论考试题库-上(单选题汇总).docx VIP
- 药事管理与法规课程标准.docx VIP
- IEC60664-1 2007 - 标准体系文件资料.pdf VIP
- 10J121《外墙外保温建筑构造》.pdf
- 风景园林(景观设计)专业中级职称理论考试题库-下(多选题汇总).docx VIP
- 危重患者的病情观察ppt课件.pptx VIP
- 《用字母表示数》说课稿-2024-2025学年五年级上册数学人教版[001].docx
文档评论(0)