ROSE  0.11.122.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 
53  Mechanism mechanism() const { return mechanism_; }
54 
62  size_t maxBytesToCheck() const { return maxBytes_; }
63  void maxBytesToCheck(size_t n) { maxBytes_ = n; }
67  std::string identify(const MemoryMap::Ptr&, rose_addr_t va) const;
68 
69 private:
70  void init();
71 };
72 
73 } // namespace
74 } // namespace
75 
76 #endif
77 #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:63
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:62
Mechanism mechanism() const
Property: The mechanism being used to find magic numbers.
Definition: MagicNumber.h:53