diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..8063c5e --- /dev/null +++ b/.clang-format @@ -0,0 +1,18 @@ +--- +BasedOnStyle: Microsoft +AlignAfterOpenBracket: Align +AllowAllArgumentsOnNextLine: 'true' +AllowAllParametersOfDeclarationOnNextLine: 'true' +AllowShortIfStatementsOnASingleLine: Never +BreakBeforeBraces: Allman +IndentWidth: '4' +Language: Cpp +NamespaceIndentation: All +SpacesInAngles: 'true' +SpacesInCStyleCastParentheses: 'true' +SpacesInContainerLiterals: 'true' +SpacesInParentheses: 'true' +SpacesInSquareBrackets: 'true' +UseTab: Never + +... diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca8a652 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +.idea/ +cmake-build*/ +build*/ +out/ +.vs/ +.cache/ +*.exe \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..1a6da0d --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,128 @@ +# 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) + +# 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(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) + +# Options +option(ZYDIS_BUILD_SHARED_LIB OFF) +option(ZYDIS_BUILD_EXAMPLES OFF) +option(ZYDIS_BUILD_TOOLS OFF) +option(ZYDIS_FUZZ_AFL_FAST OFF) +option(ZYDIS_LIBFUZZER OFF) + +# dependencies/vmprofiler/dependencies/zydis/ +set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER}) +if(CMAKE_FOLDER) + set(CMAKE_FOLDER "${CMAKE_FOLDER}/dependencies/vmprofiler/dependencies/zydis/") +else() + set(CMAKE_FOLDER "dependencies/vmprofiler/dependencies/zydis/") +endif() +add_subdirectory("dependencies/vmprofiler/dependencies/zydis/") +set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) + +# Target vmprofiler +set(CMKR_TARGET vmprofiler) +set(vmprofiler_SOURCES "") + +list(APPEND vmprofiler_SOURCES + "dependencies/vmprofiler/src/vmprofiles/add.cpp" + "dependencies/vmprofiler/src/vmprofiles/call.cpp" + "dependencies/vmprofiler/src/vmprofiles/div.cpp" + "dependencies/vmprofiler/src/vmprofiles/idiv.cpp" + "dependencies/vmprofiler/src/vmprofiles/imul.cpp" + "dependencies/vmprofiler/src/vmprofiles/jmp.cpp" + "dependencies/vmprofiler/src/vmprofiles/lconst.cpp" + "dependencies/vmprofiler/src/vmprofiles/lflags.cpp" + "dependencies/vmprofiler/src/vmprofiles/lreg.cpp" + "dependencies/vmprofiler/src/vmprofiles/mul.cpp" + "dependencies/vmprofiler/src/vmprofiles/nand.cpp" + "dependencies/vmprofiler/src/vmprofiles/popvsp.cpp" + "dependencies/vmprofiler/src/vmprofiles/pushvsp.cpp" + "dependencies/vmprofiler/src/vmprofiles/rdtsc.cpp" + "dependencies/vmprofiler/src/vmprofiles/read.cpp" + "dependencies/vmprofiler/src/vmprofiles/readcr3.cpp" + "dependencies/vmprofiler/src/vmprofiles/readcr8.cpp" + "dependencies/vmprofiler/src/vmprofiles/shl.cpp" + "dependencies/vmprofiler/src/vmprofiles/shld.cpp" + "dependencies/vmprofiler/src/vmprofiles/shr.cpp" + "dependencies/vmprofiler/src/vmprofiles/shrd.cpp" + "dependencies/vmprofiler/src/vmprofiles/sreg.cpp" + "dependencies/vmprofiler/src/vmprofiles/vmexit.cpp" + "dependencies/vmprofiler/src/vmprofiles/write.cpp" + "dependencies/vmprofiler/src/vmprofiles/writecr3.cpp" + "include/vmprofiler.hpp" +) + +list(APPEND vmprofiler_SOURCES + cmake.toml +) + +set(CMKR_SOURCES ${vmprofiler_SOURCES}) +add_library(vmprofiler STATIC) + +if(vmprofiler_SOURCES) + target_sources(vmprofiler PRIVATE ${vmprofiler_SOURCES}) +endif() + +source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${vmprofiler_SOURCES}) + +target_compile_definitions(vmprofiler PUBLIC + NOMINMAX +) + +target_compile_features(vmprofiler PUBLIC + cxx_std_20 +) + +target_include_directories(vmprofiler PUBLIC + include +) + +target_link_libraries(vmprofiler PUBLIC + Zydis + linux-pe +) + +unset(CMKR_TARGET) +unset(CMKR_SOURCES) + +# Target linux-pe +set(CMKR_TARGET linux-pe) +set(linux-pe_SOURCES "") + +set(CMKR_SOURCES ${linux-pe_SOURCES}) +add_library(linux-pe INTERFACE) + +if(linux-pe_SOURCES) + target_sources(linux-pe INTERFACE ${linux-pe_SOURCES}) +endif() + +target_include_directories(linux-pe INTERFACE + "dependencies/vmprofiler/dependencies/linux-pe/includes/" +) + +unset(CMKR_TARGET) +unset(CMKR_SOURCES) + diff --git a/cmake.toml b/cmake.toml index 6d8ddcd..6da59d8 100644 --- a/cmake.toml +++ b/cmake.toml @@ -1,20 +1,17 @@ [project] name = "vmprofiler" -[subdir.dependencies] - [target.vmprofiler] type = "static" compile-features = ["cxx_std_20"] sources = [ "dependencies/vmprofiler/src/vmprofiles/**.cpp", - "dependencies/vmprofiler/include/transform.hpp", - "dependencies/vmprofiler/include/vmprofiles.hpp" + "include/**.hpp" ] include-directories = [ - "include", + "include" ] link-libraries = [ @@ -25,3 +22,16 @@ link-libraries = [ compile-definitions = [ "NOMINMAX" ] + +[options] +ZYDIS_BUILD_SHARED_LIB = false +ZYDIS_BUILD_EXAMPLES = false +ZYDIS_BUILD_TOOLS = false +ZYDIS_FUZZ_AFL_FAST = false +ZYDIS_LIBFUZZER = false + +[subdir."dependencies/vmprofiler/dependencies/zydis/"] + +[target.linux-pe] +type = "interface" +include-directories = ["dependencies/vmprofiler/dependencies/linux-pe/includes/"] diff --git a/include/vmprofiler.hpp b/include/vmprofiler.hpp new file mode 100644 index 0000000..7b9637e --- /dev/null +++ b/include/vmprofiler.hpp @@ -0,0 +1 @@ +#pragma once \ No newline at end of file