.dvalloc 命令使得Windows在目标进程中分配附加的内存
- /b BaseAddress
- 指定内存分配开始的虚拟地址。但只是说在这段分配,不一定为开始地址,如:
0:000> .dvalloc /b 0x7eeeeeee 0x400 Allocated 10000 bytes starting at 7eee0000
0:000> !address 0x7eeeeeee ProcessParametrs 002e1c28 in range 002e0000 0037e000 Environment 002e0810 in range 002e0000 0037e000 7eee0000 : 7eee0000 - 00010000 Type 00020000 MEM_PRIVATE Protect 00000040 PAGE_EXECUTE_READWRITE State 00001000 MEM_COMMIT Usage RegionUsageIsVAD
可以看到,起始地址在7eee0000- /r
- 在虚拟地址空间中保留该内存,但是并不实际分配物理内存。如果使用该选项,调试器会调用VirtualAllocEx 并将 flAllocationType 参数设置为MEM_RESERVE。如果没有使用该选项,则使用的值为MEM_COMMIT | MEM_RESERVE。查看Microsoft Windows SDK获取详细信息。
a (Assemble)
a 命令对指令助记符进行汇编,并将指令代码的结果放入内存。
语法
- Address
- 指定用于放置结果代码的内存块的开始位置
参数
0:000> a 7eee0000
这时会出现一个input,然后可以使用指令助记符
7eee0000 call User32!MessageBoxA call User32!MessageBoxA 7eee0005 0:000> u 7eee0000 7eee0000 e80cea0cf8 call USER32!MessageBoxA (76faea11) 7eee0005 0000 add byte ptr [eax],al
又如直接写入汇编指令:
7eee0000 push eax push eax 7eee0001 push ebx push ebx 7eee0002 mov eax, ebx mov eax, ebx 7eee0004 0:000> u 7eee0000 7eee0000 50 push eax 7eee0001 53 push ebx 7eee0002 8bc3 mov eax,ebx