MCPcopy Create free account
hub / github.com/SickleSec/GhostWolf / GetTokenUser

Function GetTokenUser

Ghostwolf/Process.cpp:126–178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124}
125
126BOOL GetTokenUser(IN HANDLE hProcess) {
127 HANDLE hToken = NULL;
128 if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) {
129 PRINT("OpenProcessToken failed");
130 return FALSE;
131 }
132
133 PTOKEN_USER hTokenUser = { 0 };
134 DWORD dwSize = 0;
135 if (!GetTokenInformation(hToken, TokenUser, NULL, 0, &dwSize)) {
136 DWORD dwError = GetLastError();
137 if (dwError != ERROR_INSUFFICIENT_BUFFER) {
138 PRINT("GetTokenInformation querying buffer size failed!");
139 return FALSE;
140 }
141 }
142 hTokenUser = (PTOKEN_USER)malloc(dwSize);
143
144 if (!GetTokenInformation(hToken, TokenUser, hTokenUser, dwSize, &dwSize)) {
145 PRINT("GetTokenInformation failed!");
146 return FALSE;
147 }
148
149 if (hTokenUser == NULL) {
150 free(hTokenUser);
151 return FALSE;
152 }
153
154 wchar_t* UserName = new wchar_t[MAX_NAME];
155 UserName[0] = L'\0';
156 wchar_t* DomainName = new wchar_t[MAX_NAME];
157 DomainName[0] = L'\0';
158
159 DWORD dwMaxUserName = MAX_NAME;
160 DWORD dwMaxDomainName = MAX_NAME;
161 SID_NAME_USE SidUser = SidTypeUser;
162 if (!LookupAccountSidW(NULL, hTokenUser->User.Sid, UserName, &dwMaxUserName, DomainName, &dwMaxDomainName, &SidUser))
163 {
164 PRINT("LookupAccountSidw failed!");
165 free(hTokenUser);
166 return FALSE;
167 }
168
169 PRINTW(DomainName);
170 PRINTW(L"\\");
171 PRINTW(UserName);
172
173 free(hTokenUser);
174 CloseHandle(hToken);
175 delete[] UserName;
176 delete[] DomainName;
177 return FALSE;
178}
179
180BOOL FindProcessPID(LPCWSTR processName, DWORD* pid, HANDLE* hProcess, AppMode mode)
181{

Callers 1

FindProcessPIDFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected