Czy muszę dostosować uprawnienia tokena, aby pomyślnie wywołać CreateRemoteThread?

Opracowuję narzędzie do debugowania dla mojej aplikacji, aby pomóc mi zdiagnozować zakleszczenia. Aplikacja działa na komputerach mojego klienta i dlatego oczekuję szerokiej gamy systemów operacyjnych, zasad bezpieczeństwa itp.

Technika, której używam, polega na zaimplementowaniu funkcji w aplikacji docelowej, która generuje ślady stosu dla wszystkich wątków, wraz z innymi informacjami diagnostycznymi. Jest to następnie zapisywane w pliku odwzorowanym w pamięci. Tworzę również aplikację narzędziową, która jest używana do wyzwalania tworzenia raportu diagnostycznego, a następnie odczytywania go z pliku odwzorowanego w pamięci.

Ponieważ aplikacja docelowa ma być martwa, program narzędziowy nie może wysłać jej komunikatu, aby wywołać kolekcję diagnostyczną. Zamiast tego używamCreateRemoteThread tak, że mogę być pewien, że dostanę wątek na żywo do wykonania pracy.

Należy zauważyć, że różni się to od metod wtrysku DLL, które zazwyczaj używająLoadLibrary jako proc. wątkuCreateRemoteThread. Mój wątek proc jest punktem wejścia w aplikacji docelowej. Więc nie muszę dzwonićWriteProcessMemory.

Zaimplementowałem to i w moich środowiskach testowych działa dobrze. Zgodnie z dokumentacjąCreateRemoteThread, Potrzebuję uchwytu procesu z następującymi prawami dostępu:

PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERATION, PROCESS_VM_WRITE, iPROCESS_VM_READ

Tak więc mijałem te flagi podczas dzwonieniaOpenProcess.

Teraz, w końcu, do mojego pytania: jakich przywilejów potrzebuję, aby mój żeton był w stanie zadzwonić doOpenProcess odnieść sukces?

W moim środowisku testowym (z systemem Windows 7, włączonym UAC, administratorem) nie miałem żadnych problemów z tokenem domyślnym. Widziałem różne przykładowe kody, które nabywająSE_DEBUG_NAME przywilej przed powołaniemOpenProcess. Zgaduję, że jest to potrzebneWriteProcessMemory gdy wykonuję zastrzyk DLL i nie potrzebuję tego przywileju. Czy są scenariusze, w których musiałbym dostosować uprawnienia mojego tokena?

Nie wiem dokładnie nic o bezpieczeństwie systemu Windows, więc naprawdę doceniam mądre słowa od każdego, kto to robi!

questionAnswers(1)

yourAnswerToTheQuestion