|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
|
2 // Use of this source code is governed by a BSD-style license that can be |
|
3 // found in the LICENSE file. |
|
4 |
|
5 #ifndef SANDBOX_SRC_EAT_RESOLVER_H__ |
|
6 #define SANDBOX_SRC_EAT_RESOLVER_H__ |
|
7 |
|
8 #include "base/basictypes.h" |
|
9 #include "sandbox/win/src/nt_internals.h" |
|
10 #include "sandbox/win/src/resolver.h" |
|
11 |
|
12 namespace sandbox { |
|
13 |
|
14 // This is the concrete resolver used to perform exports table interceptions. |
|
15 class EatResolverThunk : public ResolverThunk { |
|
16 public: |
|
17 EatResolverThunk() : eat_entry_(NULL) {} |
|
18 virtual ~EatResolverThunk() {} |
|
19 |
|
20 // Implementation of Resolver::Setup. |
|
21 virtual NTSTATUS Setup(const void* target_module, |
|
22 const void* interceptor_module, |
|
23 const char* target_name, |
|
24 const char* interceptor_name, |
|
25 const void* interceptor_entry_point, |
|
26 void* thunk_storage, |
|
27 size_t storage_bytes, |
|
28 size_t* storage_used); |
|
29 |
|
30 // Implementation of Resolver::ResolveTarget. |
|
31 virtual NTSTATUS ResolveTarget(const void* module, |
|
32 const char* function_name, |
|
33 void** address); |
|
34 |
|
35 // Implementation of Resolver::GetThunkSize. |
|
36 virtual size_t GetThunkSize() const; |
|
37 |
|
38 private: |
|
39 // The entry to patch. |
|
40 DWORD* eat_entry_; |
|
41 |
|
42 DISALLOW_COPY_AND_ASSIGN(EatResolverThunk); |
|
43 }; |
|
44 |
|
45 } // namespace sandbox |
|
46 |
|
47 |
|
48 #endif // SANDBOX_SRC_EAT_RESOLVER_H__ |