retdec
parameters.h
Go to the documentation of this file.
1 
7 #ifndef RETDEC_CONFIG_PARAMETERS_H
8 #define RETDEC_CONFIG_PARAMETERS_H
9 
10 #include <set>
11 #include <string>
12 
13 #include <rapidjson/document.h>
14 #include <rapidjson/writer.h>
15 
16 #include "retdec/common/address.h"
17 
18 namespace retdec {
19 namespace config {
20 
25 {
26  public:
29  bool isSomethingSelected() const;
30  bool isVerboseOutput() const;
31  bool isKeepAllFunctions() const;
32  bool isSelectedDecodeOnly() const;
33  bool isDetectStaticCode() const;
34  bool isTimeout() const;
35  bool isMaxMemoryLimitHalfRam() const;
36  bool isBackendNoOpts() const;
37  bool isBackendEmitCfg() const;
38  bool isBackendEmitCg() const;
39  bool isBackendAggressiveOpts() const;
40  bool isBackendKeepAllBrackets() const;
41  bool isBackendKeepLibraryFuncs() const;
42  bool isBackendNoTimeVaryingInfo() const;
43  bool isBackendNoVarRenaming() const;
44  bool isBackendNoCompoundOperators() const;
45  bool isBackendNoSymbolicNames() const;
47 
50  void setIsVerboseOutput(bool b);
51  void setIsKeepAllFunctions(bool b);
52  void setIsSelectedDecodeOnly(bool b);
53  void setOrdinalNumbersDirectory(const std::string& n);
54  void setInputFile(const std::string& file);
55  void setInputPdbFile(const std::string& file);
56  void setOutputFile(const std::string& n);
57  void setOutputBitcodeFile(const std::string& file);
58  void setOutputAsmFile(const std::string& file);
59  void setOutputLlvmirFile(const std::string& file);
60  void setOutputConfigFile(const std::string& file);
61  void setOutputUnpackedFile(const std::string& file);
62  void setOutputFormat(const std::string& format);
63  void setLogFile(const std::string& file);
64  void setErrFile(const std::string& file);
65  void setMaxMemoryLimit(uint64_t limit);
66  void setIsMaxMemoryLimitHalfRam(bool f);
67  void setTimeout(uint64_t seconds);
71  void setBackendDisabledOpts(const std::string& o);
72  void setBackendEnabledOpts(const std::string& o);
73  void setBackendCallInfoObtainer(const std::string& val);
74  void setBackendVarRenamer(const std::string& val);
75  void setIsDetectStaticCode(bool b);
76  void setIsBackendNoOpts(bool b);
77  void setIsBackendEmitCfg(bool b);
78  void setIsBackendEmitCg(bool b);
79  void setIsBackendAggressiveOpts(bool b);
80  void setIsBackendKeepAllBrackets(bool b);
81  void setIsBackendKeepLibraryFuncs(bool b);
82  void setIsBackendNoTimeVaryingInfo(bool b);
83  void setIsBackendNoVarRenaming(bool b);
85  void setIsBackendNoSymbolicNames(bool b);
87 
90  const std::string& getOrdinalNumbersDirectory() const;
91  const std::string& getInputFile() const;
92  const std::string& getInputPdbFile() const;
93  const std::string& getOutputFile() const;
94  const std::string& getOutputBitcodeFile() const;
95  const std::string& getOutputAsmFile() const;
96  const std::string& getOutputLlvmirFile() const;
97  const std::string& getOutputConfigFile() const;
98  const std::string& getOutputUnpackedFile() const;
99  const std::string& getOutputFormat() const;
100  const std::string& getLogFile() const;
101  const std::string& getErrFile() const;
102  uint64_t getMaxMemoryLimit() const;
103  uint64_t getTimeout() const;
107  const std::string& getBackendDisabledOpts() const;
108  const std::string& getBackendEnabledOpts() const;
109  const std::string& getBackendCallInfoObtainer() const;
110  const std::string& getBackendVarRenamer() const;
112 
113  void fixRelativePaths(const std::string& configPath);
114 
115  template <typename Writer>
116  void serialize(Writer& writer) const;
117  void deserialize(const rapidjson::Value& val);
118 
119  public:
120  std::set<std::string> userStaticSignaturePaths;
121  std::set<std::string> staticSignaturePaths;
122  std::set<std::string> libraryTypeInfoPaths;
123  std::set<std::string> cryptoPatternPaths;
124  std::set<std::string> abiPaths;
125 
128  std::set<std::string> selectedFunctions;
129 
132  std::set<std::string> selectedNotFoundFunctions;
133 
136 
138  std::vector<std::string> llvmPasses;
139 
140  private:
143  bool _verboseOutput = true;
144 
147  bool _keepAllFunctions = false;
148 
153  bool _selectedDecodeOnly = false;
154 
156  std::string _inputFile;
157  std::string _inputPdbFile;
158  std::string _outputFile;
159  std::string _outputBitcodeFile;
160  std::string _outputAsmFile;
161  std::string _outputLlFile;
162  std::string _outputConfigFile;
163  std::string _outputUnpackedFile;
164  std::string _outputFormat;
165  std::string _logFile;
166  std::string _errFile;
167  uint64_t _maxMemoryLimit = 0;
169  uint64_t _timeout = 0;
170 
171  bool _detectStaticCode = true;
172  std::string _backendDisabledOpts;
173  std::string _backendEnabledOpts;
174  std::string _backendCallInfoObtainer = "optim";
175  std::string _backendVarRenamer = "readable";
176  bool _backendNoOpts = false;
177  bool _backendEmitCfg = false;
178  bool _backendEmitCg = false;
183  bool _backendNoVarRenaming = false;
186 
190 };
191 
192 } // namespace config
193 } // namespace retdec
194 
195 #endif
Definition: address.h:21
Definition: range.h:281
Definition: parameters.h:25
common::AddressRangeContainer selectedRanges
Address ranges selected by the user through selective decompilation.
Definition: parameters.h:135
const std::string & getInputPdbFile() const
Definition: parameters.cpp:359
std::set< std::string > libraryTypeInfoPaths
Definition: parameters.h:122
void setIsBackendNoTimeVaryingInfo(bool b)
Definition: parameters.cpp:324
const std::string & getOutputLlvmirFile() const
Definition: parameters.cpp:379
const std::string & getErrFile() const
Definition: parameters.cpp:404
const std::string & getLogFile() const
Definition: parameters.cpp:399
const std::string & getInputFile() const
Definition: parameters.cpp:354
void setOrdinalNumbersDirectory(const std::string &n)
Definition: parameters.cpp:230
void setOutputLlvmirFile(const std::string &file)
Definition: parameters.cpp:200
void setTimeout(uint64_t seconds)
Definition: parameters.cpp:255
bool _backendNoTimeVaryingInfo
Definition: parameters.h:182
std::string _errFile
Definition: parameters.h:166
void setIsBackendNoOpts(bool b)
Definition: parameters.cpp:294
std::string _logFile
Definition: parameters.h:165
std::string _outputLlFile
Definition: parameters.h:161
uint64_t getMaxMemoryLimit() const
Definition: parameters.cpp:409
const std::string & getOutputAsmFile() const
Definition: parameters.cpp:374
bool _verboseOutput
Definition: parameters.h:143
std::set< std::string > cryptoPatternPaths
Definition: parameters.h:123
retdec::common::Address _mainAddress
Definition: parameters.h:188
std::string _backendDisabledOpts
Definition: parameters.h:172
bool isBackendAggressiveOpts() const
Definition: parameters.cpp:125
bool isSelectedDecodeOnly() const
Definition: parameters.cpp:93
std::string _backendCallInfoObtainer
Definition: parameters.h:174
std::string _outputAsmFile
Definition: parameters.h:160
void setIsBackendNoSymbolicNames(bool b)
Definition: parameters.cpp:339
void setOutputFormat(const std::string &format)
Definition: parameters.cpp:215
std::set< std::string > abiPaths
Definition: parameters.h:124
std::set< std::string > selectedNotFoundFunctions
Definition: parameters.h:132
void setIsMaxMemoryLimitHalfRam(bool f)
Definition: parameters.cpp:250
bool _backendKeepAllBrackets
Definition: parameters.h:180
void setOutputAsmFile(const std::string &file)
Definition: parameters.cpp:195
bool _backendEmitCfg
Definition: parameters.h:177
void setInputFile(const std::string &file)
Definition: parameters.cpp:235
void setLogFile(const std::string &file)
Definition: parameters.cpp:220
retdec::common::Address _entryPoint
Definition: parameters.h:187
const std::string & getBackendCallInfoObtainer() const
Definition: parameters.cpp:444
bool isMaxMemoryLimitHalfRam() const
Definition: parameters.cpp:105
std::string _outputConfigFile
Definition: parameters.h:162
const std::string & getOutputFile() const
Definition: parameters.cpp:364
std::set< std::string > selectedFunctions
Definition: parameters.h:128
std::string _outputUnpackedFile
Definition: parameters.h:163
void setBackendCallInfoObtainer(const std::string &val)
Definition: parameters.cpp:284
void setIsBackendAggressiveOpts(bool b)
Definition: parameters.cpp:309
void setIsVerboseOutput(bool b)
Definition: parameters.cpp:171
bool _backendKeepLibraryFuncs
Definition: parameters.h:181
std::string _outputFormat
Definition: parameters.h:164
std::string _outputBitcodeFile
Definition: parameters.h:159
bool _detectStaticCode
Definition: parameters.h:171
bool _backendNoCompoundOperators
Definition: parameters.h:184
void setBackendVarRenamer(const std::string &val)
Definition: parameters.cpp:289
bool isKeepAllFunctions() const
Definition: parameters.cpp:83
void setEntryPoint(const retdec::common::Address &a)
Definition: parameters.cpp:260
bool _maxMemoryLimitHalfRam
Definition: parameters.h:168
bool _backendNoOpts
Definition: parameters.h:176
const std::string & getOutputBitcodeFile() const
Definition: parameters.cpp:369
void setOutputConfigFile(const std::string &file)
Definition: parameters.cpp:205
void setMaxMemoryLimit(uint64_t limit)
Definition: parameters.cpp:245
bool _backendEmitCg
Definition: parameters.h:178
const std::string & getBackendDisabledOpts() const
Definition: parameters.cpp:434
void setIsBackendNoCompoundOperators(bool b)
Definition: parameters.cpp:334
void setIsBackendEmitCfg(bool b)
Definition: parameters.cpp:299
void deserialize(const rapidjson::Value &val)
Definition: parameters.cpp:559
void setIsBackendNoVarRenaming(bool b)
Definition: parameters.cpp:329
const std::string & getOutputUnpackedFile() const
Definition: parameters.cpp:389
bool isSomethingSelected() const
Definition: parameters.cpp:100
void fixRelativePaths(const std::string &configPath)
Definition: parameters.cpp:476
bool isBackendNoSymbolicNames() const
Definition: parameters.cpp:155
retdec::common::Address getMainAddress() const
Definition: parameters.cpp:424
void setSectionVMA(const retdec::common::Address &a)
Definition: parameters.cpp:269
bool _keepAllFunctions
Definition: parameters.h:147
uint64_t getTimeout() const
Definition: parameters.cpp:414
const std::string & getOutputFormat() const
Definition: parameters.cpp:394
std::vector< std::string > llvmPasses
LLVM passes.
Definition: parameters.h:138
bool isBackendNoVarRenaming() const
Definition: parameters.cpp:145
void serialize(Writer &writer) const
Definition: parameters.cpp:493
void setIsBackendEmitCg(bool b)
Definition: parameters.cpp:304
const std::string & getBackendVarRenamer() const
Definition: parameters.cpp:449
void setMainAddress(const retdec::common::Address &a)
Definition: parameters.cpp:264
std::set< std::string > staticSignaturePaths
Definition: parameters.h:121
void setIsSelectedDecodeOnly(bool b)
Definition: parameters.cpp:180
void setInputPdbFile(const std::string &file)
Definition: parameters.cpp:240
bool isBackendEmitCfg() const
Definition: parameters.cpp:115
std::string _inputFile
Definition: parameters.h:156
void setIsKeepAllFunctions(bool b)
Definition: parameters.cpp:176
std::string _backendVarRenamer
Definition: parameters.h:175
void setIsBackendKeepAllBrackets(bool b)
Definition: parameters.cpp:314
bool isBackendNoCompoundOperators() const
Definition: parameters.cpp:150
void setIsBackendKeepLibraryFuncs(bool b)
Definition: parameters.cpp:319
bool isBackendKeepAllBrackets() const
Definition: parameters.cpp:130
void setOutputUnpackedFile(const std::string &file)
Definition: parameters.cpp:210
void setErrFile(const std::string &file)
Definition: parameters.cpp:225
const std::string & getOrdinalNumbersDirectory() const
Definition: parameters.cpp:349
retdec::common::Address _sectionVMA
Definition: parameters.h:189
std::string _inputPdbFile
Definition: parameters.h:157
retdec::common::Address getSectionVMA() const
Definition: parameters.cpp:429
bool isBackendNoTimeVaryingInfo() const
Definition: parameters.cpp:140
void setBackendDisabledOpts(const std::string &o)
Definition: parameters.cpp:274
retdec::common::Address getEntryPoint() const
Definition: parameters.cpp:419
bool isVerboseOutput() const
Definition: parameters.cpp:74
void setBackendEnabledOpts(const std::string &o)
Definition: parameters.cpp:279
void setOutputBitcodeFile(const std::string &file)
Definition: parameters.cpp:190
bool isBackendKeepLibraryFuncs() const
Definition: parameters.cpp:135
const std::string & getBackendEnabledOpts() const
Definition: parameters.cpp:439
std::string _outputFile
Definition: parameters.h:158
bool isBackendEmitCg() const
Definition: parameters.cpp:120
std::string _backendEnabledOpts
Definition: parameters.h:173
uint64_t _maxMemoryLimit
Definition: parameters.h:167
bool isTimeout() const
Definition: parameters.cpp:166
bool _selectedDecodeOnly
Definition: parameters.h:153
bool isBackendNoOpts() const
Definition: parameters.cpp:110
std::string _ordinalNumbersDirectory
Definition: parameters.h:155
bool isDetectStaticCode() const
Definition: parameters.cpp:161
bool _backendNoVarRenaming
Definition: parameters.h:183
bool _backendNoSymbolicNames
Definition: parameters.h:185
void setOutputFile(const std::string &n)
Definition: parameters.cpp:185
const std::string & getOutputConfigFile() const
Definition: parameters.cpp:384
void setIsDetectStaticCode(bool b)
Definition: parameters.cpp:344
bool _backendAggressiveOpts
Definition: parameters.h:179
uint64_t _timeout
Definition: parameters.h:169
std::set< std::string > userStaticSignaturePaths
Definition: parameters.h:120
Address, address pair and other derived class representation.
Definition: archive_wrapper.h:19