#pragma once #define NOMINMAX #include #include #include #include #include #include #include #include #include #include #include "ui_qvminspector.h" #include #include #define ABS_TO_IMG( addr, mod_base, img_base ) ( addr - mod_base ) + img_base Q_DECLARE_METATYPE( vm::instrs::virt_instr_t * ) struct rtn_data_t { std::uint32_t rtn_rva; std::vector< vm::instrs::code_block_t > rtn_blks; }; class QVMInspector : public QMainWindow { friend class QVirtualMachineInstructions; friend class QVirtualMachineHandlers; Q_OBJECT public: QVMInspector( QWidget *parent = Q_NULLPTR ); private slots: void OnOpen(); void OnClose(); private: void DbgPrint( QString DbgOutput ); void DbgMsg( QString DbgOutput ); void UpdateUI(); bool SerializeVmp2( std::vector< rtn_data_t > &VirtRtns ); bool InitData(); Ui::QVMProfilerClass ui; QString file_path; std::uint64_t ImgBase, ModuleBase, ImgSize; vm::ctx_t *vmctx; vmp2::v4::FileHeader *FileHeader; std::vector< rtn_data_t > VirtRtns; };