注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

用windbg在ring3下查看ring0驱动反汇编  

2017-05-29 20:47:41|  分类: 方法技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

驱动程序一般只能在windbg双机调试的时候查看,这总是比在ring3下查看一般程序复杂。

有时候想在ring3下查看ring0驱动的反汇编,这样又方便又不会影响系统运行。

用windbg的调试脚本结合一些api构造一个LoadLibraryEx的参数,使他不解析导入的动态库。

我们只是利用这个技巧载入代码到内存,这样就可以用windbg的u命令反汇编了。

x命令查看符号。uf /c命令查看函数调用关系。等等。

以前用这个技巧在xp下调试win2k的dll,那些dll因为动态库不同载入不成功。

但是不解析就可以载入成功!载入成功后就可以在内存中折腾这些代码了。

 

除了查看代码,有时候可以构造一下数据,动态调试一些没有特殊导入函数的那些代码。

 

使用就用windbg调试记事本等ring3程序,在导入脚本即可。

cdb notepad.exe

 $<e:\dbg\ldwin32k.x

 

加载srv.sys驱动

* ldsrv.x
* LoadLibraryExA
* g @$exentry
.dvalloc /b 0c0c0000 10000
***********************************
r @$t0=kernel32!LoadLibraryExA
r @esp=@esp-20
ed @esp ntdll!DbgBreakPoint 0c0c0100 0 1
eza 0c0c0100 "d:\\ida\\srv\\srv.sys"
g=@$t0

 

加载nt

* ldnt.x
* LoadLibraryExA
* g @$exentry
.dvalloc /b 0c0c0000 10000
***********************************
r @$t0=kernel32!LoadLibraryExA
r @esp=@esp-20
ed @esp ntdll!DbgBreakPoint 0c0c0100 0 1
eza 0c0c0100 "ntoskrnl.exe"
g=@$t0

win32k.sys这个麻烦一点,直接加载他不会成功。

复制到另外一份以dll命名,这样加载才可以成功。
* ldwin32k.x
* LoadLibraryExA
* g @$exentry
.dvalloc /b 0c0c0000 10000
***********************************
r @$t0=kernel32!LoadLibraryExA
r @esp=@esp-20
ed @esp ntdll!DbgBreakPoint 0c0c0100 0 1
eza 0c0c0100 "d:\\temp\\win32k.dll"
g=@$t0

  评论这张
 
阅读(3)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017