forked from vmp3/vmemu
parent
ddce00210e
commit
3dbefbe1c3
@ -0,0 +1,80 @@
|
||||
# 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(vmemu)
|
||||
|
||||
# deps
|
||||
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
|
||||
if(CMAKE_FOLDER)
|
||||
set(CMAKE_FOLDER "${CMAKE_FOLDER}/deps")
|
||||
else()
|
||||
set(CMAKE_FOLDER deps)
|
||||
endif()
|
||||
add_subdirectory(deps)
|
||||
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
|
||||
|
||||
# Target vmemu
|
||||
set(CMKR_TARGET vmemu)
|
||||
set(vmemu_SOURCES "")
|
||||
|
||||
list(APPEND vmemu_SOURCES
|
||||
"src/main.cpp"
|
||||
)
|
||||
|
||||
list(APPEND vmemu_SOURCES
|
||||
cmake.toml
|
||||
)
|
||||
|
||||
set(CMKR_SOURCES ${vmemu_SOURCES})
|
||||
add_executable(vmemu)
|
||||
|
||||
if(vmemu_SOURCES)
|
||||
target_sources(vmemu PRIVATE ${vmemu_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 vmemu)
|
||||
endif()
|
||||
|
||||
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${vmemu_SOURCES})
|
||||
|
||||
target_compile_definitions(vmemu PRIVATE
|
||||
NOMINMAX
|
||||
)
|
||||
|
||||
target_include_directories(vmemu PRIVATE
|
||||
include
|
||||
)
|
||||
|
||||
target_link_libraries(vmemu PRIVATE
|
||||
vmprofiler
|
||||
unicorn
|
||||
cli-parser
|
||||
)
|
||||
|
||||
unset(CMKR_TARGET)
|
||||
unset(CMKR_SOURCES)
|
||||
|
@ -0,0 +1,46 @@
|
||||
# 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})
|
||||
|
||||
# unicorn
|
||||
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
|
||||
if(CMAKE_FOLDER)
|
||||
set(CMAKE_FOLDER "${CMAKE_FOLDER}/unicorn")
|
||||
else()
|
||||
set(CMAKE_FOLDER unicorn)
|
||||
endif()
|
||||
add_subdirectory(unicorn)
|
||||
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
|
||||
|
||||
# Target cli-parser
|
||||
set(CMKR_TARGET cli-parser)
|
||||
set(cli-parser_SOURCES "")
|
||||
|
||||
set(CMKR_SOURCES ${cli-parser_SOURCES})
|
||||
add_library(cli-parser INTERFACE)
|
||||
|
||||
if(cli-parser_SOURCES)
|
||||
target_sources(cli-parser INTERFACE ${cli-parser_SOURCES})
|
||||
endif()
|
||||
|
||||
target_include_directories(cli-parser INTERFACE
|
||||
cli-parser
|
||||
)
|
||||
|
||||
unset(CMKR_TARGET)
|
||||
unset(CMKR_SOURCES)
|
||||
|
@ -0,0 +1 @@
|
||||
Subproject commit 1aedaf8bb7f383f54b7cd498767611535526da85
|
@ -0,0 +1,45 @@
|
||||
#include <cli-parser.hpp>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
|
||||
#define NUM_THREADS 20
|
||||
|
||||
int __cdecl main(int argc, const char* argv[]) {
|
||||
argparse::argument_parser_t parser("VMEmu",
|
||||
"VMProtect 3 VM Handler Emulator");
|
||||
parser.add_argument()
|
||||
.name("--vmentry")
|
||||
.description("relative virtual address to a vm entry...");
|
||||
parser.add_argument()
|
||||
.name("--bin")
|
||||
.description("path to unpacked virtualized binary...")
|
||||
.required(true);
|
||||
parser.add_argument()
|
||||
.name("--out")
|
||||
.description("output file name...")
|
||||
.required(true);
|
||||
parser.add_argument().name("--unpack").description("unpack a vmp2 binary...");
|
||||
parser.add_argument()
|
||||
.names({"-f", "--force"})
|
||||
.description("force emulation of unknown vm handlers...");
|
||||
parser.add_argument()
|
||||
.name("--emuall")
|
||||
.description(
|
||||
"scan for all vm enters and trace all of them... this may take a few "
|
||||
"minutes...");
|
||||
|
||||
parser.enable_help();
|
||||
auto result = parser.parse(argc, argv);
|
||||
|
||||
if (result) {
|
||||
std::printf("[!] error parsing commandline arguments... reason = %s\n",
|
||||
result.what().c_str());
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (parser.exists("help")) {
|
||||
parser.print_help();
|
||||
return 0;
|
||||
}
|
||||
}
|
Loading…
Reference in new issue