OLD | NEW |
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "sandbox/win/src/nt_internals.h" | 5 #include "sandbox/win/src/nt_internals.h" |
6 #include "sandbox/win/src/sandbox_types.h" | 6 #include "sandbox/win/src/sandbox_types.h" |
7 | 7 |
8 #ifndef SANDBOX_SRC_PROCESS_THREAD_INTERCEPTION_H__ | 8 #ifndef SANDBOX_SRC_PROCESS_THREAD_INTERCEPTION_H__ |
9 #define SANDBOX_SRC_PROCESS_THREAD_INTERCEPTION_H__ | 9 #define SANDBOX_SRC_PROCESS_THREAD_INTERCEPTION_H__ |
10 | 10 |
(...skipping 18 matching lines...) Expand all Loading... |
29 LPSTR lpCommandLine, | 29 LPSTR lpCommandLine, |
30 LPSECURITY_ATTRIBUTES lpProcessAttributes, | 30 LPSECURITY_ATTRIBUTES lpProcessAttributes, |
31 LPSECURITY_ATTRIBUTES lpThreadAttributes, | 31 LPSECURITY_ATTRIBUTES lpThreadAttributes, |
32 BOOL bInheritHandles, | 32 BOOL bInheritHandles, |
33 DWORD dwCreationFlags, | 33 DWORD dwCreationFlags, |
34 LPVOID lpEnvironment, | 34 LPVOID lpEnvironment, |
35 LPCSTR lpCurrentDirectory, | 35 LPCSTR lpCurrentDirectory, |
36 LPSTARTUPINFOA lpStartupInfo, | 36 LPSTARTUPINFOA lpStartupInfo, |
37 LPPROCESS_INFORMATION lpProcessInformation); | 37 LPPROCESS_INFORMATION lpProcessInformation); |
38 | 38 |
39 typedef HANDLE (WINAPI *CreateThreadFunction)( | 39 typedef HANDLE(WINAPI* CreateThreadFunction)( |
40 LPSECURITY_ATTRIBUTES lpThreadAttributes, | 40 LPSECURITY_ATTRIBUTES lpThreadAttributes, |
41 SIZE_T dwStackSize, | 41 SIZE_T dwStackSize, |
42 LPTHREAD_START_ROUTINE lpStartAddress, | 42 LPTHREAD_START_ROUTINE lpStartAddress, |
43 PVOID lpParameter, | 43 LPVOID lpParameter, |
44 DWORD dwCreationFlags, | 44 DWORD dwCreationFlags, |
45 LPDWORD lpThreadId); | 45 LPDWORD lpThreadId); |
46 | 46 |
47 typedef LCID (WINAPI *GetUserDefaultLCIDFunction)(); | 47 typedef LCID (WINAPI *GetUserDefaultLCIDFunction)(); |
48 | 48 |
49 // Interception of NtOpenThread on the child process. | 49 // Interception of NtOpenThread on the child process. |
50 SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtOpenThread( | 50 SANDBOX_INTERCEPT NTSTATUS WINAPI TargetNtOpenThread( |
51 NtOpenThreadFunction orig_OpenThread, PHANDLE thread, | 51 NtOpenThreadFunction orig_OpenThread, PHANDLE thread, |
52 ACCESS_MASK desired_access, POBJECT_ATTRIBUTES object_attributes, | 52 ACCESS_MASK desired_access, POBJECT_ATTRIBUTES object_attributes, |
53 PCLIENT_ID client_id); | 53 PCLIENT_ID client_id); |
(...skipping 22 matching lines...) Expand all Loading... |
76 LPVOID environment, LPCWSTR current_directory, LPSTARTUPINFOW startup_info, | 76 LPVOID environment, LPCWSTR current_directory, LPSTARTUPINFOW startup_info, |
77 LPPROCESS_INFORMATION process_information); | 77 LPPROCESS_INFORMATION process_information); |
78 | 78 |
79 SANDBOX_INTERCEPT BOOL WINAPI TargetCreateProcessA( | 79 SANDBOX_INTERCEPT BOOL WINAPI TargetCreateProcessA( |
80 CreateProcessAFunction orig_CreateProcessA, LPCSTR application_name, | 80 CreateProcessAFunction orig_CreateProcessA, LPCSTR application_name, |
81 LPSTR command_line, LPSECURITY_ATTRIBUTES process_attributes, | 81 LPSTR command_line, LPSECURITY_ATTRIBUTES process_attributes, |
82 LPSECURITY_ATTRIBUTES thread_attributes, BOOL inherit_handles, DWORD flags, | 82 LPSECURITY_ATTRIBUTES thread_attributes, BOOL inherit_handles, DWORD flags, |
83 LPVOID environment, LPCSTR current_directory, LPSTARTUPINFOA startup_info, | 83 LPVOID environment, LPCSTR current_directory, LPSTARTUPINFOA startup_info, |
84 LPPROCESS_INFORMATION process_information); | 84 LPPROCESS_INFORMATION process_information); |
85 | 85 |
| 86 // Interception of CreateThread in kernel32.dll. |
| 87 SANDBOX_INTERCEPT HANDLE WINAPI |
| 88 TargetCreateThread(CreateThreadFunction orig_CreateThread, |
| 89 LPSECURITY_ATTRIBUTES thread_attributes, |
| 90 SIZE_T stack_size, |
| 91 LPTHREAD_START_ROUTINE start_address, |
| 92 LPVOID parameter, |
| 93 DWORD creation_flags, |
| 94 LPDWORD thread_id); |
| 95 |
86 } // extern "C" | 96 } // extern "C" |
87 | 97 |
88 } // namespace sandbox | 98 } // namespace sandbox |
89 | 99 |
90 #endif // SANDBOX_SRC_PROCESS_THREAD_INTERCEPTION_H__ | 100 #endif // SANDBOX_SRC_PROCESS_THREAD_INTERCEPTION_H__ |
OLD | NEW |