Установка переменных среды в WinDbg

1

Я хочу ввести новую переменную среды в процесс (в частности, эквивалент set COMPLUS_HeapVerify=1 для отладки процесса. Net). Как это сделать в WinDbg? Есть ли способ сделать это без перезапуска сеанса отладки?

Теги:
debugging
windbg
clr

1 ответ

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 конец duly null terminating the last string.

the end in example below is at 0x11412, нулевое завершение последней строки среды

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 выполняется для печати var environement с помощью команды set H

hackenv:\>cdb -c "ezu 11412 \"HACKENVVAR=1337\";g;q" cmd /c set HACK | grep -i 1
337$
HACKENVVAR=1337
  • 0
    И надеюсь, что ваш переполнение буфера не засорило что-то важное.
  • 0
    @ бен да, существует отдаленная возможность для неожиданного поведения, когда недокументированные или неподдерживаемые вещи сделаны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню