Home | History | Annotate | Download | only in src
      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__
     49