1 #pragma once 2 3 #include "../../analyzer/analyzer.h" 4 #include "pe_classifier.h" 5 #include <forward_list> 6 7 namespace REDasm { 8 9 class PEAnalyzer: public Analyzer 10 { 11 private: 12 typedef std::pair<size_t, std::string> APIInfo; 13 14 public: 15 PEAnalyzer(const PEClassifier* classifier, DisassemblerAPI* disassembler); 16 void analyze() override; 17 18 private: 19 Symbol *getImport(const std::string& library, const std::string& api); 20 ReferenceVector getAPIReferences(const std::string& library, const std::string& api); 21 void findWndProc(address_t address, size_t argidx); 22 void findCRTWinMain(); 23 void findAllWndProc(); 24 25 protected: 26 const PEClassifier* m_classifier; 27 28 private: 29 std::forward_list<APIInfo> m_wndprocapi; 30 }; 31 32 } // namespace REDasm 33