updated the project to the newest vmprofiler, project uses cmkr (cmake)

now...
merge-requests/3/head
_xeroxz 3 years ago
parent b328170e51
commit ac817b1674

1
.gitignore vendored

@ -17,6 +17,7 @@
mono_crash.*
# Build results
build/
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/

@ -0,0 +1,138 @@
# This file is automatically generated from cmake.toml - DO NOT EDIT
# See https://github.com/build-cpp/cmkr for more information
cmake_minimum_required(VERSION 3.15)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-tree builds are not supported. Run CMake from a separate directory: cmake -B build")
endif()
# Regenerate CMakeLists.txt automatically in the root project
set(CMKR_ROOT_PROJECT OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
set(CMKR_ROOT_PROJECT ON)
# Bootstrap cmkr
include("cmake/cmkr.cmake" OPTIONAL RESULT_VARIABLE CMKR_INCLUDE_RESULT)
if(CMKR_INCLUDE_RESULT)
cmkr()
endif()
# Enable folder support
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif()
# Create a configure-time dependency on cmake.toml to improve IDE support
if(CMKR_ROOT_PROJECT)
configure_file(cmake.toml cmake.toml COPYONLY)
endif()
project("VMProfiler Qt"
VERSION
1.8
DESCRIPTION
"VMProtect 2 IL Inspector"
)
include("cmake/Qt5Helpers.cmake")
# Packages
find_package(Qt5 REQUIRED CONFIG
COMPONENTS
Widgets
)
# dependencies
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/dependencies")
else()
set(CMAKE_FOLDER dependencies)
endif()
add_subdirectory(dependencies)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# Target vmprofiler-qt
set(CMKR_TARGET vmprofiler-qt)
set(vmprofiler-qt_SOURCES "")
list(APPEND vmprofiler-qt_SOURCES
"src/qvminspector.ui"
"src/qvminspector.qrc"
"src/qvminspector.cpp"
"src/qvirt_instrs.cpp"
"src/qvirt_handlers.cpp"
"src/main.cpp"
"src/qvirt_handlers.h"
"src/qvirt_instrs.h"
"src/qvminspector.h"
"src/icon.rc"
"src/darkstyle/DarkStyle.cpp"
"src/darkstyle/framelesswindow/framelesswindow.cpp"
"src/darkstyle/framelesswindow/windowdragger.cpp"
"src/darkstyle/mainwindow.cpp"
"src/darkstyle/DarkStyle.h"
"src/darkstyle/framelesswindow/framelesswindow.h"
"src/darkstyle/framelesswindow/windowdragger.h"
"src/darkstyle/mainwindow.h"
"src/darkstyle/mainwindow.ui"
"src/darkstyle/framelesswindow.qrc"
"dependencies/ia32-doc/out/ia32.hpp"
)
list(APPEND vmprofiler-qt_SOURCES
cmake.toml
)
set(CMKR_SOURCES ${vmprofiler-qt_SOURCES})
add_executable(vmprofiler-qt)
if(vmprofiler-qt_SOURCES)
target_sources(vmprofiler-qt PRIVATE ${vmprofiler-qt_SOURCES})
endif()
get_directory_property(CMKR_VS_STARTUP_PROJECT DIRECTORY ${PROJECT_SOURCE_DIR} DEFINITION VS_STARTUP_PROJECT)
if(NOT CMKR_VS_STARTUP_PROJECT)
set_property(DIRECTORY ${PROJECT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT vmprofiler-qt)
endif()
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${vmprofiler-qt_SOURCES})
target_compile_definitions(vmprofiler-qt PRIVATE
NOMINMAX
)
target_compile_features(vmprofiler-qt PRIVATE
cxx_std_20
)
target_include_directories(vmprofiler-qt PRIVATE
include
"dependencies/ia32-doc/out/"
)
target_link_libraries(vmprofiler-qt PRIVATE
Qt5::Widgets
vmprofiler
)
target_link_options(vmprofiler-qt PRIVATE
"/SUBSYSTEM:WINDOWS"
)
# Enable Qt moc/rrc/uic support
target_qt(${CMKR_TARGET})
# Copy Qt DLLs next to the application
target_windeployqt(${CMKR_TARGET})
unset(CMKR_TARGET)
unset(CMKR_SOURCES)
install(
TARGETS
vmprofiler-qt
DESTINATION
bin
COMPONENT
vmprofiler-qt
)

@ -6,4 +6,14 @@
# VMProfiler Qt - VMProtect 2 Virtual Instruction Inspector
VMProfiler Qt is a GUI project designed to inspect VMProtect 2 virtual instructions. In order to use this GUI please create a `.vmp2` file using [VMEmu](https://githacks.org/vmp2/vmemu). Once this `.vmp2` has been created you can inspect it by clicking ***File*** ---> ***Open***.
VMProfiler Qt is a GUI project designed to inspect VMProtect 2 virtual instructions. In order to use this GUI please create a `.vmp2` file using [VMEmu](https://githacks.org/vmp2/vmemu). Once this `.vmp2` has been created you can inspect it by clicking ***File*** ---> ***Open***.
# Building
Simply replace `G:\Qt\5.15.1\msvc2019_64` with the path to your Qt install. Make sure it is of type `2019_64` otherwise it wont work!
```
git clone --recursive https://githacks.org/vmp2/vmprofiler-qt.git
cd vmprofiler-qt
cmake -B build -DCMAKE_PREFIX_PATH=G:\Qt\5.15.1\msvc2019_64
```

@ -0,0 +1,56 @@
[cmake]
version = "3.15"
cmkr-include = "cmake/cmkr.cmake"
[project]
name = "VMProfiler Qt"
version = "1.8"
description = "VMProtect 2 IL Inspector"
include-after = ["cmake/Qt5Helpers.cmake"]
[find-package]
Qt5 = { components = ["Widgets"] }
[subdir.dependencies]
[target.vmprofiler-qt]
type = "executable"
compile-features = ["cxx_std_20"]
sources = [
"src/qvminspector.ui",
"src/qvminspector.qrc",
"src/qvminspector.cpp",
"src/qvirt_instrs.cpp",
"src/qvirt_handlers.cpp",
"src/main.cpp",
"src/*.h",
"src/icon.rc",
"src/darkstyle/**.cpp",
"src/darkstyle/**.h",
"src/darkstyle/mainwindow.ui",
"src/darkstyle/framelesswindow.qrc",
"dependencies/ia32-doc/out/ia32.hpp"
]
include-directories = [
"include",
"dependencies/ia32-doc/out/"
]
compile-definitions = [
"NOMINMAX"
]
link-libraries = ["Qt5::Widgets", "vmprofiler"]
link-options = ["/SUBSYSTEM:WINDOWS"]
cmake-after = """
# Enable Qt moc/rrc/uic support
target_qt(${CMKR_TARGET})
# Copy Qt DLLs next to the application
target_windeployqt(${CMKR_TARGET})
"""
[[install]]
targets = ["vmprofiler-qt"]
destination = "bin"

@ -0,0 +1,74 @@
# https://github.com/mrexodia/Qt5CMakeTemplate
# License: BSL-1.0
# Make the project look nicer in IDEs
set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP "Generated Files")
set_property(GLOBAL PROPERTY AUTOGEN_TARGETS_FOLDER "CMakePredefinedTargets")
# Install Visual Studio runtime
include(InstallRequiredSystemLibraries)
# Helper function to enable moc/rcc/uic
function(target_qt target)
set_target_properties(${target} PROPERTIES
AUTOMOC
ON
AUTORCC
ON
AUTOUIC
ON
)
endfunction()
# Helper function to deploy Qt DLLs
function(target_windeployqt deploy_target)
# Based on: https://stackoverflow.com/a/41199492/1806760
# TODO: set VCINSTALLDIR environment variable to copy MSVC runtime DLLs
if(Qt5_FOUND AND WIN32 AND TARGET Qt5::qmake AND NOT TARGET Qt5::windeployqt)
get_target_property(_qt5_qmake_location Qt5::qmake IMPORTED_LOCATION)
execute_process(
COMMAND "${_qt5_qmake_location}" -query QT_INSTALL_PREFIX
RESULT_VARIABLE return_code
OUTPUT_VARIABLE qt5_install_prefix
OUTPUT_STRIP_TRAILING_WHITESPACE
)
set(imported_location "${qt5_install_prefix}/bin/windeployqt.exe")
if(EXISTS ${imported_location})
add_executable(Qt5::windeployqt IMPORTED)
set_target_properties(Qt5::windeployqt PROPERTIES
IMPORTED_LOCATION ${imported_location}
)
endif()
endif()
if(TARGET Qt5::windeployqt AND NOT TARGET ${deploy_target}-windeployqt)
# Create a target that rebuilds when cmake is re-run
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${deploy_target}-windeployqt.c" "static void foo() { }\n")
add_library(${deploy_target}-windeployqt STATIC
"${CMAKE_CURRENT_BINARY_DIR}/${deploy_target}-windeployqt.c"
)
set_target_properties(${deploy_target}-windeployqt PROPERTIES
FOLDER "CMakePredefinedTargets"
)
# Execute windeployqt in a tmp directory after build
add_custom_command(TARGET ${deploy_target}-windeployqt
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/${deploy_target}-windeployqt"
COMMAND Qt5::windeployqt --no-compiler-runtime --dir "${CMAKE_CURRENT_BINARY_DIR}/${deploy_target}-windeployqt" "$<TARGET_FILE:${deploy_target}>"
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_BINARY_DIR}/${deploy_target}-windeployqt" "$<TARGET_FILE_DIR:${deploy_target}>"
)
# Copy deployment directory during installation
install(
DIRECTORY
"${CMAKE_CURRENT_BINARY_DIR}/${deploy_target}-windeployqt/"
DESTINATION bin
)
endif()
endfunction()

@ -0,0 +1,162 @@
include_guard()
# Change these defaults to point to your infrastructure if desired
set(CMKR_REPO "https://github.com/build-cpp/cmkr" CACHE STRING "cmkr git repository" FORCE)
set(CMKR_TAG "archive_a718dfd6" CACHE STRING "cmkr git tag (this needs to be available forever)" FORCE)
# Set these from the command line to customize for development/debugging purposes
set(CMKR_EXECUTABLE "" CACHE FILEPATH "cmkr executable")
set(CMKR_SKIP_GENERATION OFF CACHE BOOL "skip automatic cmkr generation")
# Disable cmkr if generation is disabled
if(DEFINED ENV{CI} OR CMKR_SKIP_GENERATION)
message(STATUS "[cmkr] Skipping automatic cmkr generation")
macro(cmkr)
endmacro()
return()
endif()
# Disable cmkr if no cmake.toml file is found
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake.toml")
message(AUTHOR_WARNING "[cmkr] Not found: ${CMAKE_CURRENT_SOURCE_DIR}/cmake.toml")
macro(cmkr)
endmacro()
return()
endif()
# Convert a Windows native path to CMake path
if(CMKR_EXECUTABLE MATCHES "\\\\")
string(REPLACE "\\" "/" CMKR_EXECUTABLE_CMAKE "${CMKR_EXECUTABLE}")
set(CMKR_EXECUTABLE "${CMKR_EXECUTABLE_CMAKE}" CACHE FILEPATH "" FORCE)
unset(CMKR_EXECUTABLE_CMAKE)
endif()
# Helper macro to execute a process (COMMAND_ERROR_IS_FATAL ANY is 3.19 and higher)
function(cmkr_exec)
execute_process(COMMAND ${ARGV} RESULT_VARIABLE CMKR_EXEC_RESULT)
if(NOT CMKR_EXEC_RESULT EQUAL 0)
message(FATAL_ERROR "cmkr_exec(${ARGV}) failed (exit code ${CMKR_EXEC_RESULT})")
endif()
endfunction()
# Windows-specific hack (CMAKE_EXECUTABLE_PREFIX is not set at the moment)
if(WIN32)
set(CMKR_EXECUTABLE_NAME "cmkr.exe")
else()
set(CMKR_EXECUTABLE_NAME "cmkr")
endif()
# Use cached cmkr if found
set(CMKR_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/_cmkr_${CMKR_TAG}")
set(CMKR_CACHED_EXECUTABLE "${CMKR_DIRECTORY}/bin/${CMKR_EXECUTABLE_NAME}")
if(NOT CMKR_CACHED_EXECUTABLE STREQUAL CMKR_EXECUTABLE AND CMKR_EXECUTABLE MATCHES "^${CMAKE_CURRENT_BINARY_DIR}/_cmkr")
message(AUTHOR_WARNING "[cmkr] Upgrading '${CMKR_EXECUTABLE}' to '${CMKR_CACHED_EXECUTABLE}'")
unset(CMKR_EXECUTABLE CACHE)
endif()
if(CMKR_EXECUTABLE AND EXISTS "${CMKR_EXECUTABLE}")
message(VERBOSE "[cmkr] Found cmkr: '${CMKR_EXECUTABLE}'")
elseif(CMKR_EXECUTABLE AND NOT CMKR_EXECUTABLE STREQUAL CMKR_CACHED_EXECUTABLE)
message(FATAL_ERROR "[cmkr] '${CMKR_EXECUTABLE}' not found")
else()
set(CMKR_EXECUTABLE "${CMKR_CACHED_EXECUTABLE}" CACHE FILEPATH "Full path to cmkr executable" FORCE)
message(VERBOSE "[cmkr] Bootstrapping '${CMKR_EXECUTABLE}'")
message(STATUS "[cmkr] Fetching cmkr...")
if(EXISTS "${CMKR_DIRECTORY}")
cmkr_exec("${CMAKE_COMMAND}" -E rm -rf "${CMKR_DIRECTORY}")
endif()
find_package(Git QUIET REQUIRED)
cmkr_exec("${GIT_EXECUTABLE}"
clone
--config advice.detachedHead=false
--branch ${CMKR_TAG}
--depth 1
${CMKR_REPO}
"${CMKR_DIRECTORY}"
)
message(STATUS "[cmkr] Building cmkr...")
cmkr_exec("${CMAKE_COMMAND}"
--no-warn-unused-cli
"${CMKR_DIRECTORY}"
"-B${CMKR_DIRECTORY}/build"
"-DCMAKE_BUILD_TYPE=Release"
"-DCMAKE_INSTALL_PREFIX=${CMKR_DIRECTORY}"
"-DCMKR_GENERATE_DOCUMENTATION=OFF"
)
cmkr_exec("${CMAKE_COMMAND}"
--build "${CMKR_DIRECTORY}/build"
--config Release
--parallel
)
cmkr_exec("${CMAKE_COMMAND}"
--install "${CMKR_DIRECTORY}/build"
--config Release
--prefix "${CMKR_DIRECTORY}"
--component cmkr
)
if(NOT EXISTS ${CMKR_EXECUTABLE})
message(FATAL_ERROR "[cmkr] Failed to bootstrap '${CMKR_EXECUTABLE}'")
endif()
cmkr_exec("${CMKR_EXECUTABLE}" version)
message(STATUS "[cmkr] Bootstrapped ${CMKR_EXECUTABLE}")
endif()
execute_process(COMMAND "${CMKR_EXECUTABLE}" version
RESULT_VARIABLE CMKR_EXEC_RESULT
)
if(NOT CMKR_EXEC_RESULT EQUAL 0)
message(FATAL_ERROR "[cmkr] Failed to get version, try clearing the cache and rebuilding")
endif()
# This is the macro that contains black magic
macro(cmkr)
# When this macro is called from the generated file, fake some internal CMake variables
get_source_file_property(CMKR_CURRENT_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}" CMKR_CURRENT_LIST_FILE)
if(CMKR_CURRENT_LIST_FILE)
set(CMAKE_CURRENT_LIST_FILE "${CMKR_CURRENT_LIST_FILE}")
get_filename_component(CMAKE_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
endif()
# File-based include guard (include_guard is not documented to work)
get_source_file_property(CMKR_INCLUDE_GUARD "${CMAKE_CURRENT_LIST_FILE}" CMKR_INCLUDE_GUARD)
if(NOT CMKR_INCLUDE_GUARD)
set_source_files_properties("${CMAKE_CURRENT_LIST_FILE}" PROPERTIES CMKR_INCLUDE_GUARD TRUE)
file(SHA256 "${CMAKE_CURRENT_LIST_FILE}" CMKR_LIST_FILE_SHA256_PRE)
# Generate CMakeLists.txt
cmkr_exec("${CMKR_EXECUTABLE}" gen
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
file(SHA256 "${CMAKE_CURRENT_LIST_FILE}" CMKR_LIST_FILE_SHA256_POST)
# Delete the temporary file if it was left for some reason
set(CMKR_TEMP_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CMakerLists.txt")
if(EXISTS "${CMKR_TEMP_FILE}")
file(REMOVE "${CMKR_TEMP_FILE}")
endif()
if(NOT CMKR_LIST_FILE_SHA256_PRE STREQUAL CMKR_LIST_FILE_SHA256_POST)
# Copy the now-generated CMakeLists.txt to CMakerLists.txt
# This is done because you cannot include() a file you are currently in
configure_file(CMakeLists.txt "${CMKR_TEMP_FILE}" COPYONLY)
# Add the macro required for the hack at the start of the cmkr macro
set_source_files_properties("${CMKR_TEMP_FILE}" PROPERTIES
CMKR_CURRENT_LIST_FILE "${CMAKE_CURRENT_LIST_FILE}"
)
# 'Execute' the newly-generated CMakeLists.txt
include("${CMKR_TEMP_FILE}")
# Delete the generated file
file(REMOVE "${CMKR_TEMP_FILE}")
# Do not execute the rest of the original CMakeLists.txt
return()
endif()
# Resume executing the unmodified CMakeLists.txt
endif()
endmacro()

@ -0,0 +1,36 @@
# This file is automatically generated from cmake.toml - DO NOT EDIT
# See https://github.com/build-cpp/cmkr for more information
# Create a configure-time dependency on cmake.toml to improve IDE support
if(CMKR_ROOT_PROJECT)
configure_file(cmake.toml cmake.toml COPYONLY)
endif()
# vmprofiler
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/vmprofiler")
else()
set(CMAKE_FOLDER vmprofiler)
endif()
add_subdirectory(vmprofiler)
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# Target ia32-doc
set(CMKR_TARGET ia32-doc)
set(ia32-doc_SOURCES "")
set(CMKR_SOURCES ${ia32-doc_SOURCES})
add_library(ia32-doc INTERFACE)
if(ia32-doc_SOURCES)
target_sources(ia32-doc INTERFACE ${ia32-doc_SOURCES})
endif()
target_include_directories(ia32-doc INTERFACE
"ia32-doc/out/"
)
unset(CMKR_TARGET)
unset(CMKR_SOURCES)

@ -0,0 +1,5 @@
[subdir.vmprofiler]
[target.ia32-doc]
type = "interface"
include-directories = ["ia32-doc/out/"]

@ -1 +1 @@
Subproject commit e75104fbb3b07540be51fcef169e9eaffd1cfee2
Subproject commit a4b3817336939c9d6e3207e87a4f1c7830613056

@ -1,40 +0,0 @@
/*
###############################################################################
# #
# The MIT License #
# #
# Copyright (C) 2017 by Juergen Skrotzky (JorgenVikingGod@gmail.com) #
# >> https://github.com/Jorgen-VikingGod #
# #
# Sources: https://github.com/Jorgen-VikingGod/Qt-Frameless-Window-DarkStyle #
# #
###############################################################################
*/
#include <QApplication>
#include "DarkStyle.h"
#include "framelesswindow.h"
#include "mainwindow.h"
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
// style our application with custom dark style
QApplication::setStyle(new DarkStyle);
QApplication::setPalette(QApplication::style()->standardPalette());
// create frameless window (and set windowState or title)
FramelessWindow framelessWindow;
//framelessWindow.setWindowState(Qt::WindowFullScreen);
//framelessWindow.setWindowTitle("test title");
framelessWindow.setWindowIcon(a.style()->standardIcon(QStyle::SP_DesktopIcon));
// create our mainwindow instance
MainWindow *mainWindow = new MainWindow;
// add the mainwindow to our custom frameless window
framelessWindow.setContent(mainWindow);
framelessWindow.show();
return a.exec();
}

@ -1,25 +1,25 @@
#define NOMINMAX
#include <QtWidgets/QApplication>
#include <QFile>
#include <QTextStream>
#include <QtWidgets/QApplication>
#include "qvminspector.h"
#include "qvirt_instrs.h"
#include "darkstyle/DarkStyle.h"
#include "darkstyle/framelesswindow/framelesswindow.h"
#include "qvirt_handlers.h"
#include "framelesswindow.h"
#include "DarkStyle.h"
#include "qvirt_instrs.h"
#include "qvminspector.h"
int main(int argc, char *argv[])
int WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
QApplication app(argc, argv);
QApplication::setStyle(new DarkStyle);
QApplication app( __argc, __argv );
QApplication::setStyle( new DarkStyle );
FramelessWindow frameless_window;
const auto window = new qvminspector_t;
qvirt_instrs_t virt_instr( window );
qvirt_handlers_t virt_handlers( window );
frameless_window.setContent( window );
frameless_window.setWindowIcon(QIcon("icon.ico"));
frameless_window.setWindowIcon( QIcon( "icon.ico" ) );
frameless_window.show();
return app.exec();
}

@ -10,73 +10,6 @@ qvminspector_t::qvminspector_t( qwidget_t *parent ) : qmain_window_t( parent ),
connect( ui.action_open, &QAction::triggered, this, &qvminspector_t::on_open );
connect( ui.action_close, &QAction::triggered, this, &qvminspector_t::on_close );
connect( ui.lift_all_button, &QAction::triggered, this, &qvminspector_t::on_lift_all );
}
void qvminspector_t::on_lift_all()
{
if ( !first_block || !file_header )
return;
FreeConsole();
if ( !AllocConsole() )
return;
freopen_s( reinterpret_cast< FILE ** >( stdin ), "CONIN$", "r", stdin );
freopen_s( reinterpret_cast< FILE ** >( stdout ), "CONOUT$", "w", stdout );
SetConsoleTitleA( "[VTIL] - lifted and optimized output..." );
vtil::basic_block *rtn = nullptr, *first = nullptr;
for ( auto [ code_block, code_block_num ] = std::tuple{ first_block, 0u };
code_block_num < file_header->code_block_count;
code_block = reinterpret_cast< vmp2::v3::code_block_t * >( reinterpret_cast< std::uintptr_t >( code_block ) +
code_block->next_block_offset ),
++code_block_num )
{
if ( !rtn )
{
rtn = vtil::basic_block::begin(
ABS_TO_IMG( code_block->vip_begin, file_header->module_base, file_header->image_base ) );
}
else
{
first = rtn;
if ( !rtn->is_complete() )
rtn->vexit( 0u );
rtn = rtn->fork( ABS_TO_IMG( code_block->vip_begin, file_header->module_base, file_header->image_base ) );
}
for ( auto idx = 0u; idx < code_block->vinstr_count; ++idx )
{
auto vinstr = &code_block->vinstr[ idx ];
if ( vinstr->mnemonic_t == vm::handler::INVALID )
{
std::printf( "[WARNING] vm handler #%d is not implimented, the VTIL output may be incorrect!\n",
vinstr->opcode );
rtn->nop();
continue;
}
const auto result = std::find_if(
vm::lifters::all.begin(), vm::lifters::all.end(),
[ & ]( vm::lifters::lifter_t *lifter ) -> bool { return lifter->first == vinstr->mnemonic_t; } );
if ( result == vm::lifters::all.end() )
{
std::printf( "[WARNING] vm handler #%d lifter is not implimented, the VTIL output may be incorrect!\n",
vinstr->opcode );
rtn->nop();
continue;
}
// lift the virtual instruction...
( *result )->second( rtn, vinstr, code_block );
}
}
vtil::optimizer::apply_all( first );
vtil::debug::dump( first );
}
void qvminspector_t::on_close()
@ -207,14 +140,12 @@ void qvminspector_t::add_branch_children( qtree_widget_item_t *item, std::uintpt
code_block->next_block_offset ),
++code_block_num )
{
// skip if this code block begin address is not branch_addr...
if ( code_block->vip_begin != branch_addr && code_block->vip_begin != branch_addr - 2 &&
code_block->vip_begin != branch_addr - 1 )
if ( code_block->vip_begin != branch_addr )
continue;
dbg_print( qstring_t( "> code block %1 (block_%2), number of vinstrs = %3..." )
.arg( code_block_num )
.arg( ( code_block->vip_begin - file_header->module_base ) + file_header->image_base, 0, 16 )
.arg( code_block->vip_begin, 0, 16 )
.arg( code_block->vinstr_count ) );
// for each virtual instruction inside of this code block...
@ -227,10 +158,13 @@ void qvminspector_t::add_branch_children( qtree_widget_item_t *item, std::uintpt
// virtual instruction image base'ed rva... (column 1)...
virt_instr_entry->setText(
0, QString( "block_%1+%2" )
.arg( ( branch_addr - file_header->module_base ) + file_header->image_base, 0, 16 )
.arg( idx ? code_block->vip_begin > virt_instr->trace_data.vip
? code_block->vip_begin - virt_instr->trace_data.vip
: virt_instr->trace_data.vip - code_block->vip_begin
.arg( branch_addr, 0, 16 )
.arg( idx ? code_block->vip_begin >
( ( virt_instr->trace_data.vip - file_header->module_base ) + image_base )
? code_block->vip_begin -
( ( virt_instr->trace_data.vip - file_header->module_base ) + image_base )
: ( ( virt_instr->trace_data.vip - file_header->module_base ) + image_base ) -
code_block->vip_begin
: 0u,
0, 16 ) );
@ -270,20 +204,13 @@ void qvminspector_t::add_branch_children( qtree_widget_item_t *item, std::uintpt
if ( virt_instr->mnemonic_t == vm::handler::JMP && code_block->jcc.has_jcc )
{
virt_instr_entry->setText(
3,
QString( "; { %1, %2 }" )
.arg( ( code_block->jcc.block_addr[ 0 ] - file_header->module_base ) + file_header->image_base,
0, 16 )
.arg( ( code_block->jcc.block_addr[ 1 ] - file_header->module_base ) + file_header->image_base,
0, 16 ) );
virt_instr_entry->setText( 3, QString( "; { %1, %2 }" )
.arg( code_block->jcc.block_addr[ 0 ], 0, 16 )
.arg( code_block->jcc.block_addr[ 1 ], 0, 16 ) );
auto branch_entry1 = new qtree_widget_item_t(), branch_entry2 = new qtree_widget_item_t();
const auto block1_addr =
( code_block->jcc.block_addr[ 0 ] - file_header->module_base ) + file_header->image_base;
const auto block2_addr =
( code_block->jcc.block_addr[ 1 ] - file_header->module_base ) + file_header->image_base;
const auto block1_addr = code_block->jcc.block_addr[ 0 ];
const auto block2_addr = code_block->jcc.block_addr[ 1 ];
branch_entry1->setText( 0, QString( "%1" ).arg( block1_addr, 0, 16 ) );
branch_entry1->setText( 3, QString( "; block_%1" ).arg( block1_addr, 0, 16 ) );
@ -302,10 +229,7 @@ void qvminspector_t::add_branch_children( qtree_widget_item_t *item, std::uintpt
}
else if ( virt_instr->mnemonic_t == vm::handler::JMP )
{
virt_instr_entry->setText( 3, QString( "; { %1 }" )
.arg( ( code_block->jcc.block_addr[ 0 ] - file_header->module_base ) +
file_header->image_base,
0, 16 ) );
virt_instr_entry->setText( 3, QString( "; { %1 }" ).arg( code_block->jcc.block_addr[ 0 ], 0, 16 ) );
// else if this jmp doesnt have two branches add the next code block to it...
item->addChild( virt_instr_entry );
@ -358,10 +282,10 @@ void qvminspector_t::update_ui()
code_block->next_block_offset ),
++code_block_num )
{
code_block_addrs.push_back( ( code_block->vip_begin - file_header->module_base ) + file_header->image_base );
code_block_addrs.push_back( code_block->vip_begin );
dbg_print( qstring_t( "> code block %1 (block_%2), number of vinstrs = %3..." )
.arg( code_block_num )
.arg( ( code_block->vip_begin - file_header->module_base ) + file_header->image_base, 0, 16 )
.arg( code_block->vip_begin, 0, 16 )
.arg( code_block->vinstr_count ) );
// for each virtual instruction inside of this code block...
@ -374,10 +298,13 @@ void qvminspector_t::update_ui()
// virtual instruction image base'ed rva... (column 1)...
virt_instr_entry->setText(
0, QString( "block_%1+%2" )
.arg( ( code_block->vip_begin - file_header->module_base ) + file_header->image_base, 0, 16 )
.arg( idx ? code_block->vip_begin > virt_instr->trace_data.vip
? code_block->vip_begin - virt_instr->trace_data.vip
: virt_instr->trace_data.vip - code_block->vip_begin
.arg( code_block->vip_begin, 0, 16 )
.arg( idx ? code_block->vip_begin >
( ( virt_instr->trace_data.vip - file_header->module_base ) + image_base )
? code_block->vip_begin -
( ( virt_instr->trace_data.vip - file_header->module_base ) + image_base )
: ( ( virt_instr->trace_data.vip - file_header->module_base ) + image_base ) -
code_block->vip_begin
: 0u,
0, 16 ) );
@ -418,20 +345,13 @@ void qvminspector_t::update_ui()
if ( virt_instr->mnemonic_t == vm::handler::JMP && code_block->jcc.has_jcc )
{
virt_instr_entry->setText(
3,
QString( "; { %1, %2 }" )
.arg( ( code_block->jcc.block_addr[ 0 ] - file_header->module_base ) + file_header->image_base,
0, 16 )
.arg( ( code_block->jcc.block_addr[ 1 ] - file_header->module_base ) + file_header->image_base,
0, 16 ) );
virt_instr_entry->setText( 3, QString( "; { %1, %2 }" )
.arg( code_block->jcc.block_addr[ 0 ], 0, 16 )
.arg( code_block->jcc.block_addr[ 1 ], 0, 16 ) );
auto branch_entry1 = new qtree_widget_item_t(), branch_entry2 = new qtree_widget_item_t();
const auto block1_addr =
( code_block->jcc.block_addr[ 0 ] - file_header->module_base ) + file_header->image_base;
const auto block2_addr =
( code_block->jcc.block_addr[ 1 ] - file_header->module_base ) + file_header->image_base;
const auto block1_addr = code_block->jcc.block_addr[ 0 ];
const auto block2_addr = code_block->jcc.block_addr[ 1 ];
branch_entry1->setText( 0, QString( "%1" ).arg( block1_addr, 0, 16 ) );
branch_entry1->setText( 3, QString( "; block_%1" ).arg( block1_addr, 0, 16 ) );
@ -449,10 +369,7 @@ void qvminspector_t::update_ui()
goto finish; // bad code...
}
else if ( virt_instr->mnemonic_t == vm::handler::JMP )
virt_instr_entry->setText( 3, QString( "; { %1 }" )
.arg( ( code_block->jcc.block_addr[ 0 ] - file_header->module_base ) +
file_header->image_base,
0, 16 ) );
virt_instr_entry->setText( 3, QString( "; { %1 }" ).arg( code_block->jcc.block_addr[ 0 ], 0, 16 ) );
ui.virt_instrs->addTopLevelItem( virt_instr_entry );
}

@ -5,15 +5,16 @@
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMessageBox.h>
#include <qpushbutton.h>
#include <qtreewidget.h>
#include <Windows.h>
#include <filesystem>
#include <fstream>
#include <vmprofiler.hpp>
#include "ia32.hpp"
#include "ui_qvminspector.h"
#include "vmp2.hpp"
#include <ia32.hpp>
#include <vmprofiler.hpp>
#define ABS_TO_IMG( addr, mod_base, img_base ) ( addr - mod_base ) + img_base
Q_DECLARE_METATYPE( vm::instrs::virt_instr_t * )
@ -36,7 +37,6 @@ class qvminspector_t : public qmain_window_t
private slots:
void on_open();
void on_close();
void on_lift_all();
private:
void dbg_print( qstring_t DbgOutput );

@ -624,14 +624,7 @@
<addaction name="action_open"/>
<addaction name="action_close"/>
</widget>
<widget class="QMenu" name="menuVTIL">
<property name="title">
<string>VTIL</string>
</property>
<addaction name="lift_all_button"/>
</widget>
<addaction name="menuOpen_VMTrace"/>
<addaction name="menuVTIL"/>
</widget>
<widget class="QDockWidget" name="dockWidget">
<property name="minimumSize">

@ -1,241 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30907.101
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Zydis", "dependencies\vmprofiler\dependencies\zydis\msvc\zydis\Zydis.vcxproj", "{88A23124-5640-35A0-B890-311D7A67A7D2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vmprofiler", "dependencies\vmprofiler\vmprofiler.vcxproj", "{D0B6092A-9944-4F24-9486-4B7DAE372619}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vmprofiler-qt", "vmprofiler-qt.vcxproj", "{A0485AE3-1965-4BE3-A2C4-A8257337C271}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{EBAB8252-B20D-461B-A361-054921EABC2B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VTIL", "VTIL", "{4345601E-F7A1-4F1D-9780-2B0C1DC7E157}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL", "dependencies\vmprofiler\dependencies\vtil\VTIL\VTIL.vcxproj", "{8163E74C-DDE4-4507-BD3D-064CD95FF33B}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-Architecture", "dependencies\vmprofiler\dependencies\vtil\VTIL-Architecture\VTIL-Architecture.vcxproj", "{A79E2869-7626-4801-B09D-5C12F5163BA3}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-Common", "dependencies\vmprofiler\dependencies\vtil\VTIL-Common\VTIL-Common.vcxproj", "{EC6B8F7F-730C-4086-B143-4664CC16DF8F}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-Compiler", "dependencies\vmprofiler\dependencies\vtil\VTIL-Compiler\VTIL-Compiler.vcxproj", "{F960486B-2DB4-44AF-91BB-0F19F228ABCF}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VTIL-SymEx", "dependencies\vmprofiler\dependencies\vtil\VTIL-SymEx\VTIL-SymEx.vcxproj", "{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "keystone", "dependencies\vmprofiler\dependencies\vtil\dependencies\keystone\msvc\llvm\keystone\keystone.vcxproj", "{E4754E3E-2503-307A-8076-8AC2AD8B75B2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "capstone-static", "dependencies\vmprofiler\dependencies\vtil\dependencies\capstone\msvc\capstone-static.vcxproj", "{A0471FDD-F210-3D7E-B4EA-20543BC10911}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
DBG|x64 = DBG|x64
DBG|x86 = DBG|x86
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
MinSizeRel|x64 = MinSizeRel|x64
MinSizeRel|x86 = MinSizeRel|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
RelWithDebInfo|x64 = RelWithDebInfo|x64
RelWithDebInfo|x86 = RelWithDebInfo|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x64.ActiveCfg = Debug MT DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x64.Build.0 = Debug MT DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x86.ActiveCfg = Debug MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.DBG|x86.Build.0 = Debug MT|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x64.ActiveCfg = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x64.Build.0 = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x86.ActiveCfg = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Debug|x86.Build.0 = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x64.ActiveCfg = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x64.Build.0 = Debug MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x86.ActiveCfg = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.MinSizeRel|x86.Build.0 = Debug MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x64.ActiveCfg = Release MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x64.Build.0 = Release MT|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x86.ActiveCfg = Release MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.Release|x86.Build.0 = Release MT DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x64.ActiveCfg = Release MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x64.Build.0 = Release MD DLL|x64
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x86.ActiveCfg = Release MD DLL|Win32
{88A23124-5640-35A0-B890-311D7A67A7D2}.RelWithDebInfo|x86.Build.0 = Release MD DLL|Win32
{D0B6092A-9944-4F24-9486-4B7DAE372619}.DBG|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.DBG|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.DBG|x86.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x64.ActiveCfg = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x64.Build.0 = DBG|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Debug|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.MinSizeRel|x86.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.Release|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x64.Build.0 = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x86.ActiveCfg = Release|x64
{D0B6092A-9944-4F24-9486-4B7DAE372619}.RelWithDebInfo|x86.Build.0 = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.DBG|x64.ActiveCfg = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.DBG|x64.Build.0 = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.DBG|x86.ActiveCfg = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.DBG|x86.Build.0 = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.Debug|x64.ActiveCfg = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.Debug|x64.Build.0 = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.Debug|x86.ActiveCfg = Debug|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.MinSizeRel|x64.ActiveCfg = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.MinSizeRel|x64.Build.0 = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.MinSizeRel|x86.ActiveCfg = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.MinSizeRel|x86.Build.0 = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.Release|x64.ActiveCfg = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.Release|x64.Build.0 = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.Release|x86.ActiveCfg = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.RelWithDebInfo|x64.Build.0 = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.RelWithDebInfo|x86.ActiveCfg = Release|x64
{A0485AE3-1965-4BE3-A2C4-A8257337C271}.RelWithDebInfo|x86.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.DBG|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Debug|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x64.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x64.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.MinSizeRel|x86.Build.0 = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.Release|x86.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x64.Build.0 = Release|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{8163E74C-DDE4-4507-BD3D-064CD95FF33B}.RelWithDebInfo|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.DBG|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Debug|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x64.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x64.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.MinSizeRel|x86.Build.0 = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.Release|x86.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x64.Build.0 = Release|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{A79E2869-7626-4801-B09D-5C12F5163BA3}.RelWithDebInfo|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.DBG|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Debug|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x64.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x64.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.MinSizeRel|x86.Build.0 = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.Release|x86.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x64.Build.0 = Release|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{EC6B8F7F-730C-4086-B143-4664CC16DF8F}.RelWithDebInfo|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.DBG|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Debug|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x64.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x64.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.MinSizeRel|x86.Build.0 = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.Release|x86.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x64.Build.0 = Release|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{F960486B-2DB4-44AF-91BB-0F19F228ABCF}.RelWithDebInfo|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.DBG|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Debug|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x64.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x64.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.MinSizeRel|x86.Build.0 = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.Release|x86.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x64.Build.0 = Release|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x86.ActiveCfg = Debug|x64
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31}.RelWithDebInfo|x86.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x86.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.DBG|x86.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug|x64.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug|x64.Build.0 = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Debug|x86.ActiveCfg = Debug|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release|x64.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release|x64.Build.0 = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.Release|x86.ActiveCfg = Release|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{E4754E3E-2503-307A-8076-8AC2AD8B75B2}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.DBG|x64.ActiveCfg = Debug|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.DBG|x64.Build.0 = Debug|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.DBG|x86.ActiveCfg = RelWithDebInfo|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.DBG|x86.Build.0 = RelWithDebInfo|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.Debug|x64.ActiveCfg = Debug|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.Debug|x64.Build.0 = Debug|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.Debug|x86.ActiveCfg = Debug|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.Release|x64.ActiveCfg = Release|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.Release|x64.Build.0 = Release|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.Release|x86.ActiveCfg = Release|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
{A0471FDD-F210-3D7E-B4EA-20543BC10911}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{88A23124-5640-35A0-B890-311D7A67A7D2} = {EBAB8252-B20D-461B-A361-054921EABC2B}
{D0B6092A-9944-4F24-9486-4B7DAE372619} = {EBAB8252-B20D-461B-A361-054921EABC2B}
{4345601E-F7A1-4F1D-9780-2B0C1DC7E157} = {EBAB8252-B20D-461B-A361-054921EABC2B}
{8163E74C-DDE4-4507-BD3D-064CD95FF33B} = {4345601E-F7A1-4F1D-9780-2B0C1DC7E157}
{A79E2869-7626-4801-B09D-5C12F5163BA3} = {4345601E-F7A1-4F1D-9780-2B0C1DC7E157}
{EC6B8F7F-730C-4086-B143-4664CC16DF8F} = {4345601E-F7A1-4F1D-9780-2B0C1DC7E157}
{F960486B-2DB4-44AF-91BB-0F19F228ABCF} = {4345601E-F7A1-4F1D-9780-2B0C1DC7E157}
{FE3202CE-D05C-4E04-AE9B-D30305D8CE31} = {4345601E-F7A1-4F1D-9780-2B0C1DC7E157}
{E4754E3E-2503-307A-8076-8AC2AD8B75B2} = {EBAB8252-B20D-461B-A361-054921EABC2B}
{A0471FDD-F210-3D7E-B4EA-20543BC10911} = {EBAB8252-B20D-461B-A361-054921EABC2B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {08AD2EFA-1756-4AF3-B8B4-F629F3A29A19}
EndGlobalSection
EndGlobal

@ -1,181 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="16.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\dependencies\capstone\msvc\capstone-static.vcxproj">
<Project>{a0471fdd-f210-3d7e-b4ea-20543bc10911}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\dependencies\keystone\msvc\llvm\keystone\keystone.vcxproj">
<Project>{e4754e3e-2503-307a-8076-8ac2ad8b75b2}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\VTIL-Architecture\VTIL-Architecture.vcxproj">
<Project>{a79e2869-7626-4801-b09d-5c12f5163ba3}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\VTIL-Common\VTIL-Common.vcxproj">
<Project>{ec6b8f7f-730c-4086-b143-4664cc16df8f}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\VTIL-Compiler\VTIL-Compiler.vcxproj">
<Project>{f960486b-2db4-44af-91bb-0f19f228abcf}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\VTIL-SymEx\VTIL-SymEx.vcxproj">
<Project>{fe3202ce-d05c-4e04-ae9b-d30305d8ce31}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\vtil\VTIL\VTIL.vcxproj">
<Project>{8163e74c-dde4-4507-bd3d-064cd95ff33b}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\dependencies\zydis\msvc\zydis\Zydis.vcxproj">
<Project>{88a23124-5640-35a0-b890-311d7a67a7d2}</Project>
</ProjectReference>
<ProjectReference Include="dependencies\vmprofiler\vmprofiler.vcxproj">
<Project>{d0b6092a-9944-4f24-9486-4b7dae372619}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\darkstyle\DarkStyle.cpp" />
<ClCompile Include="src\darkstyle\framelesswindow\framelesswindow.cpp" />
<ClCompile Include="src\darkstyle\framelesswindow\windowdragger.cpp" />
<ClCompile Include="src\main.cpp" />
<ClCompile Include="src\qvirt_handlers.cpp" />
<ClCompile Include="src\qvirt_instrs.cpp" />
<ClCompile Include="src\qvminspector.cpp" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="src\qvminspector.h" />
</ItemGroup>
<ItemGroup>
<QtRcc Include="src\darkstyle\darkstyle.qrc" />
<QtRcc Include="src\darkstyle\framelesswindow.qrc" />
<QtRcc Include="src\qvminspector.qrc" />
</ItemGroup>
<ItemGroup>
<QtUic Include="src\darkstyle\framelesswindow\framelesswindow.ui" />
<QtUic Include="src\qvminspector.ui" />
</ItemGroup>
<ItemGroup>
<None Include=".clang-format" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="dependencies\ia32-doc\out\ia32.hpp" />
<QtMoc Include="src\qvirt_instrs.h" />
<QtMoc Include="src\qvirt_handlers.h" />
<ClInclude Include="x64\Release\uic\ui_framelesswindow.h" />
<QtMoc Include="src\darkstyle\framelesswindow\windowdragger.h" />
<QtMoc Include="src\darkstyle\framelesswindow\framelesswindow.h" />
<QtMoc Include="src\darkstyle\DarkStyle.h" />
</ItemGroup>
<ItemGroup>
<Image Include="src\icon.ico" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="src\icon.rc" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{A0485AE3-1965-4BE3-A2C4-A8257337C271}</ProjectGuid>
<Keyword>QtVS_v304</Keyword>
<WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">10.0.19041.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">10.0.19041.0</WindowsTargetPlatformVersion>
<QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt_defaults.props')">
<Import Project="$(QtMsBuild)\qt_defaults.props" />
</ImportGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
<QtInstall>5.15.1</QtInstall>
<QtModules>core;gui;widgets</QtModules>
<QtBuildConfig>debug</QtBuildConfig>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
<QtInstall>5.15.1</QtInstall>
<QtModules>core;gui;widgets</QtModules>
<QtBuildConfig>release</QtBuildConfig>
</PropertyGroup>
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') or !Exists('$(QtMsBuild)\qt.props')">
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
</Target>
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Label="Shared" />
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(QtMsBuild)\Qt.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(QtMsBuild)\Qt.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<IncludePath>G:\Qt\5.15.1\msvc2019_64\include;$(ProjectDir);$(ProjectDir)src\DarkStyle\framelesswindow\;$(ProjectDir)src\DarkStyle;$(IncludePath);$(ProjectDir)dependencies\vmprofiler\include;$(ProjectDir)dependencies\vmprofiler\dependencies\zydis\include;$(ProjectDir)dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include;$(ProjectDir)dependencies\vmprofiler\dependencies\zydis\msvc;$(ProjectDir)dependencies\ia32-doc\out\</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<IncludePath>G:\Qt\5.15.1\msvc2019_64\include\QtWidgets;G:\Qt\5.15.1\msvc2019_64\include\*\;G:\Qt\5.15.1\msvc2019_64\include;$(ProjectDir);$(ProjectDir)src\darkstyle\framelesswindow\;$(ProjectDir)src\darkstyle;$(IncludePath);$(ProjectDir)dependencies\vmprofiler\include;$(ProjectDir)dependencies\vmprofiler\dependencies\zydis\include;$(ProjectDir)dependencies\vmprofiler\dependencies\zydis\dependencies\zycore\include;$(ProjectDir)dependencies\vmprofiler\dependencies\zydis\msvc;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\VTIL\includes\;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\dependencies\keystone\include;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\dependencies\capstone\include;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\VTIL-SymEx\includes\;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\VTIL-Compiler\includes\;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\VTIL-Common\includes\;$(ProjectDir)dependencies\vmprofiler\dependencies\vtil\VTIL-Architecture\includes\;$(ProjectDir)dependencies\ia32-doc\out\</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<LanguageStandard>stdcpplatest</LanguageStandard>
<PreprocessorDefinitions>ZYDIS_STATIC_DEFINE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>$(ProjectDir)..\libs\*;%(AdditionalDependencies)</AdditionalDependencies>
<GenerateMapFile>true</GenerateMapFile>
<StackReserveSize>4194304</StackReserveSize>
<StackCommitSize>4194304</StackCommitSize>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<LanguageStandard>stdcpp17</LanguageStandard>
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="Configuration">
<ClCompile>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="Configuration">
<ClCompile>
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<DebugInformationFormat>None</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
<Import Project="$(QtMsBuild)\qt.targets" />
</ImportGroup>
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

@ -1,111 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Header Files">
<UniqueIdentifier>{841656a6-8f18-40f6-88cc-63394509aec2}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files">
<UniqueIdentifier>{b94916d4-6db7-4a7c-bfe5-f2ae9acd3b54}</UniqueIdentifier>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{8c45819e-3375-4fa3-81c3-ef06ca9b22f8}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\darkstyle">
<UniqueIdentifier>{12ad7b7f-216d-4e4f-a08a-c42ed0fc9450}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\darkstyle\framelesswindow">
<UniqueIdentifier>{105cb913-ac75-4192-b597-963e012ddf2e}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\darkstyle">
<UniqueIdentifier>{d58a423a-4c09-4775-a839-0ab9e403f57e}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\darkstyle\framelesswindow">
<UniqueIdentifier>{48472175-af91-4abd-bcc9-9801caeb83c9}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="src\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\qvirt_instrs.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\qvminspector.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\darkstyle\framelesswindow\framelesswindow.cpp">
<Filter>Source Files\darkstyle\framelesswindow</Filter>
</ClCompile>
<ClCompile Include="src\darkstyle\framelesswindow\windowdragger.cpp">
<Filter>Source Files\darkstyle\framelesswindow</Filter>
</ClCompile>
<ClCompile Include="src\darkstyle\DarkStyle.cpp">
<Filter>Source Files\darkstyle</Filter>
</ClCompile>
<ClCompile Include="src\qvirt_handlers.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<QtMoc Include="src\qvminspector.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="src\darkstyle\DarkStyle.h">
<Filter>Header Files\darkstyle</Filter>
</QtMoc>
<QtMoc Include="src\darkstyle\framelesswindow\framelesswindow.h">
<Filter>Header Files\darkstyle\framelesswindow</Filter>
</QtMoc>
<QtMoc Include="src\darkstyle\framelesswindow\windowdragger.h">
<Filter>Header Files\darkstyle\framelesswindow</Filter>
</QtMoc>
<QtMoc Include="src\qvirt_instrs.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="src\qvirt_handlers.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<QtRcc Include="src\darkstyle\darkstyle.qrc">
<Filter>Resource Files</Filter>
</QtRcc>
<QtRcc Include="src\darkstyle\framelesswindow.qrc">
<Filter>Resource Files</Filter>
</QtRcc>
<QtRcc Include="src\qvminspector.qrc">