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: EatResolverThunk()17 EatResolverThunk() : eat_entry_(NULL) {} ~EatResolverThunk()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__ 49