首页
社区
课程
招聘
[原创]VMXICE,未完成的内核调试器,源代码,图,BIN,求指点
发表于: 2011-8-10 21:52 38011

[原创]VMXICE,未完成的内核调试器,源代码,图,BIN,求指点

2011-8-10 21:52
38011
收藏
免费 7
支持
分享
最新回复 (41)
雪    币: 165
活跃值: (1431)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
有技术含量的东西应该支持一下
2011-8-14 11:36
0
雪    币: 6976
活跃值: (1372)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
27
难道这就是传说中的大牛???? 我对你的敬仰犹如滔滔江水........
2011-8-14 17:25
0
雪    币: 405
活跃值: (2150)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
28
可惜没PS2键盘,一用就死机,郁闷了。
2011-8-14 19:00
0
雪    币: 230
活跃值: (149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
估计要弄成可初步使用的工具,会花不少时间。
2011-8-15 16:31
0
雪    币: 27
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
SIP
30
膜拜,好东西,自己写内核调试器了。
2011-8-16 00:13
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
太强大了.都是 直接操作显存 啊
2011-8-16 05:38
0
雪    币: 217
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
32
Bitvisor
BluePill
dbvm
Linux的kvm
2011-8-16 10:49
1
雪    币: 217
活跃值: (45)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
33
第一个问题给个建议,
hyperdbg好像没有线程,只有Host和Guest状态。
它借用了DriverEntry的调用线程的CR3空间,所以,它跟被调试线程可能不在同一个CR3进程空间。

当VMEXIT产生退回到Host的时候,OS系统很有可能不认为HOST是有效内核线程。
而这个“线程”访问内存的时候,OS拿着由它产生的GP异常可能自己也不知道该干啥。
尤其是HOST开中断的话,知道我说什么吧。

另:
而且我记得HyperDBG是单CPU的VMX,多核下经常不好使。
显卡驱动是垃圾,我3台机器有2台经常蓝屏。
2011-8-16 11:25
0
雪    币: 304
活跃值: (507)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
34
谢楼上 2个问题已经都完美解决了…

返回vmm的时候 中断状态(IRQL) 属于产生虚拟机事件的那个线程,中断默认关闭,cr3是当初初始化vmcs使用的。重置cr3可以切入当前进程空间。vmm中注入#PF异常可以访问分页内存。

单步慢是没有锁键盘中断。蓝屏或死机是因为在多核平台需要发送IPI中断锁核心。

你是说用了vmxice蓝屏?估计是锁核心的问题,在单核下试试吧,哈哈
vmxice显示是应用层directdraw锁表面然后内核驱动直接操作显存,操作显存的时候只与硬件有关,与显卡驱动程序无关。
2011-8-16 12:48
0
雪    币: 475
活跃值: (59)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
35
终于发现了吗
hyperdbg\core\mmu.c
MmuReadVirtualRegion(cr3, va, buffer, size)
人家都写好了,所以我说你没抄全啊。
2011-8-16 13:33
0
雪    币: 304
活跃值: (507)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
36
我想要读的分页内存已经交换出去了,不在物理内存上,在磁盘上。用线性地址在PDE里根本就无法索引到物理内存。懂吗?

mmu.c 这模块是多余的,无法理解hyperdbg作者弄这么复杂干吗,而且不兼容pae,他只是搞了个映射,没有读磁盘,没有IDT,读分页内存成了笑话。

NTSTATUS MmuReadWriteVirtualRegion(ULONG cr3, ULONG va, PVOID buffer, ULONG size, BOOLEAN isWrite)
{
  NTSTATUS r;
  ULONG phy, i, n;

  i = 0;
  MmuPrint("[MMU] MmuReadWriteVirtualRegion() cr3: %.8x va: %.8x size: %.8x isWrite? %d\n",
           CR3_TO_PDBASE(cr3), va, size, isWrite);

  while (va+i < va+size) {
    n = MIN(size-i, PAGE_SIZE-PAGE_OFFSET(va+i));
    r = MmuGetPhysicalAddress(CR3_TO_PDBASE(cr3), va+i, &phy);
    if (r != STATUS_SUCCESS)
      return STATUS_UNSUCCESSFUL;

NTSTATUS MmuGetPhysicalAddress(ULONG cr3, ULONG va, PULONG pphy)
{
  NTSTATUS r;
  PTE pte;
  BOOLEAN isLarge;

  r = MmuGetPageEntry(CR3_TO_PDBASE(cr3), va, &pte, &isLarge);
  if (r != STATUS_SUCCESS) {
    return STATUS_UNSUCCESSFUL;
  }
2011-8-16 16:31
0
雪    币: 475
活跃值: (59)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
37
这只是我自己对hyperdbg的理解,期待楼主的成品早日完成。
2011-8-16 22:30
0
雪    币: 237
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
markaaa
2011-9-14 15:21
0
雪    币: 451
活跃值: (78)
能力值: ( LV12,RANK:470 )
在线值:
发帖
回帖
粉丝
39
支持mengxp大牛的调试器
2011-9-15 13:04
0
雪    币: 8865
活跃值: (2379)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
40
改改就能不蓝不的XX的实用版调试器啊~
2011-9-15 13:25
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
mark&look
2011-9-15 13:31
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
我想请教你绘图是在VMM里边画的还是利用驱动画的呢?
2011-9-22 13:55
0
游客
登录 | 注册 方可回帖
返回
//