From f1f808081b8f4b1ac867e13704538dbf9aff2a4d Mon Sep 17 00:00:00 2001 From: _xeroxz <_xeroxz@back.engineer> Date: Tue, 19 Apr 2022 14:25:09 -0700 Subject: [PATCH] - moved "tests" to its own folder - remove the src/theo folder contents just into src - added some cmkr shit so that tests only build on windows - added compile options for mcmodel=large in the demolibs - changed how we get a ptr to the element from an interator --- CMakeLists.txt | 28 +++++------ cmake.toml | 4 +- include/obf/transform/operation.hpp | 2 + include/obf/transform/rol_op.hpp | 2 +- include/obf/transform/ror_op.hpp | 2 +- src/CMakeLists.txt | 18 ------- src/cmake.toml | 1 - src/{theo => }/decomp/decomp.cpp | 0 src/{theo => }/decomp/routine.cpp | 0 src/{theo => }/decomp/symbol.cpp | 0 src/{theo => }/obf/engine.cpp | 0 .../obf/passes/jcc_rewrite_pass.cpp | 0 src/{theo => }/obf/passes/next_inst_pass.cpp | 2 +- .../obf/passes/reloc_transform_pass.cpp | 2 +- src/{theo => }/recomp/recomp.cpp | 0 src/{theo => }/recomp/symbol_table.cpp | 0 src/tests/demolib/cmake.toml | 7 --- src/tests/demolib2/cmake.toml | 7 --- src/{theo => }/theo.cpp | 0 {src/tests => tests}/CMakeLists.txt | 0 {src/tests => tests}/cmake.toml | 0 {src/tests => tests}/demo/CMakeLists.txt | 50 ++++++++++--------- {src/tests => tests}/demo/cmake.toml | 2 +- {src/tests => tests}/demo/cmkr.cmake | 0 {src/tests => tests}/demo/main.cpp | 0 {src/tests => tests}/demolib/CMakeLists.txt | 38 ++++++++------ tests/demolib/cmake.toml | 8 +++ {src/tests => tests}/demolib/cmkr.cmake | 0 {src/tests => tests}/demolib/main.cpp | 0 {src/tests => tests}/demolib2/CMakeLists.txt | 40 ++++++++------- tests/demolib2/cmake.toml | 8 +++ {src/tests => tests}/demolib2/cmkr.cmake | 0 {src/tests => tests}/demolib2/obj1.cpp | 0 {src/tests => tests}/demolib2/obj2.cpp | 0 34 files changed, 110 insertions(+), 111 deletions(-) delete mode 100644 src/CMakeLists.txt delete mode 100644 src/cmake.toml rename src/{theo => }/decomp/decomp.cpp (100%) rename src/{theo => }/decomp/routine.cpp (100%) rename src/{theo => }/decomp/symbol.cpp (100%) rename src/{theo => }/obf/engine.cpp (100%) rename src/{theo => }/obf/passes/jcc_rewrite_pass.cpp (100%) rename src/{theo => }/obf/passes/next_inst_pass.cpp (97%) rename src/{theo => }/obf/passes/reloc_transform_pass.cpp (95%) rename src/{theo => }/recomp/recomp.cpp (100%) rename src/{theo => }/recomp/symbol_table.cpp (100%) delete mode 100644 src/tests/demolib/cmake.toml delete mode 100644 src/tests/demolib2/cmake.toml rename src/{theo => }/theo.cpp (100%) rename {src/tests => tests}/CMakeLists.txt (100%) rename {src/tests => tests}/cmake.toml (100%) rename {src/tests => tests}/demo/CMakeLists.txt (57%) rename {src/tests => tests}/demo/cmake.toml (55%) rename {src/tests => tests}/demo/cmkr.cmake (100%) rename {src/tests => tests}/demo/main.cpp (100%) rename {src/tests => tests}/demolib/CMakeLists.txt (65%) create mode 100644 tests/demolib/cmake.toml rename {src/tests => tests}/demolib/cmkr.cmake (100%) rename {src/tests => tests}/demolib/main.cpp (100%) rename {src/tests => tests}/demolib2/CMakeLists.txt (64%) create mode 100644 tests/demolib2/cmake.toml rename {src/tests => tests}/demolib2/cmkr.cmake (100%) rename {src/tests => tests}/demolib2/obj1.cpp (100%) rename {src/tests => tests}/demolib2/obj2.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b198d45..1a4b385 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,14 +39,14 @@ endif() add_subdirectory(dependencies) set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) -# src +# tests set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER}) if(CMAKE_FOLDER) - set(CMAKE_FOLDER "${CMAKE_FOLDER}/src") + set(CMAKE_FOLDER "${CMAKE_FOLDER}/tests") else() - set(CMAKE_FOLDER src) + set(CMAKE_FOLDER tests) endif() -add_subdirectory(src) +add_subdirectory(tests) set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) # Target Theodosius @@ -74,16 +74,16 @@ list(APPEND Theodosius_SOURCES "include/recomp/reloc.hpp" "include/recomp/symbol_table.hpp" "include/theo.hpp" - "src/theo/decomp/decomp.cpp" - "src/theo/decomp/routine.cpp" - "src/theo/decomp/symbol.cpp" - "src/theo/obf/engine.cpp" - "src/theo/obf/passes/jcc_rewrite_pass.cpp" - "src/theo/obf/passes/next_inst_pass.cpp" - "src/theo/obf/passes/reloc_transform_pass.cpp" - "src/theo/recomp/recomp.cpp" - "src/theo/recomp/symbol_table.cpp" - "src/theo/theo.cpp" + "src/decomp/decomp.cpp" + "src/decomp/routine.cpp" + "src/decomp/symbol.cpp" + "src/obf/engine.cpp" + "src/obf/passes/jcc_rewrite_pass.cpp" + "src/obf/passes/next_inst_pass.cpp" + "src/obf/passes/reloc_transform_pass.cpp" + "src/recomp/recomp.cpp" + "src/recomp/symbol_table.cpp" + "src/theo.cpp" ) list(APPEND Theodosius_SOURCES diff --git a/cmake.toml b/cmake.toml index 7759c1b..705d7d9 100644 --- a/cmake.toml +++ b/cmake.toml @@ -2,11 +2,11 @@ name = "Theodosius" [subdir.dependencies] -[subdir.src] +[subdir.tests] [target.Theodosius] type = "static" -sources = ["include/**.hpp", "src/theo/**.cpp"] +sources = ["include/**.hpp", "src/**.cpp"] include-directories = ["include"] compile-features = ["cxx_std_20"] diff --git a/include/obf/transform/operation.hpp b/include/obf/transform/operation.hpp index d305e3a..5c73738 100644 --- a/include/obf/transform/operation.hpp +++ b/include/obf/transform/operation.hpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #define XED_ENCODER extern "C" { diff --git a/include/obf/transform/rol_op.hpp b/include/obf/transform/rol_op.hpp index 2a9e7c1..9f60063 100644 --- a/include/obf/transform/rol_op.hpp +++ b/include/obf/transform/rol_op.hpp @@ -6,7 +6,7 @@ class rol_op_t : public operation_t { explicit rol_op_t() : operation_t( [&](std::size_t val, std::uint32_t imm) -> std::size_t { - return _rotl64(val, (std::uint8_t)imm); + return std::rotl(val, (std::uint8_t)imm); }, XED_ICLASS_ROL) {} diff --git a/include/obf/transform/ror_op.hpp b/include/obf/transform/ror_op.hpp index ad77945..9e2e5e7 100644 --- a/include/obf/transform/ror_op.hpp +++ b/include/obf/transform/ror_op.hpp @@ -6,7 +6,7 @@ class ror_op_t : public operation_t { explicit ror_op_t() : operation_t( [&](std::size_t val, std::uint32_t imm) -> std::size_t { - return _rotr64(val, (std::uint8_t)imm); + return std::rotr(val, (std::uint8_t)imm); }, XED_ICLASS_ROR) {} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index afb526c..0000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -# 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() - -# tests -set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER}) -if(CMAKE_FOLDER) - set(CMAKE_FOLDER "${CMAKE_FOLDER}/tests") -else() - set(CMAKE_FOLDER tests) -endif() -add_subdirectory(tests) -set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER}) - diff --git a/src/cmake.toml b/src/cmake.toml deleted file mode 100644 index 67275c5..0000000 --- a/src/cmake.toml +++ /dev/null @@ -1 +0,0 @@ -[subdir.tests] \ No newline at end of file diff --git a/src/theo/decomp/decomp.cpp b/src/decomp/decomp.cpp similarity index 100% rename from src/theo/decomp/decomp.cpp rename to src/decomp/decomp.cpp diff --git a/src/theo/decomp/routine.cpp b/src/decomp/routine.cpp similarity index 100% rename from src/theo/decomp/routine.cpp rename to src/decomp/routine.cpp diff --git a/src/theo/decomp/symbol.cpp b/src/decomp/symbol.cpp similarity index 100% rename from src/theo/decomp/symbol.cpp rename to src/decomp/symbol.cpp diff --git a/src/theo/obf/engine.cpp b/src/obf/engine.cpp similarity index 100% rename from src/theo/obf/engine.cpp rename to src/obf/engine.cpp diff --git a/src/theo/obf/passes/jcc_rewrite_pass.cpp b/src/obf/passes/jcc_rewrite_pass.cpp similarity index 100% rename from src/theo/obf/passes/jcc_rewrite_pass.cpp rename to src/obf/passes/jcc_rewrite_pass.cpp diff --git a/src/theo/obf/passes/next_inst_pass.cpp b/src/obf/passes/next_inst_pass.cpp similarity index 97% rename from src/theo/obf/passes/next_inst_pass.cpp rename to src/obf/passes/next_inst_pass.cpp index 0f3dbee..cf3f8de 100644 --- a/src/theo/obf/passes/next_inst_pass.cpp +++ b/src/obf/passes/next_inst_pass.cpp @@ -67,7 +67,7 @@ std::optional next_inst_pass_t::has_next_inst_reloc( sym->relocs().begin(), sym->relocs().end(), [&](recomp::reloc_t& reloc) -> bool { return !reloc.offset(); }); - return res != sym->relocs().end() ? res._Ptr + return res != sym->relocs().end() ? &(*res) : std::optional(); } } // namespace theo::obf \ No newline at end of file diff --git a/src/theo/obf/passes/reloc_transform_pass.cpp b/src/obf/passes/reloc_transform_pass.cpp similarity index 95% rename from src/theo/obf/passes/reloc_transform_pass.cpp rename to src/obf/passes/reloc_transform_pass.cpp index 45113ae..3bf062a 100644 --- a/src/theo/obf/passes/reloc_transform_pass.cpp +++ b/src/obf/passes/reloc_transform_pass.cpp @@ -41,7 +41,7 @@ std::optional reloc_transform_pass_t::has_legit_reloc( sym->relocs().begin(), sym->relocs().end(), [&](recomp::reloc_t& reloc) -> bool { return reloc.offset(); }); - return res != sym->relocs().end() ? res._Ptr + return res != sym->relocs().end() ? &(*res) : std::optional(); } } // namespace theo::obf \ No newline at end of file diff --git a/src/theo/recomp/recomp.cpp b/src/recomp/recomp.cpp similarity index 100% rename from src/theo/recomp/recomp.cpp rename to src/recomp/recomp.cpp diff --git a/src/theo/recomp/symbol_table.cpp b/src/recomp/symbol_table.cpp similarity index 100% rename from src/theo/recomp/symbol_table.cpp rename to src/recomp/symbol_table.cpp diff --git a/src/tests/demolib/cmake.toml b/src/tests/demolib/cmake.toml deleted file mode 100644 index baa54bd..0000000 --- a/src/tests/demolib/cmake.toml +++ /dev/null @@ -1,7 +0,0 @@ -[project] -name = "demolib" - -[target.demolib] -type = "static" - -sources = ["*.cpp"] \ No newline at end of file diff --git a/src/tests/demolib2/cmake.toml b/src/tests/demolib2/cmake.toml deleted file mode 100644 index 4869216..0000000 --- a/src/tests/demolib2/cmake.toml +++ /dev/null @@ -1,7 +0,0 @@ -[project] -name = "demolib2" - -[target.demolib2] -type = "static" - -sources = ["*.cpp"] \ No newline at end of file diff --git a/src/theo/theo.cpp b/src/theo.cpp similarity index 100% rename from src/theo/theo.cpp rename to src/theo.cpp diff --git a/src/tests/CMakeLists.txt b/tests/CMakeLists.txt similarity index 100% rename from src/tests/CMakeLists.txt rename to tests/CMakeLists.txt diff --git a/src/tests/cmake.toml b/tests/cmake.toml similarity index 100% rename from src/tests/cmake.toml rename to tests/cmake.toml diff --git a/src/tests/demo/CMakeLists.txt b/tests/demo/CMakeLists.txt similarity index 57% rename from src/tests/demo/CMakeLists.txt rename to tests/demo/CMakeLists.txt index aefe969..93a6aa9 100644 --- a/src/tests/demo/CMakeLists.txt +++ b/tests/demo/CMakeLists.txt @@ -30,36 +30,38 @@ endif() project(demo) # Target demo -set(CMKR_TARGET demo) -set(demo_SOURCES "") +if(WIN32) # windows + set(CMKR_TARGET demo) + set(demo_SOURCES "") -list(APPEND demo_SOURCES - main.cpp -) + list(APPEND demo_SOURCES + main.cpp + ) -list(APPEND demo_SOURCES - cmake.toml -) + list(APPEND demo_SOURCES + cmake.toml + ) -set(CMKR_SOURCES ${demo_SOURCES}) -add_executable(demo) + set(CMKR_SOURCES ${demo_SOURCES}) + add_executable(demo) -if(demo_SOURCES) - target_sources(demo PRIVATE ${demo_SOURCES}) -endif() + if(demo_SOURCES) + target_sources(demo PRIVATE ${demo_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 demo) -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 demo) + endif() -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${demo_SOURCES}) + source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${demo_SOURCES}) -target_link_libraries(demo PRIVATE - Theodosius - spdlog -) + target_link_libraries(demo PRIVATE + Theodosius + spdlog + ) -unset(CMKR_TARGET) -unset(CMKR_SOURCES) + unset(CMKR_TARGET) + unset(CMKR_SOURCES) +endif() diff --git a/src/tests/demo/cmake.toml b/tests/demo/cmake.toml similarity index 55% rename from src/tests/demo/cmake.toml rename to tests/demo/cmake.toml index e236a90..55ac998 100644 --- a/src/tests/demo/cmake.toml +++ b/tests/demo/cmake.toml @@ -2,7 +2,7 @@ name = "demo" [target.demo] +condition = "windows" type = "executable" - sources = ["*.cpp"] link-libraries = ["Theodosius", "spdlog"] \ No newline at end of file diff --git a/src/tests/demo/cmkr.cmake b/tests/demo/cmkr.cmake similarity index 100% rename from src/tests/demo/cmkr.cmake rename to tests/demo/cmkr.cmake diff --git a/src/tests/demo/main.cpp b/tests/demo/main.cpp similarity index 100% rename from src/tests/demo/main.cpp rename to tests/demo/main.cpp diff --git a/src/tests/demolib/CMakeLists.txt b/tests/demolib/CMakeLists.txt similarity index 65% rename from src/tests/demolib/CMakeLists.txt rename to tests/demolib/CMakeLists.txt index b89f6fd..7c8a7ac 100644 --- a/src/tests/demolib/CMakeLists.txt +++ b/tests/demolib/CMakeLists.txt @@ -30,26 +30,32 @@ endif() project(demolib) # Target demolib -set(CMKR_TARGET demolib) -set(demolib_SOURCES "") +if(WIN32) # windows + set(CMKR_TARGET demolib) + set(demolib_SOURCES "") -list(APPEND demolib_SOURCES - main.cpp -) + list(APPEND demolib_SOURCES + main.cpp + ) -list(APPEND demolib_SOURCES - cmake.toml -) + list(APPEND demolib_SOURCES + cmake.toml + ) -set(CMKR_SOURCES ${demolib_SOURCES}) -add_library(demolib STATIC) + set(CMKR_SOURCES ${demolib_SOURCES}) + add_library(demolib STATIC) -if(demolib_SOURCES) - target_sources(demolib PRIVATE ${demolib_SOURCES}) -endif() + if(demolib_SOURCES) + target_sources(demolib PRIVATE ${demolib_SOURCES}) + endif() -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${demolib_SOURCES}) + source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${demolib_SOURCES}) -unset(CMKR_TARGET) -unset(CMKR_SOURCES) + target_compile_options(demolib PUBLIC + "-Xclang -mcmodel=large" + ) + + unset(CMKR_TARGET) + unset(CMKR_SOURCES) +endif() diff --git a/tests/demolib/cmake.toml b/tests/demolib/cmake.toml new file mode 100644 index 0000000..584fd6f --- /dev/null +++ b/tests/demolib/cmake.toml @@ -0,0 +1,8 @@ +[project] +name = "demolib" + +[target.demolib] +condition = "windows" +type = "static" +sources = ["*.cpp"] +compile-options = ["-Xclang -mcmodel=large"] \ No newline at end of file diff --git a/src/tests/demolib/cmkr.cmake b/tests/demolib/cmkr.cmake similarity index 100% rename from src/tests/demolib/cmkr.cmake rename to tests/demolib/cmkr.cmake diff --git a/src/tests/demolib/main.cpp b/tests/demolib/main.cpp similarity index 100% rename from src/tests/demolib/main.cpp rename to tests/demolib/main.cpp diff --git a/src/tests/demolib2/CMakeLists.txt b/tests/demolib2/CMakeLists.txt similarity index 64% rename from src/tests/demolib2/CMakeLists.txt rename to tests/demolib2/CMakeLists.txt index 81bdb8b..25a0d12 100644 --- a/src/tests/demolib2/CMakeLists.txt +++ b/tests/demolib2/CMakeLists.txt @@ -30,27 +30,33 @@ endif() project(demolib2) # Target demolib2 -set(CMKR_TARGET demolib2) -set(demolib2_SOURCES "") +if(WIN32) # windows + set(CMKR_TARGET demolib2) + set(demolib2_SOURCES "") -list(APPEND demolib2_SOURCES - obj1.cpp - obj2.cpp -) + list(APPEND demolib2_SOURCES + obj1.cpp + obj2.cpp + ) -list(APPEND demolib2_SOURCES - cmake.toml -) + list(APPEND demolib2_SOURCES + cmake.toml + ) -set(CMKR_SOURCES ${demolib2_SOURCES}) -add_library(demolib2 STATIC) + set(CMKR_SOURCES ${demolib2_SOURCES}) + add_library(demolib2 STATIC) -if(demolib2_SOURCES) - target_sources(demolib2 PRIVATE ${demolib2_SOURCES}) -endif() + if(demolib2_SOURCES) + target_sources(demolib2 PRIVATE ${demolib2_SOURCES}) + endif() -source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${demolib2_SOURCES}) + source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${demolib2_SOURCES}) -unset(CMKR_TARGET) -unset(CMKR_SOURCES) + target_compile_options(demolib2 PUBLIC + "-Xclang -mcmodel=large" + ) + + unset(CMKR_TARGET) + unset(CMKR_SOURCES) +endif() diff --git a/tests/demolib2/cmake.toml b/tests/demolib2/cmake.toml new file mode 100644 index 0000000..f9a667d --- /dev/null +++ b/tests/demolib2/cmake.toml @@ -0,0 +1,8 @@ +[project] +name = "demolib2" + +[target.demolib2] +condition = "windows" +type = "static" +sources = ["*.cpp"] +compile-options = ["-Xclang -mcmodel=large"] \ No newline at end of file diff --git a/src/tests/demolib2/cmkr.cmake b/tests/demolib2/cmkr.cmake similarity index 100% rename from src/tests/demolib2/cmkr.cmake rename to tests/demolib2/cmkr.cmake diff --git a/src/tests/demolib2/obj1.cpp b/tests/demolib2/obj1.cpp similarity index 100% rename from src/tests/demolib2/obj1.cpp rename to tests/demolib2/obj1.cpp diff --git a/src/tests/demolib2/obj2.cpp b/tests/demolib2/obj2.cpp similarity index 100% rename from src/tests/demolib2/obj2.cpp rename to tests/demolib2/obj2.cpp