diff options
| author | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-27 11:42:55 +0200 |
|---|---|---|
| committer | Amlal <amlal@el-mahrouss-logic.com> | 2024-09-27 11:42:55 +0200 |
| commit | 28dcc76e2e93817a5e4a4ceef0479fd8ac7399c9 (patch) | |
| tree | 4ca252d938095b0ef054836c900d25b758379a61 | |
| parent | 8db6fc60063757628f92bd1c4d4855775f4ff9e2 (diff) | |
| parent | f34d39946213f68c4d49c47eaaedb99b0f5f47ad (diff) | |
Merge branch 'unstable' of gitlab.com:mahrouss/zka-dev into unstable
| -rw-r--r-- | dev/base/EncryptFS/build.json | 2 | ||||
| -rw-r--r-- | dev/base/FireWall/build.json | 19 | ||||
| -rw-r--r-- | dev/base/FireWall/fwapi.hxx | 7 | ||||
| -rw-r--r-- | dev/base/FireWall/src/fwentry.cc | 5 | ||||
| -rw-r--r-- | dev/base/ReadMe.md | 4 | ||||
| -rw-r--r-- | dev/base/RunDLL64/src/dll.cxx | 4 | ||||
| -rw-r--r-- | dev/base/RunXPCOM/src/xpcom.cxx | 4 | ||||
| -rw-r--r-- | tools/drvsign.cxx | 107 | ||||
| -rw-r--r-- | tools/drvsign.json | 6 | ||||
| -rw-r--r-- | tools/src/zxdmake.cxx | 72 | ||||
| -rw-r--r-- | tools/zxd.hxx | 56 | ||||
| -rw-r--r-- | tools/zxdmake.json | 19 |
12 files changed, 189 insertions, 116 deletions
diff --git a/dev/base/EncryptFS/build.json b/dev/base/EncryptFS/build.json index 3b41b059..1f9b018e 100644 --- a/dev/base/EncryptFS/build.json +++ b/dev/base/EncryptFS/build.json @@ -3,7 +3,7 @@ "compiler_std": "c++20", "headers_path": ["../", "./"], "sources_path": ["src/*.cxx"], - "output_name": "efs.sys", + "output_name": "efs.zsc", "compiler_flags": [ "-ffreestanding", "-shared", diff --git a/dev/base/FireWall/build.json b/dev/base/FireWall/build.json new file mode 100644 index 00000000..7f8c4956 --- /dev/null +++ b/dev/base/FireWall/build.json @@ -0,0 +1,19 @@ +{ + "compiler_path": "x86_64-w64-mingw32-g++.exe", + "compiler_std": "c++20", + "headers_path": [ "../", "./", "../../" ], + "sources_path": [ "src/*.cc" ], + "output_name": "firewall.zsc", + "compiler_flags": [ + "-ffreestanding", + "-fno-rtti", + "-fno-exceptions", + "-Wl,--subsystem=17" + ], + "cpp_macros": [ + "__FIREWALL_AMD64__", + "cFWVersion=0x0100", + "cFWVersionHighest=0x0100", + "cFWVersionLowest=0x0100" + ] +} diff --git a/dev/base/FireWall/fwapi.hxx b/dev/base/FireWall/fwapi.hxx new file mode 100644 index 00000000..7e22333d --- /dev/null +++ b/dev/base/FireWall/fwapi.hxx @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2024 ZKA Technologies + */ + +#pragma once + +#include <sci/sci_base.hxx>
\ No newline at end of file diff --git a/dev/base/FireWall/src/fwentry.cc b/dev/base/FireWall/src/fwentry.cc new file mode 100644 index 00000000..e7b929d3 --- /dev/null +++ b/dev/base/FireWall/src/fwentry.cc @@ -0,0 +1,5 @@ +/* + * Copyright (c) 2024 ZKA Technologies + */ + +#include <fwapi.hxx>
\ No newline at end of file diff --git a/dev/base/ReadMe.md b/dev/base/ReadMe.md index 46443aea..307ef17d 100644 --- a/dev/base/ReadMe.md +++ b/dev/base/ReadMe.md @@ -1,7 +1,7 @@ -# ZKA User DLLs/Programs.
+# ZKA User apps and services.
## Description:
-- Used to provide features to a program from the sci.dll.
+- Provides firewall, filesystem encrypter and rundll/runxpcom tools.
###### Copyright ZKA Technologies, all rights reserved.
diff --git a/dev/base/RunDLL64/src/dll.cxx b/dev/base/RunDLL64/src/dll.cxx index 560a404d..ece370dc 100644 --- a/dev/base/RunDLL64/src/dll.cxx +++ b/dev/base/RunDLL64/src/dll.cxx @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2024 ZKA Technologies + */ + #include <sci/sci_base.hxx> typedef int (*MainKind)(int, char**); diff --git a/dev/base/RunXPCOM/src/xpcom.cxx b/dev/base/RunXPCOM/src/xpcom.cxx index 9536b070..7c6aa252 100644 --- a/dev/base/RunXPCOM/src/xpcom.cxx +++ b/dev/base/RunXPCOM/src/xpcom.cxx @@ -1,3 +1,7 @@ +/* + * Copyright (c) 2024 ZKA Technologies + */ + #include <sci/sci_base.hxx> typedef SInt32 (*RPCProcKind)(IUnknown*); diff --git a/tools/drvsign.cxx b/tools/drvsign.cxx deleted file mode 100644 index ec5a6945..00000000 --- a/tools/drvsign.cxx +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Created on Thu Aug 22 09:29:13 CEST 2024 - * - * Copyright (c) 2024 ZKA Technologies - */ - -#include <cstdint> -#include <iostream> -#include <fstream> -#include <string> -#include <cstring> -#include <sstream> -#include <filesystem> - -#define kDriverSignedExt ".zxd" -#define kDriverExt ".sys" -#define kSignedDriverMagic " ZXD" - -namespace ZXD -{ - struct ZXD_HEADER final - { - char d_binary_padding[512]; - // doesn't change. - char d_binary_magic[5]; - int d_binary_version; - // can change. - char d_binary_name[4096]; - std::uint64_t d_binary_checksum; - std::uint64_t d_binary_size; - }; - - /***********************************************************************************/ - /* This handles the detection of a MZ header. */ - /***********************************************************************************/ - - bool drvsign_check_for_mz(std::string mz_blob) noexcept - { - return mz_blob[0] == 'M' && - mz_blob[1] == 'Z'; - } -} // namespace ZXD - -/// @brief This program converts a PE32+ driver, into a custom format, the ZXD. -/// @note ZXD is a format for ZKA signed drivers. -int main(int argc, char* argv[]) -{ - for (size_t i = 1ul; i < argc; ++i) - { - if (strcmp(argv[i], "/?") == 0) - { - std::cout << "drvsign: ZKA ZXD Driver Tool.\n"; - std::cout << "drvsign: © ZKA Technologies, all rights reserved.\n"; - - return 0; - } - } - - if (!std::filesystem::exists(argv[1]) || - !std::string(argv[1]).ends_with(kDriverExt)) - return -1; - - ZXD::ZXD_HEADER sig{0}; - - sig.d_binary_version = 1; - - memcpy(sig.d_binary_magic, kSignedDriverMagic, strlen(kSignedDriverMagic)); - memcpy(sig.d_binary_name, argv[1], strlen(argv[1])); - - sig.d_binary_size = std::filesystem::file_size(argv[1]); - - memset(sig.d_binary_padding, 0x00, 512); - - sig.d_binary_checksum = 0; - - std::string signed_path = argv[1]; - signed_path.erase(signed_path.find(kDriverExt), strlen(kDriverExt)); - signed_path += kDriverSignedExt; - - std::ofstream of_drv(signed_path, std::ios::binary); - std::ifstream if_drv(argv[1], std::ios::binary); - - std::stringstream ss; - ss << if_drv.rdbuf(); - - if (!ZXD::drvsign_check_for_mz(ss.str())) - { - std::filesystem::remove(signed_path); - std::cout << "drvsign: Couldn't sign current driver, Input driver isn't a valid executable.\n"; - - return 1; - } - - for (auto ch : ss.str()) - { - sig.d_binary_checksum |= ch; - } - - sig.d_binary_checksum ^= sig.d_binary_size; - - of_drv.write((char*)&sig, sizeof(ZXD::ZXD_HEADER)); - of_drv.write(ss.str().c_str(), ss.str().size()); - - std::cout << "drvsign: Signing is done, quiting, here is the key: " << sig.d_binary_checksum << ".\n"; - - return 0; -} diff --git a/tools/drvsign.json b/tools/drvsign.json deleted file mode 100644 index 33bd4ea8..00000000 --- a/tools/drvsign.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "compiler_path": "g++", - "compiler_std": "c++20", - "sources_path": ["drvsign.cxx"], - "output_name": "drvsign" -} diff --git a/tools/src/zxdmake.cxx b/tools/src/zxdmake.cxx new file mode 100644 index 00000000..8a3276ff --- /dev/null +++ b/tools/src/zxdmake.cxx @@ -0,0 +1,72 @@ +/* + * Created on Thu Aug 22 09:29:13 CEST 2024 + * + * Copyright (c) 2024 ZKA Technologies + */ + +#include <zxd.hxx> + +/// @brief This program converts a PE32+ driver, into a custom format, the ZXD. +/// @note ZXD is a format for ZKA signed drivers. +int main(int argc, char* argv[]) +{ + for (size_t i = 1ul; i < argc; ++i) + { + if (strcmp(argv[i], "/?") == 0) + { + std::cout << "zxdmake: ZKA ZXD Driver Tool.\n"; + std::cout << "zxdmake: © ZKA Technologies, all rights reserved.\n"; + + return 0; + } + } + + if (!std::filesystem::exists(argv[1]) || + !std::string(argv[1]).ends_with(kDriverExt)) + return -1; + + ZXD::ZXD_HEADER zxd_hdr{0}; + + zxd_hdr.d_binary_version = 1; + + memcpy(zxd_hdr.d_binary_magic, kSignedDriverMagic, strlen(kSignedDriverMagic)); + memcpy(zxd_hdr.d_binary_name, argv[1], strlen(argv[1])); + + zxd_hdr.d_binary_size = std::filesystem::file_size(argv[1]); + + memset(zxd_hdr.d_binary_padding, 0x00, 512); + + zxd_hdr.d_binary_checksum = 0; + + std::string signed_path = argv[1]; + signed_path.erase(signed_path.find(kDriverExt), strlen(kDriverExt)); + signed_path += kDriverSignedExt; + + std::ofstream of_drv(signed_path, std::ios::binary); + std::ifstream if_drv(argv[1], std::ios::binary); + + std::stringstream ss; + ss << if_drv.rdbuf(); + + if (!ZXD::zxd_check_for_mz(ss.str())) + { + std::filesystem::remove(signed_path); + std::cout << "zxdmake: Couldn't sign current driver, Input driver isn't a valid executable.\n"; + + return 1; + } + + for (auto ch : ss.str()) + { + zxd_hdr.d_binary_checksum |= ch; + } + + zxd_hdr.d_binary_checksum ^= zxd_hdr.d_binary_size; + + of_drv.write((char*)&zxd_hdr, sizeof(ZXD::ZXD_HEADER)); + of_drv.write(ss.str().c_str(), ss.str().size()); + + std::cout << "zxdmake: Signing is done, quiting, Checksum: " << zxd_hdr.d_binary_checksum << ".\n"; + + return 0; +} diff --git a/tools/zxd.hxx b/tools/zxd.hxx new file mode 100644 index 00000000..5875b017 --- /dev/null +++ b/tools/zxd.hxx @@ -0,0 +1,56 @@ +/* + * Created on Thu Aug 22 09:29:13 CEST 2024 + * + * Copyright (c) 2024 ZKA Technologies + */ + +#pragma once + +#include <cstdint> +#include <iostream> +#include <fstream> +#include <string> +#include <cstring> +#include <sstream> +#include <filesystem> + +#define kDriverSignedExt ".zxd" +#define kDriverExt ".sys" +#define kSignedDriverMagic " ZXD" + +#define cZXDPaddingSize (512) +#define cZXDMagicSize (5) + +namespace ZXD +{ + /// <summary> + /// ZXD header. + /// </summary> + struct ZXD_HEADER final + { + char d_binary_padding[cZXDPaddingSize]; + // doesn't change. + char d_binary_magic[cZXDMagicSize]; + std::int32_t d_binary_version; + // can change. + char d_binary_name[4096]; + std::uint64_t d_binary_checksum; + std::uint64_t d_binary_size; + }; + + /***********************************************************************************/ + /* @brief These two handles the detection of a MZ header. */ + /***********************************************************************************/ + + inline bool zxd_check_for_mz(const char* mz_blob) noexcept + { + return mz_blob[0] == 'M' && + mz_blob[1] == 'Z'; + } + + inline bool zxd_check_for_mz(std::string mz_blob) noexcept + { + return mz_blob[0] == 'M' && + mz_blob[1] == 'Z'; + } +} // namespace ZXD
\ No newline at end of file diff --git a/tools/zxdmake.json b/tools/zxdmake.json new file mode 100644 index 00000000..d24a5de9 --- /dev/null +++ b/tools/zxdmake.json @@ -0,0 +1,19 @@ +{ + "compiler_path": "x86_64-w64-mingw32-g++.exe", + "compiler_std": "c++20", + "headers_path": [ "../", "./", "../../" ], + "sources_path": [ "src/zxdmake.cxx" ], + "output_name": "zxdmake.exe", + "compiler_flags": [ + "-ffreestanding", + "-fno-rtti", + "-fno-exceptions", + "-Wl,--subsystem=17" + ], + "cpp_macros": [ + "__DRVSIGN_AMD64__", + "cDSVersion=0x0100", + "cDSVersionHighest=0x0100", + "cDSVersionLowest=0x0100" + ] +} |
