OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #ifndef SANDBOX_SRC_POLICY_BROKER_H__ | 5 #ifndef SANDBOX_SRC_POLICY_BROKER_H__ |
6 #define SANDBOX_SRC_POLICY_BROKER_H__ | 6 #define SANDBOX_SRC_POLICY_BROKER_H__ |
7 | 7 |
8 namespace sandbox { | 8 namespace sandbox { |
9 | 9 |
10 class InterceptionManager; | 10 class InterceptionManager; |
11 class TargetProcess; | 11 class TargetProcess; |
12 | 12 |
13 // Sets up interceptions not controlled by explicit policies. | 13 // Sets up interceptions not controlled by explicit policies. |
14 bool SetupBasicInterceptions(InterceptionManager* manager); | 14 bool SetupBasicInterceptions(InterceptionManager* manager); |
15 | 15 |
16 // Sets up imports from NTDLL for the given target process so the interceptions | 16 // Sets up imports from NTDLL for the given target process so the interceptions |
17 // can work. | 17 // can work. |
18 bool SetupNtdllImports(TargetProcess *child); | 18 bool SetupNtdllImports(TargetProcess *child); |
19 | 19 |
20 // This macro simply calls interception_manager.AddToPatchedFunctions with | 20 // This macro simply calls interception_manager.AddToPatchedFunctions with |
21 // the given service to intercept (INTERCEPTION_SERVICE_CALL), and assumes that | 21 // the given service to intercept (INTERCEPTION_SERVICE_CALL), and assumes that |
22 // the interceptor is called "TargetXXX", where XXX is the name of the service. | 22 // the interceptor is called "TargetXXX", where XXX is the name of the service. |
23 // Note that exported_target is the actual exported name of the interceptor, | 23 // Note that exported_target is the actual exported name of the interceptor, |
24 // following the calling convention of a service call (WINAPI = with the "C" | 24 // following the calling convention of a service call (WINAPI = with the "C" |
25 // underscore and the number of bytes to pop out of the stack) | 25 // underscore and the number of bytes to pop out of the stack) |
26 #if SANDBOX_EXPORTS | 26 #if SANDBOX_EXPORTS |
27 #define INTERCEPT_NT(manager, service, exported_target) \ | 27 #define INTERCEPT_NT(manager, service, exported_target) \ |
28 (&Target##service) ? \ | 28 ((&Target##service) ? \ |
29 manager->AddToPatchedFunctions(kNtdllName, #service, \ | 29 manager->AddToPatchedFunctions(kNtdllName, #service, \ |
30 sandbox::INTERCEPTION_SERVICE_CALL, \ | 30 sandbox::INTERCEPTION_SERVICE_CALL, \ |
31 exported_target) : false | 31 exported_target) : false) |
32 | 32 |
33 #define INTERCEPT_EAT(manager, dll, function, exported_target) \ | 33 #define INTERCEPT_EAT(manager, dll, function, exported_target) \ |
34 (&Target##function) ? \ | 34 ((&Target##function) ? \ |
35 manager->AddToPatchedFunctions(dll, #function, sandbox::INTERCEPTION_EAT, \ | 35 manager->AddToPatchedFunctions(dll, #function, sandbox::INTERCEPTION_EAT, \ |
36 exported_target) : false | 36 exported_target) : false) |
37 #else | 37 #else |
38 #define INTERCEPT_NT(manager, service, exported_target) \ | 38 #define INTERCEPT_NT(manager, service, exported_target) \ |
39 manager->AddToPatchedFunctions(kNtdllName, #service, \ | 39 manager->AddToPatchedFunctions(kNtdllName, #service, \ |
40 sandbox::INTERCEPTION_SERVICE_CALL, \ | 40 sandbox::INTERCEPTION_SERVICE_CALL, \ |
41 &Target##service) | 41 &Target##service) |
42 | 42 |
43 #define INTERCEPT_EAT(manager, dll, function, exported_target) \ | 43 #define INTERCEPT_EAT(manager, dll, function, exported_target) \ |
44 manager->AddToPatchedFunctions(dll, #function, sandbox::INTERCEPTION_EAT, \ | 44 manager->AddToPatchedFunctions(dll, #function, sandbox::INTERCEPTION_EAT, \ |
45 &Target##function) | 45 &Target##function) |
46 #endif | 46 #endif |
47 | 47 |
48 } // namespace sandbox | 48 } // namespace sandbox |
49 | 49 |
50 #endif // SANDBOX_SRC_POLICY_BROKER_H__ | 50 #endif // SANDBOX_SRC_POLICY_BROKER_H__ |
51 | 51 |
OLD | NEW |