ROSE  0.11.145.0
MagicNumber.h
1 #ifndef ROSE_BinaryAnalysis_MagicNumber_H
2 #define ROSE_BinaryAnalysis_MagicNumber_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_BINARY_ANALYSIS
5 
6 #include <Rose/BinaryAnalysis/MemoryMap.h>
7 
8 namespace Rose {
9 namespace BinaryAnalysis {
10 
14 class MagicNumberDetails;
15 
16 class MagicNumber {
17 public:
21  enum Mechanism {
22  FAST,
23  SLOW,
24  NONE
25  };
26 
27 private:
28  MagicNumberDetails *details_;
29  Mechanism mechanism_;
30  size_t maxBytes_;
31 
32 public:
34  MagicNumber(): details_(NULL), maxBytes_(256) {
35  init();
36  }
37 
38  ~MagicNumber();
39 
40  MagicNumber(const MagicNumber&) = delete;
41  MagicNumber& operator=(const MagicNumber&) = delete;
42 
56  Mechanism mechanism() const { return mechanism_; }
57 
65  size_t maxBytesToCheck() const { return maxBytes_; }
66  void maxBytesToCheck(size_t n) { maxBytes_ = n; }
70  std::string identify(const MemoryMap::Ptr&, rose_addr_t va) const;
71 
72 private:
73  void init();
74 };
75 
76 } // namespace
77 } // namespace
78 
79 #endif
80 #endif
Main namespace for the ROSE library.
Mechanism
How to search for magic numbers.
Definition: MagicNumber.h:21
void maxBytesToCheck(size_t n)
Property: Max number of bytes to check at once.
Definition: MagicNumber.h:66
MagicNumber()
Create a magic number analyzer.
Definition: MagicNumber.h:34
std::string identify(const MemoryMap::Ptr &, rose_addr_t va) const
Identify the magic number at the specified address.
size_t maxBytesToCheck() const
Property: Max number of bytes to check at once.
Definition: MagicNumber.h:65
Mechanism mechanism() const
Property: The mechanism being used to find magic numbers.
Definition: MagicNumber.h:56