在WinDbg中设置环境变量

时间:2014-05-18 06:49:47

标签: c# .net debugging clr windbg

我想将新的环境变量引入流程(特别是,相当于set COMPLUS_HeapVerify=1来调试.Net流程)。怎么在WinDbg中做到这一点?有没有办法在不重新启动调试会话的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

environment is part of PEB Peb->ProcessParamenters->Environment

在debugee cmd.exe中检索指向环境的指针

hackenv:\>cdb -c "dt ntdll!_PEB -y proc->env @$peb;q" cmd.exe | grep Env
      +0x048 Environment : 0x00010000 Void

查找检索到的地址的内存块大小

hackenv:\>cdb -c "!address 0x10000;q" cmd.exe | grep -i size
Region Size:            00003000

找到此区域中最后一个字符串的地址

hackenv:\>cdb -c "s -[1]su 0x10000 L?3000;q" cmd | tail -n 3
0x00011340
0x000113d4
quit:
最后一个字符串末尾的

write the new Environemt String duly null terminating the last string

the end in example below is at 0x11412 正确null终止最后一个环境字符串

hackenv:\>cdb -c "db 1140c l 10 ;q" cmd | grep 1140c
0:000> cdb: Reading initial command 'db 1140c l 10 ;q'
0001140c  49 00 20 00 00 00 00 00-00 00 00 00 00 00 00 00  I. .............

write your env string at this address

在下面的示例中,在new enviroment string HACKENVVAR中设置cmd.exe并执行cmd.exe以使用set H命令打印环境 var

hackenv:\>cdb -c "ezu 11412 \"HACKENVVAR=1337\";g;q" cmd /c set HACK | grep -i 1
337$
HACKENVVAR=1337