/ExdiGdbSrv

WinDbg-Samples ExdiGdbSrv fork 修复了一部分Vmware调试的问题

Primary LanguageC++

ExdiGdbSrv

项目目的

不知道这是什么项目的先看这里
官方更新太慢, 提前修复一些方便自己调试用的问题
代码写的太野了, 有很多并不安全的操作, 干脆不提pr了

当前已经实现的功能

修复了Vmware->GDB->Exdi的特殊寄存器读取(cr0-cr8, gdt, idt), msr和drx暂时修不了, 写入以后需要了再加
修复了Vmware->GDB->Exdi内存访问断点功能
修复了Vmware->GDB->Exdi的物理内存读写功能
修复了原始项目读取和设置寄存器的好多BUG, 大该是写的人并没有测试过功能到底是否正常运行
实现了搜索Ntoskrnl基址用以应答DBGENG_EXDI_IOCTL_V3_GET_NT_BASE_ADDRESS_VALUE请求,此功能要求必须先修复idt寄存器读取功能

如何使用?

你只需要编译这个项目, 替换掉原本的ExdiGdbSrv.dll并重新注册
然后在windbg的内核调试链接命令里, 像我这样设置
windbg.exe -v -kx exdi:CLSID={29f9906e-9dbe-4d4b-b0fb-6acf7fb6d014},Kd=NTBaseAddr,DataBreaks=Exdi
记住, Kd=NTBaseAddr 是必须的, 不然windbg将使用它那极其愚蠢的搜索方式找了半天也找不到Ntoskrnl基址
要注意的是, 尽量使用传统稳定版本的windbg, 愚蠢的船新版本windbg仍然有很多莫名奇妙的BUG, 这会令人抓狂

下一步预计修复的功能?

我自己用着不舒服了再修