retdec
visual_basic_info.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_FILEFORMAT_TYPES_VISUAL_BASIC_VISUAL_BASIC_INFO_H
8 #define RETDEC_FILEFORMAT_TYPES_VISUAL_BASIC_VISUAL_BASIC_INFO_H
9 
10 #include <string>
11 #include <vector>
12 #include <memory>
13 
16 
17 namespace retdec {
18 namespace fileformat {
19 
24 {
25  private:
26  // VB Header
27  std::string languageDLL;
28  std::string backupLanguageDLL;
29  std::string projectExeName;
30  std::string projectDescription;
31  std::string projectHelpFile;
32  std::string projectName;
33  std::uint32_t languageDLLPrimaryLCID = 0;
34  std::uint32_t languageDLLSecondaryLCID = 0;
35 
36  // VB Proj Info
37  std::string projectPath;
38 
39  // VB Object table
40  std::string objectTableGUID;
41  std::uint32_t projectPrimaryLCID = 0;
42  std::uint32_t projectSecondaryLCID = 0;
43  std::vector<std::unique_ptr<VisualBasicObject>> objects;
44 
45  // VB extern table
46  std::vector<std::unique_ptr<VisualBasicExtern>> externs;
47 
48  // COM register data
49  std::string typeLibCLSID;
50  std::uint32_t typeLibLCID = 0;
51  std::uint16_t typeLibMajorVersion = 0;
52  std::uint16_t typeLibMinorVersion = 0;
53 
54  // COM register info
55  std::string COMObjectName;
56  std::string COMObjectDescription;
57  std::string COMObjectCLSID;
59  std::string COMObjectEventsCLSID;
60  std::string COMObjectType;
61 
62  // others
63  std::string externTableHashCrc32;
64  std::string externTableHashMd5;
65  std::string externTableHashSha256;
66  std::string objectTableHashCrc32;
67  std::string objectTableHashMd5;
68  std::string objectTableHashSha256;
69 
74  bool validTypeLibLCID = false;
77  bool pcodeFlag = false;
78 
79  std::string guidToStr(const std::uint8_t data[16]);
80 
81  public:
84  const std::string &getLanguageDLL() const;
85  const std::string &getBackupLanguageDLL() const;
86  const std::string &getProjectExeName() const;
87  const std::string &getProjectDescription() const;
88  const std::string &getProjectHelpFile() const;
89  const std::string &getProjectName() const;
90  bool getLanguageDLLPrimaryLCID(std::uint32_t &res) const;
91  bool getLanguageDLLSecondaryLCID(std::uint32_t &res) const;
92  const std::string &getProjectPath() const;
93  bool getProjectPrimaryLCID(std::uint32_t &res) const;
94  bool getProjectSecondaryLCID(std::uint32_t &res) const;
95  const std::vector<std::unique_ptr<VisualBasicObject>> &getObjects() const;
96  const std::vector<std::unique_ptr<VisualBasicExtern>> &getExterns() const;
97  const VisualBasicObject *getObject(std::size_t position) const;
98  const VisualBasicExtern *getExtern(std::size_t position) const;
99  std::size_t getNumberOfObjects() const;
100  std::size_t getNumberOfExterns() const;
101  const std::string &getObjectTableGUID() const;
102  const std::string &getTypeLibCLSID() const;
103  bool getTypeLibLCID(std::uint32_t &res) const;
104  bool getTypeLibMajorVersion(std::uint16_t &res) const;
105  bool getTypeLibMinorVersion(std::uint16_t &res) const;
106  const std::string &getCOMObjectName() const;
107  const std::string &getCOMObjectDescription() const;
108  const std::string &getCOMObjectCLSID() const;
109  const std::string &getCOMObjectInterfaceCLSID() const;
110  const std::string &getCOMObjectEventsCLSID() const;
111  const std::string &getCOMObjectType() const;
112  const std::string &getExternTableHashCrc32() const;
113  const std::string &getExternTableHashMd5() const;
114  const std::string &getExternTableHashSha256() const;
115  const std::string &getObjectTableHashCrc32() const;
116  const std::string &getObjectTableHashMd5() const;
117  const std::string &getObjectTableHashSha256() const;
119 
122  void setLanguageDLL(const std::string &lDll);
123  void setBackupLanguageDLL(const std::string &blDll);
124  void setProjectExeName(const std::string &exeName);
125  void setProjectDescription(const std::string &desc);
126  void setProjectHelpFile(const std::string &helpFile);
127  void setProjectName(const std::string &name);
128  void setLanguageDLLPrimaryLCID(std::uint32_t lDllPrimLCID);
129  void setLanguageDLLSecondaryLCID(std::uint32_t lDllSecLCID);
130  void setProjectPath(const std::string &path);
131  void setProjectPrimaryLCID(std::uint32_t primLCID);
132  void setProjectSecondaryLCID(std::uint32_t secLCID);
133  void setTypeLibCLSID(const std::uint8_t data[16]);
134  void setTypeLibLCID(std::uint32_t tlbLCID);
135  void setPcode(bool set);
136  void setObjectTableGUID(const std::uint8_t data[16]);
137  void setTypeLibMajorVersion(std::uint16_t majVer);
138  void setTypeLibMinorVersion(std::uint16_t minVer);
139  void setCOMObjectName(const std::string &name);
140  void setCOMObjectDescription(const std::string &description);
141  void setCOMObjectCLSID(const std::uint8_t data[16]);
142  void setCOMObjectInterfaceCLSID(const std::uint8_t data[16]);
143  void setCOMObjectEventsCLSID(const std::uint8_t data[16]);
144  void setCOMObjectType(std::uint8_t type);
146 
149  void addObject(std::unique_ptr<VisualBasicObject>&& obj);
150  void addExtern(std::unique_ptr<VisualBasicExtern>&& ext);
151  bool hasProjectName() const;
152  bool hasProjectDescription() const;
153  bool hasProjectHelpFile() const;
154  bool isPcode() const;
158 };
159 
160 } // namespace fileformat
161 } // namespace retdec
162 
163 #endif
Definition: visual_basic_extern.h:19
Definition: visual_basic_info.h:24
std::uint16_t typeLibMinorVersion
Definition: visual_basic_info.h:52
std::string languageDLL
Definition: visual_basic_info.h:27
const std::string & getTypeLibCLSID() const
Definition: visual_basic_info.cpp:209
void computeExternTableHashes()
Definition: visual_basic_info.cpp:662
std::vector< std::unique_ptr< VisualBasicExtern > > externs
Definition: visual_basic_info.h:46
bool validProjectPrimaryLCID
Definition: visual_basic_info.h:72
std::string COMObjectDescription
Definition: visual_basic_info.h:56
bool hasProjectDescription() const
Definition: visual_basic_info.cpp:636
std::uint32_t languageDLLSecondaryLCID
Definition: visual_basic_info.h:34
const std::string & getLanguageDLL() const
Definition: visual_basic_info.cpp:22
const VisualBasicObject * getObject(std::size_t position) const
Definition: visual_basic_info.cpp:163
void setProjectHelpFile(const std::string &helpFile)
Definition: visual_basic_info.cpp:407
bool hasProjectHelpFile() const
Definition: visual_basic_info.cpp:645
bool validLanguageDLLPrimaryLCID
Definition: visual_basic_info.h:70
bool getTypeLibMajorVersion(std::uint16_t &res) const
Definition: visual_basic_info.cpp:234
void addExtern(std::unique_ptr< VisualBasicExtern > &&ext)
Definition: visual_basic_info.cpp:618
void setCOMObjectCLSID(const std::uint8_t data[16])
Definition: visual_basic_info.cpp:566
bool validTypeLibLCID
Definition: visual_basic_info.h:74
const std::string & getBackupLanguageDLL() const
Definition: visual_basic_info.cpp:31
std::string COMObjectType
Definition: visual_basic_info.h:60
const std::string & getCOMObjectDescription() const
Definition: visual_basic_info.cpp:272
std::string projectPath
Definition: visual_basic_info.h:37
void setLanguageDLLSecondaryLCID(std::uint32_t lDllSecLCID)
Definition: visual_basic_info.cpp:435
std::string projectDescription
Definition: visual_basic_info.h:30
const std::string & getObjectTableHashCrc32() const
Definition: visual_basic_info.cpp:344
void setProjectSecondaryLCID(std::uint32_t secLCID)
Definition: visual_basic_info.cpp:481
const std::string & getObjectTableHashMd5() const
Definition: visual_basic_info.cpp:353
void setTypeLibLCID(std::uint32_t tlbLCID)
Definition: visual_basic_info.cpp:500
std::string projectName
Definition: visual_basic_info.h:32
bool getTypeLibLCID(std::uint32_t &res) const
Definition: visual_basic_info.cpp:219
std::vector< std::unique_ptr< VisualBasicObject > > objects
Definition: visual_basic_info.h:43
const std::string & getCOMObjectInterfaceCLSID() const
Definition: visual_basic_info.cpp:290
std::string externTableHashSha256
Definition: visual_basic_info.h:65
bool validLanguageDLLSecondaryLCID
Definition: visual_basic_info.h:71
const std::string & getObjectTableHashSha256() const
Definition: visual_basic_info.cpp:362
std::uint32_t projectPrimaryLCID
Definition: visual_basic_info.h:41
void setProjectPrimaryLCID(std::uint32_t primLCID)
Definition: visual_basic_info.cpp:471
const std::string & getProjectPath() const
Definition: visual_basic_info.cpp:105
void computeObjectTableHashes()
Definition: visual_basic_info.cpp:695
void setProjectPath(const std::string &path)
Definition: visual_basic_info.cpp:445
void setCOMObjectType(std::uint8_t type)
Definition: visual_basic_info.cpp:593
void setCOMObjectName(const std::string &name)
Definition: visual_basic_info.cpp:548
const std::string & getProjectHelpFile() const
Definition: visual_basic_info.cpp:58
void setBackupLanguageDLL(const std::string &blDll)
Definition: visual_basic_info.cpp:380
const std::string & getExternTableHashCrc32() const
Definition: visual_basic_info.cpp:317
std::uint32_t typeLibLCID
Definition: visual_basic_info.h:50
const std::vector< std::unique_ptr< VisualBasicExtern > > & getExterns() const
Definition: visual_basic_info.cpp:153
const std::string & getCOMObjectName() const
Definition: visual_basic_info.cpp:263
std::string typeLibCLSID
Definition: visual_basic_info.h:49
const std::string & getCOMObjectEventsCLSID() const
Definition: visual_basic_info.cpp:299
void setTypeLibMajorVersion(std::uint16_t majVer)
Definition: visual_basic_info.cpp:528
void setCOMObjectInterfaceCLSID(const std::uint8_t data[16])
Definition: visual_basic_info.cpp:575
bool getProjectPrimaryLCID(std::uint32_t &res) const
Definition: visual_basic_info.cpp:115
bool validProjectSecondaryLCID
Definition: visual_basic_info.h:73
std::string externTableHashMd5
Definition: visual_basic_info.h:64
void setObjectTableGUID(const std::uint8_t data[16])
Definition: visual_basic_info.cpp:519
bool pcodeFlag
Definition: visual_basic_info.h:77
void setCOMObjectDescription(const std::string &description)
Definition: visual_basic_info.cpp:557
std::string externTableHashCrc32
Definition: visual_basic_info.h:63
const std::string & getCOMObjectCLSID() const
Definition: visual_basic_info.cpp:281
const std::string & getProjectDescription() const
Definition: visual_basic_info.cpp:49
bool getProjectSecondaryLCID(std::uint32_t &res) const
Definition: visual_basic_info.cpp:130
bool isPcode() const
Definition: visual_basic_info.cpp:654
std::size_t getNumberOfObjects() const
Definition: visual_basic_info.cpp:182
const std::vector< std::unique_ptr< VisualBasicObject > > & getObjects() const
Definition: visual_basic_info.cpp:144
void setTypeLibMinorVersion(std::uint16_t minVer)
Definition: visual_basic_info.cpp:538
std::string projectHelpFile
Definition: visual_basic_info.h:31
const std::string & getExternTableHashSha256() const
Definition: visual_basic_info.cpp:335
void setLanguageDLLPrimaryLCID(std::uint32_t lDllPrimLCID)
Definition: visual_basic_info.cpp:425
std::uint32_t languageDLLPrimaryLCID
Definition: visual_basic_info.h:33
std::string COMObjectCLSID
Definition: visual_basic_info.h:57
bool getTypeLibMinorVersion(std::uint16_t &res) const
Definition: visual_basic_info.cpp:249
void setTypeLibCLSID(const std::uint8_t data[16])
Definition: visual_basic_info.cpp:491
std::uint32_t projectSecondaryLCID
Definition: visual_basic_info.h:42
std::string COMObjectInterfaceCLSID
Definition: visual_basic_info.h:58
void setProjectExeName(const std::string &exeName)
Definition: visual_basic_info.cpp:389
const std::string & getProjectName() const
Definition: visual_basic_info.cpp:67
std::string COMObjectName
Definition: visual_basic_info.h:55
std::string backupLanguageDLL
Definition: visual_basic_info.h:28
const std::string & getCOMObjectType() const
Definition: visual_basic_info.cpp:308
std::string guidToStr(const std::uint8_t data[16])
Definition: visual_basic_info.cpp:738
std::string objectTableGUID
Definition: visual_basic_info.h:40
std::size_t getNumberOfExterns() const
Definition: visual_basic_info.cpp:191
const std::string & getExternTableHashMd5() const
Definition: visual_basic_info.cpp:326
bool hasProjectName() const
Definition: visual_basic_info.cpp:627
std::string objectTableHashSha256
Definition: visual_basic_info.h:68
const std::string & getProjectExeName() const
Definition: visual_basic_info.cpp:40
bool validTypeLibMajorVersion
Definition: visual_basic_info.h:75
const std::string & getObjectTableGUID() const
Definition: visual_basic_info.cpp:200
std::string projectExeName
Definition: visual_basic_info.h:29
void setLanguageDLL(const std::string &lDll)
Definition: visual_basic_info.cpp:371
void addObject(std::unique_ptr< VisualBasicObject > &&obj)
Definition: visual_basic_info.cpp:609
bool validTypeLibMinorVersion
Definition: visual_basic_info.h:76
void setCOMObjectEventsCLSID(const std::uint8_t data[16])
Definition: visual_basic_info.cpp:584
std::string COMObjectEventsCLSID
Definition: visual_basic_info.h:59
void setPcode(bool set)
Definition: visual_basic_info.cpp:510
std::uint16_t typeLibMajorVersion
Definition: visual_basic_info.h:51
void setProjectName(const std::string &name)
Definition: visual_basic_info.cpp:416
void setProjectDescription(const std::string &desc)
Definition: visual_basic_info.cpp:398
bool getLanguageDLLSecondaryLCID(std::uint32_t &res) const
Definition: visual_basic_info.cpp:91
const VisualBasicExtern * getExtern(std::size_t position) const
Definition: visual_basic_info.cpp:173
bool getLanguageDLLPrimaryLCID(std::uint32_t &res) const
Definition: visual_basic_info.cpp:77
std::string objectTableHashMd5
Definition: visual_basic_info.h:67
std::string objectTableHashCrc32
Definition: visual_basic_info.h:66
Definition: visual_basic_object.h:20
Definition: archive_wrapper.h:19
Class for visual basic extern.
Class for visual basic object.