retdec
BoundImportDirectory.h
Go to the documentation of this file.
1 /*
2 * BoundImportDirectory.h - Part of the PeLib library.
3 *
4 * Copyright (c) 2004 - 2005 Sebastian Porst (webmaster@the-interweb.com)
5 * All rights reserved.
6 *
7 * This software is licensed under the zlib/libpng License.
8 * For more details see http://www.opensource.org/licenses/zlib-license.php
9 * or the license information file (license.htm) in the root directory
10 * of PeLib.
11 */
12 
13 #ifndef RETDEC_PELIB_BOUNDIMPORTDIRECTORY_H
14 #define RETDEC_PELIB_BOUNDIMPORTDIRECTORY_H
15 
16 #include "retdec/pelib/PeLibInc.h"
17 #include "retdec/pelib/PeLibAux.h"
19 
20 namespace PeLib
21 {
23 
27  {
28  protected:
29  std::vector<PELIB_IMAGE_BOUND_DIRECTORY> m_vIbd;
30 
31  int read(InputBuffer& inpBuffer, unsigned char* data, unsigned int dwSize);
32  unsigned int totalModules() const;
33  public:
34  virtual ~BoundImportDirectory() = default;
35 
37  int read(ImageLoader & imageLoader); // EXPORT
39  int addBoundImport(const std::string& strModuleName, std::uint32_t dwTds, std::uint16_t dwOmn, std::uint16_t wWfr); // EXPORT
41  int getModuleIndex(const std::string& strModuleName) const; // EXPORT
43  unsigned int calcNumberOfModules() const; // EXPORT
45  int read(unsigned char* pcBuffer, unsigned int uiSize); // EXPORT
47  void rebuild(std::vector<std::uint8_t>& vBuffer, bool fMakeValid = true) const; // EXPORT
49  void clear(); // EXPORT
51  void removeBoundImport(const std::string& strModuleName); // EXPORT
53  unsigned int size() const; // EXPORT
55  int write(const std::string& strFilename, std::uint32_t dwOffset, bool fMakeValid = true) const; // EXPORT
56 
58  std::uint32_t getTimeDateStamp(std::uint32_t dwBidnr) const; // EXPORT
60  std::uint16_t getOffsetModuleName(std::uint32_t dwBidnr) const; // EXPORT
62  std::uint16_t getNumberOfModuleForwarderRefs(std::uint32_t dwBidnr) const; // EXPORT
64  std::string getModuleName(std::uint32_t dwBidnr) const; // EXPORT
65 
67  void setTimeDateStamp(std::uint32_t dwBidnr, std::uint32_t dwTds); // EXPORT
69  void setOffsetModuleName(std::uint32_t dwBidnr, std::uint16_t wOmn); // EXPORT
71  void setNumberOfModuleForwarderRefs(std::uint32_t dwBidnr, std::uint16_t wMfr); // EXPORT
73  void setModuleName(std::uint32_t dwBidnr, const std::string& strModuleName); // EXPORT
74 
75  std::uint32_t getTimeDateStamp(std::uint32_t dwBidnr, std::uint32_t forwardedModule) const; // EXPORT _module
76  std::uint16_t getOffsetModuleName(std::uint32_t dwBidnr, std::uint32_t forwardedModule) const; // EXPORT _module
77  std::uint16_t getNumberOfModuleForwarderRefs(std::uint32_t dwBidnr, std::uint32_t forwardedModule) const; // EXPORT _module
78  std::string getModuleName(std::uint32_t dwBidnr, std::uint32_t forwardedModule) const; // EXPORT _module
79 
80  void setTimeDateStamp(std::uint32_t dwBidnr, std::uint32_t forwardedModule, std::uint32_t dwTds); // EXPORT _module
81  void setOffsetModuleName(std::uint32_t dwBidnr, std::uint32_t forwardedModule, std::uint16_t wOmn); // EXPORT _module
82  void setNumberOfModuleForwarderRefs(std::uint32_t dwBidnr, std::uint32_t forwardedModule, std::uint16_t wMfr); // EXPORT _module
83  void setModuleName(std::uint32_t dwBidnr, std::uint32_t forwardedModule, const std::string& strModuleName); // EXPORT _module
84 
85  std::uint16_t calcNumberOfModuleForwarderRefs(std::uint32_t dwBidnr) const; // EXPORT
86  void addForwardedModule(std::uint32_t dwBidnr, const std::string& name, std::uint32_t timeStamp = 0, std::uint16_t offsetModuleName = 0, std::uint16_t forwardedModules = 0); // EXPORT
87  void removeForwardedModule(std::uint32_t dwBidnr, std::uint16_t forwardedModule); // EXPORT
88  };
89 }
90 
91 #endif
Class that handles the BoundImport directory.
Definition: BoundImportDirectory.h:27
unsigned int totalModules() const
Definition: BoundImportDirectory.cpp:191
std::string getModuleName(std::uint32_t dwBidnr) const
Retrieves the ModuleName value of a bound import.
Definition: BoundImportDirectory.cpp:419
void setNumberOfModuleForwarderRefs(std::uint32_t dwBidnr, std::uint16_t wMfr)
Updates the NumberOfModuleForwarderRefs value of a bound import.
Definition: BoundImportDirectory.cpp:449
std::uint32_t getTimeDateStamp(std::uint32_t dwBidnr) const
Retrieves the TimeDateStamp value of a bound import.
Definition: BoundImportDirectory.cpp:389
void setOffsetModuleName(std::uint32_t dwBidnr, std::uint16_t wOmn)
Updates the OffsetModuleName value of a bound import.
Definition: BoundImportDirectory.cpp:439
void removeForwardedModule(std::uint32_t dwBidnr, std::uint16_t forwardedModule)
Definition: BoundImportDirectory.cpp:526
std::uint16_t getNumberOfModuleForwarderRefs(std::uint32_t dwBidnr) const
Retrieves the NumberOfModuleForwarderRefs value of a bound import.
Definition: BoundImportDirectory.cpp:409
std::uint16_t getOffsetModuleName(std::uint32_t dwBidnr) const
Retrieves the OffsetModuleName value of a bound import.
Definition: BoundImportDirectory.cpp:399
void rebuild(std::vector< std::uint8_t > &vBuffer, bool fMakeValid=true) const
Rebuilds the BoundImport directory.
Definition: BoundImportDirectory.cpp:209
unsigned int calcNumberOfModules() const
Returns the number of files in the BoundImport directory.
Definition: BoundImportDirectory.cpp:75
void setTimeDateStamp(std::uint32_t dwBidnr, std::uint32_t dwTds)
Updates the TimeDateStamp value of a bound import.
Definition: BoundImportDirectory.cpp:429
void setModuleName(std::uint32_t dwBidnr, const std::string &strModuleName)
Updates the ModuleName value of a bound import.
Definition: BoundImportDirectory.cpp:459
int addBoundImport(const std::string &strModuleName, std::uint32_t dwTds, std::uint16_t dwOmn, std::uint16_t wWfr)
Adds another bound import.
Definition: BoundImportDirectory.cpp:29
unsigned int size() const
Returns the size of the BoundImport directory.
Definition: BoundImportDirectory.cpp:319
int write(const std::string &strFilename, std::uint32_t dwOffset, bool fMakeValid=true) const
Writes the current bound import directory to a file.
Definition: BoundImportDirectory.cpp:352
virtual ~BoundImportDirectory()=default
int getModuleIndex(const std::string &strModuleName) const
Identifies a module through it's name.
Definition: BoundImportDirectory.cpp:56
void clear()
Empties the BoundImport directory.
Definition: BoundImportDirectory.cpp:294
std::vector< PELIB_IMAGE_BOUND_DIRECTORY > m_vIbd
Stores the individual BoundImport fields.
Definition: BoundImportDirectory.h:29
void addForwardedModule(std::uint32_t dwBidnr, const std::string &name, std::uint32_t timeStamp=0, std::uint16_t offsetModuleName=0, std::uint16_t forwardedModules=0)
Definition: BoundImportDirectory.cpp:509
void removeBoundImport(const std::string &strModuleName)
Removes a bound import.
Definition: BoundImportDirectory.cpp:303
std::uint16_t calcNumberOfModuleForwarderRefs(std::uint32_t dwBidnr) const
Definition: BoundImportDirectory.cpp:504
int read(InputBuffer &inpBuffer, unsigned char *data, unsigned int dwSize)
Definition: BoundImportDirectory.cpp:87
Definition: ImageLoader.h:138
Definition: InputBuffer.h:23
Definition: BoundImportDirectory.h:21