我想將新的環境變量引入到進程中(尤其是調試.Net進程的set COMPLUS_HeapVerify=1
的等效值)。如何在WinDbg中做到這一點?有沒有辦法做到這一點,而無需重新啓動調試會話?在WinDbg中設置環境變量
回答
environment is part of PEB Peb->ProcessParamenters->Environment
。
檢索指針環境,調試者的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妥空執行使用打印environement VAR終止最後環境串
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的設定下面的例子設置H命令
hackenv:\>cdb -c "ezu 11412 \"HACKENVVAR=1337\";g;q" cmd /c set HACK | grep -i 1
337$
HACKENVVAR=1337
並希望你的緩衝區溢出不會破壞重要的東西。 –
@ ben yes當沒有記錄或不支持的事情完成時,存在意外行爲的遠程可能性。 – blabb
- 1. WinDbg環境變量
- 2. 設置環境變量
- 3. 設置Maven環境變量
- 4. 設置Java環境變量?
- 5. 設置apache環境變量
- 6. 設置環境變量
- 7. DrJava設置環境變量
- 8. C設置環境變量
- 9. 設置環境變量
- 10. C#設置環境變量
- 11. 設置環境變量(kubernetes)
- 12. 設置環境變量Windows
- 13. htaccess設置環境變量
- 14. Elasticsearch設置環境變量
- 15. 設置環境變量Linux
- 16. 在javascript中設置環境變量
- 17. 在ubuntu10.4中設置環境變量
- 18. 在WCF中設置環境變量
- 19. 在git中設置環境變量
- 20. 在AWS中設置環境變量EBS
- 21. 在Cygwin中設置環境變量
- 22. 在WebStorm中設置Node.js環境變量
- 23. 在Docker中設置環境變量
- 24. 在Python中設置環境變量
- 25. 在Java Applet中設置環境變量
- 26. 在Maven中設置環境變量
- 27. 在C中設置環境變量
- 28. 在MAMP中設置環境變量?
- 29. 在Gitconfig中設置GIT_SSH環境變量
- 30. 在engineyard中設置環境變量
您是否必須在*另一個*進程中設置環境?難道你不能僅僅在它開始的過程中設置它嗎? (在創建進程時,環境是從父進程複製的。) – Joey
即使有辦法,它也不可能對您的特定情況有所幫助,因爲大多數「configure runtime behavior」設置在啓動時只讀一次... –
@Јοеу在我的情況下,父進程是Visual Studio。關鍵是如何從WinDbg中完成它。此外,我想知道我是否可以在peb中引入_new_變量,而不僅僅是改變內存中的現有變量。 – user2341923