diff --git a/gui-rw-obfuscator/GUI-Obfuscator.sln b/gui-rw-obfuscator/GUI-Obfuscator.sln new file mode 100644 index 0000000..387b98f --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32210.238 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GUI-Obfuscator", "GUI-Obfuscator\GUI-Obfuscator.vcxproj", "{0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Debug|x64.ActiveCfg = Release|Win32 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Debug|x64.Build.0 = Release|Win32 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Debug|x86.ActiveCfg = Debug|Win32 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Debug|x86.Build.0 = Debug|Win32 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Release|x64.ActiveCfg = Release|x64 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Release|x64.Build.0 = Release|x64 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Release|x86.ActiveCfg = Release|Win32 + {0E1EAD0A-13B1-489C-AC9D-1941F9897DCA}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {BDA85466-6922-40B4-B170-77FF2E16D675} + EndGlobalSection +EndGlobal diff --git a/gui-rw-obfuscator/GUI-Obfuscator/BinaryIOHelpers.h b/gui-rw-obfuscator/GUI-Obfuscator/BinaryIOHelpers.h new file mode 100644 index 0000000..7b5b5c6 --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/BinaryIOHelpers.h @@ -0,0 +1,122 @@ +#pragma once +#include +#include +#include +#include +#include + + +typedef char int8; +typedef short int16; +typedef int int32; +typedef long long int64; +typedef unsigned char uint8; +typedef unsigned short uint16; +typedef unsigned int uint32; +typedef unsigned long long uint64; +typedef float float32; + +uint32 +writeInt8(int8 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(int8)); + return sizeof(int8); +} + +uint32 +writeUInt8(uint8 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(uint8)); + return sizeof(uint8); +} + +uint32 +writeInt16(int16 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(int16)); + return sizeof(int16); +} + +uint32 +writeUInt16(uint16 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(uint16)); + return sizeof(uint16); +} + +uint32 +writeInt32(int32 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(int32)); + return sizeof(int32); +} + +uint32 +writeUInt32(uint32 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(uint32)); + return sizeof(uint32); +} + +uint32 +writeFloat32(float32 tmp, std::ostream& rw) +{ + rw.write(reinterpret_cast (&tmp), sizeof(float32)); + return sizeof(float32); +} + +int8 +readInt8(std::istream& rw) +{ + int8 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(int8)); + return tmp; +} + +uint8 +readUInt8(std::istream& rw) +{ + uint8 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(uint8)); + return tmp; +} + +int16 +readInt16(std::istream& rw) +{ + int16 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(int16)); + return tmp; +} + +uint16 +readUInt16(std::istream& rw) +{ + uint16 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(uint16)); + return tmp; +} + +int32 +readInt32(std::istream& rw) +{ + int32 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(int32)); + return tmp; +} + +uint32 +readUInt32(std::istream& rw) +{ + uint32 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(uint32)); + return tmp; +} + +float32 +readFloat32(std::istream& rw) +{ + float32 tmp; + rw.read(reinterpret_cast (&tmp), sizeof(float32)); + return tmp; +} diff --git a/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.aps b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.aps new file mode 100644 index 0000000..e5e5ed7 Binary files /dev/null and b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.aps differ diff --git a/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.cpp b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.cpp new file mode 100644 index 0000000..0b1c5e1 --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.cpp @@ -0,0 +1,118 @@ +#include "Header.h" +#include "RWObfuscator.hpp" + +#include "resource.h" + + + +LRESULT WINAPI WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); + +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) +{ + // Interface part + LPCWSTR WndClassName = L"MainWindow"; + + WNDCLASSEX WndClass; + WndClass.cbSize = sizeof(WNDCLASSEX); + WndClass.style = CS_HREDRAW; + WndClass.cbWndExtra = 0; + WndClass.cbClsExtra = 0; + WndClass.hInstance = hInstance; + WndClass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); + WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); + WndClass.hbrBackground = CreateSolidBrush(RGB(245, 245, 245)); + WndClass.lpszMenuName = NULL; + WndClass.hIconSm = LoadIcon(WndClass.hInstance, MAKEINTRESOURCE(IDI_ICON1)); + WndClass.lpfnWndProc = WndProc; + WndClass.lpszClassName = WndClassName; + RegisterClassEx(&WndClass); + + MainFont = CreateFontW(17, 7, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, DEFAULT_PITCH, L"Helvetica"); + LabelsFont = CreateFontW(16, 6, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, DEFAULT_PITCH, L"Helvetica"); + + MainWindow = CreateWindowExW(WS_EX_ACCEPTFILES, WndClassName, L"GUI-Obfuscator", WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 725, 245, NULL, NULL, hInstance, NULL); + + OriginIMGEdit = CreateWindowExW(WS_EX_CLIENTEDGE, L"edit", L"", WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL | ES_READONLY, 150, 40, 525, 26, MainWindow, (HMENU)IMG_ORIGIN_EDIT, hInstance, NULL); + OpenFolder = CreateWindowExW(WS_EX_CLIENTEDGE, L"button", L"Open file ", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 10, 39, 125, 30, MainWindow, (HMENU)Folder_Button, hInstance, NULL); + + EncryptedIMGEdit = CreateWindowExW(WS_EX_CLIENTEDGE, L"edit", L"", WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL, 10, 100, 665, 26, MainWindow, (HMENU)IMG_ENCRYPTED_EDIT, hInstance, NULL); + + EncryptKeyEdit1 = CreateWindowExW(WS_EX_CLIENTEDGE, L"edit", L"6", WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL, 10, 155, 100, 26, MainWindow, (HMENU)IMG_ENCRYPTED_EDIT, hInstance, NULL); + EncryptKeyEdit2 = CreateWindowExW(WS_EX_CLIENTEDGE, L"edit", L"23", WS_CHILD | WS_VISIBLE | ES_LEFT | ES_AUTOHSCROLL, 135, 155, 100, 26, MainWindow, (HMENU)IMG_ENCRYPTED_EDIT, hInstance, NULL); + + EncryptButton = CreateWindowExW(WS_EX_CLIENTEDGE, L"button", L"Run Compile", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 500, 155, 200, 30, MainWindow, (HMENU)ENCRYPT_BUTTON, hInstance, NULL); + + const COLORREF backgroundColor = RGB(200, 200, 200); + SetClassLongPtr(MainWindow, GCLP_HBRBACKGROUND, reinterpret_cast(CreateSolidBrush(backgroundColor))); + + ShowWindow(MainWindow, nShowCmd); + UpdateWindow(MainWindow); + MSG Message; + while (GetMessage(&Message, NULL, 0, 0)) + { + TranslateMessage(&Message); + DispatchMessage(&Message); + } + // Interface part + + return 0; +} + + +LRESULT WINAPI WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + HDC Writer; + PAINTSTRUCT Pstr; + switch (message) + { + case WM_DESTROY: + PostQuitMessage(0); // + break; + case WM_CLOSE: + DestroyWindow(hWnd); // , WM_DESTROY + break; + case WM_DROPFILES: + { + DWORD Size = DragQueryFileW((HDROP)wParam, 0, NULL, 0); + LPWSTR DroppedFileName = (LPWSTR)malloc(Size * 2 + 2); + DragQueryFileW((HDROP)wParam, 0, DroppedFileName, Size + 1); + SetWindowTextW(OriginIMGEdit, DroppedFileName); + free(DroppedFileName); + + return 0; + } + break; + case WM_PAINT: + SendMessageW(OriginIMGEdit, WM_SETFONT, (WPARAM)MainFont, TRUE); + SendMessageW(EncryptedIMGEdit, WM_SETFONT, (WPARAM)MainFont, TRUE); + SendMessageW(EncryptButton, WM_SETFONT, (WPARAM)MainFont, TRUE); + SendMessageW(EncryptButton, WM_SETFONT, (WPARAM)MainFont, TRUE); + SendMessageW(EncryptKeyEdit1, WM_SETFONT, (WPARAM)MainFont, TRUE); + SendMessageW(EncryptKeyEdit2, WM_SETFONT, (WPARAM)MainFont, TRUE); + SendMessageW(OpenFolder, WM_SETFONT, (WPARAM)MainFont, TRUE); + + Writer = BeginPaint(hWnd, &Pstr); + SelectObject(Writer, LabelsFont); + SetBkMode(Writer, TRANSPARENT); + TextOutW(Writer, 15, 15, L"Source File", 12); + TextOutW(Writer, 10, 80, L"Save path", 15); + TextOutW(Writer, 10, 135, L" Key Variant", 41); + EndPaint(hWnd, &Pstr); + + return 0; + break; + case WM_COMMAND: + if (runFunction(hWnd, wParam)) + { + startMission(lPARTS_NUM, lVARIANT_KEY); + return 0; + } + + break; + default: + return DefWindowProc(hWnd, message, wParam, lParam); + } + + return 0; +} + diff --git a/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.filters b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.filters new file mode 100644 index 0000000..42adbae --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.filters @@ -0,0 +1,58 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {f5132650-66f5-42d2-ad26-9337f8f71ce3} + + + + + Файлы заголовков + + + Файлы заголовков + + + Файлы заголовков + + + Исходные файлы\LLIEPLLIEHb Module + + + Исходные файлы\LLIEPLLIEHb Module + + + Исходные файлы\LLIEPLLIEHb Module + + + + + Исходные файлы + + + + + Файлы ресурсов + + + + + Файлы ресурсов + + + Файлы ресурсов + + + \ No newline at end of file diff --git a/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.rc b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.rc new file mode 100644 index 0000000..af7ad17 Binary files /dev/null and b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.rc differ diff --git a/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.vcxproj b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.vcxproj new file mode 100644 index 0000000..66935fd --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.vcxproj @@ -0,0 +1,166 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {0e1ead0a-13b1-489c-ac9d-1941f9897dca} + Шифратор + 10.0 + GUI-Obfuscator + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + + + + + + + + Level3 + true + true + true + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + PerMonitorHighDPIAware + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.vcxproj.filters b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.vcxproj.filters new file mode 100644 index 0000000..0a781f3 --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/GUI-Obfuscator.vcxproj.filters @@ -0,0 +1,32 @@ + + + + + {5de50354-ea5b-49e9-b4c8-c5d04343031e} + + + + + Header + + + Header + + + Header + + + Header + + + + + + + + + + + + + \ No newline at end of file diff --git a/gui-rw-obfuscator/GUI-Obfuscator/Header.h b/gui-rw-obfuscator/GUI-Obfuscator/Header.h new file mode 100644 index 0000000..b6e1b6a --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/Header.h @@ -0,0 +1,207 @@ +#pragma once + +#include // HandlerRoutine +#include +#include +#include +#pragma comment(lib, "wininet.lib") +#pragma comment(lib, "shlwapi.lib") + +using namespace std; + +//#define PARTS_NUM 600 // A number of parts for assets decomposing +//#define VARIANT_KEY 2300 // The key for permutation value + +#include "BinaryIOHelpers.h" +//#include "RWObfuscator.hpp" + + +#define IMG_ORIGIN_EDIT 100 // .img +#define IMG_ENCRYPTED_EDIT 101 +#define ENCRYPT_BUTTON 102 +#define Folder_Button 103 +#define DECRYPT_BUTTON 105 // decrypt button + +// Interface +HWND MainWindow, OpenFolder, OriginIMGEdit, EncryptedIMGEdit, EncryptButton, EncryptKeyEdit1, EncryptKeyEdit2; +HFONT MainFont, LabelsFont; +DWORD g_Key1, g_Key2; +int lPARTS_NUM, lVARIANT_KEY; +// Interface + +bool select_dir = false; +wchar_t Local_File_Dir; +wchar_t szFileName[MAX_PATH] = { 0 }; // + +void ShowErrorMessage(const wchar_t* message) +{ + MessageBoxW(MainWindow, message, L"", MB_ICONERROR); +} + +bool IsNumericString(const wchar_t* str) +{ + for (size_t i = 0; str[i] != L'\0'; i++) + { + if (!iswdigit(str[i])) + { + return false; + } + } + return true; +} + +bool CheckKeyValidity(DWORD key, const wchar_t* keyName) +{ + wchar_t keyText1[MAX_PATH]; + wchar_t keyText2[MAX_PATH]; + GetWindowTextW(EncryptKeyEdit1, keyText1, MAX_PATH); + GetWindowTextW(EncryptKeyEdit2, keyText2, MAX_PATH); + wstring errorMessage = L"[" + wstring(keyName) + L"]"; + errorMessage += L" it can't be empty!"; + + if (key == 0) + { + ShowErrorMessage(errorMessage.c_str()); + return false; + } + + if (!IsNumericString(keyText1) && keyName == L"Key" || !IsNumericString(keyText2) && keyName == L"Variant") + { + errorMessage = L"[" + wstring(keyName) + L"]"; + errorMessage += L" contains invalid characters when creating a password!\n Use only numbers!"; + ShowErrorMessage(errorMessage.c_str()); + return false; + } + + if (key > 0xFFFFFFFF) // DWORD + { + errorMessage = L"[" + wstring(keyName) + L"]"; + errorMessage += L" exceeds the maximum DWORD value!"; + ShowErrorMessage(errorMessage.c_str()); + return false; + } + + if (wcscmp(keyText1, L"0") == 0 && keyName == L"Key" || wcscmp(keyText2, L"0") == 0 && keyName == L"Variant") + { + errorMessage = L"[" + wstring(keyName) + L"]"; + errorMessage += L" contains 0 - this is not allowed when creating a password!"; + ShowErrorMessage(errorMessage.c_str()); + return false; + } + return true; +} + + +void OpenFolderSCRIPT(HWND hWnd) +{ + OPENFILENAME ofn; // + // + ZeroMemory(&ofn, sizeof(ofn)); + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = NULL; + ofn.lpstrFilter = L"Other (*.*)\0*.*\0IMG files (*.img)\0*.img\0IDE files (*.ide)\0*.ide\0IPL files (*.ipl)\0*.ipl\0BAT files (*.bat)\0*.bat\0"; + ofn.lpstrFile = szFileName; + ofn.nMaxFile = MAX_PATH; + ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; + ofn.lpstrDefExt = L"assembled"; + if (GetOpenFileName(&ofn)) + { + wchar_t message[MAX_PATH + 50]; + swprintf_s(message, L"Do you want to select this file \"%s\"?", PathFindFileNameW(szFileName)); + if (MessageBox(NULL, message, L"Confirmation", MB_YESNO) == IDYES) + { + wchar_t* fileName = PathFindFileNameW(szFileName); + SetWindowTextW(OriginIMGEdit, szFileName); + PathRenameExtensionW(fileName, L".assembled"); + SetWindowTextW(OpenFolder, fileName); + SetWindowTextW(EncryptedIMGEdit, szFileName); + Local_File_Dir = (wchar_t)szFileName; + select_dir = true; + } + else + { + SendMessage(hWnd, WM_COMMAND, Folder_Button, NULL); + } + } +} + +bool CheckValidArgumentSCRIPT() +{ + DWORD OriginalIMGNameLength = GetWindowTextLengthW(OriginIMGEdit); + DWORD EncryptedIMGNameLength = GetWindowTextLengthW(EncryptedIMGEdit); + wchar_t EncryptedPath[MAX_PATH]; + GetWindowTextW(EncryptedIMGEdit, EncryptedPath, MAX_PATH); + g_Key1 = GetWindowTextLengthW(EncryptKeyEdit1); + g_Key2 = GetWindowTextLengthW(EncryptKeyEdit2); + + if (select_dir == false) + { + MessageBoxW(MainWindow, L"Specify the path to the file!", L"Error", MB_ICONERROR); + return false; + } + if (wcslen(EncryptedPath) == 0) + { + MessageBoxW(MainWindow, L"The path cannot be empty!", L"Error", MB_ICONERROR); + return false; + } + else + { + if (PathIsRelativeW(EncryptedPath)) + { + MessageBoxW(MainWindow, L"The path must be absolute!", L"Error", MB_ICONERROR); + return false; + } + } + + bool finalResult; + finalResult = CheckKeyValidity(g_Key1, L"Key"); + finalResult = CheckKeyValidity(g_Key2, L"Variant"); + + return finalResult; + +} + + +bool RunBuildFile() +{ + if (CheckValidArgumentSCRIPT()) + { + wchar_t buffer1[50]; + wchar_t buffer2[50]; + GetWindowTextW(EncryptKeyEdit1, buffer1, sizeof(buffer1)); + GetWindowTextW(EncryptKeyEdit2, buffer2, sizeof(buffer2)); + + int keyText1 = 0; + int keyText2 = 0; + + try { + keyText1 = std::stoi(buffer1); + keyText2 = std::stoi(buffer2); + } + catch (const std::exception& e) { + MessageBoxW(NULL, L" ", L"Error", MB_ICONERROR); + return false; + } + lPARTS_NUM = keyText1; + lVARIANT_KEY = keyText2; + + //testValue(); + Beep(300, 74); // + return true; + } + return false; +} + +bool runFunction(HWND hWnd,WPARAM wParam) +{ + if (wParam == Folder_Button) + { + OpenFolderSCRIPT(hWnd); + + } + else if (wParam == ENCRYPT_BUTTON) + { + return RunBuildFile(); + } + return false; +} \ No newline at end of file diff --git a/gui-rw-obfuscator/GUI-Obfuscator/RWObfuscator.hpp b/gui-rw-obfuscator/GUI-Obfuscator/RWObfuscator.hpp new file mode 100644 index 0000000..bf4ab7b Binary files /dev/null and b/gui-rw-obfuscator/GUI-Obfuscator/RWObfuscator.hpp differ diff --git a/gui-rw-obfuscator/GUI-Obfuscator/framework.h b/gui-rw-obfuscator/GUI-Obfuscator/framework.h new file mode 100644 index 0000000..e9a9dcf --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/framework.h @@ -0,0 +1,15 @@ +// header.h: +// +// + +#pragma once + +//#include "targetver.h" +#define WIN32_LEAN_AND_MEAN // Windows +// Windows +#include +// C +#include +#include +#include +#include diff --git a/gui-rw-obfuscator/GUI-Obfuscator/resource.h b/gui-rw-obfuscator/GUI-Obfuscator/resource.h new file mode 100644 index 0000000..5627d53 --- /dev/null +++ b/gui-rw-obfuscator/GUI-Obfuscator/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// , Microsoft Visual C++. +// GUI-Obfuscator.rc +// +#define IDI_ICON1 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/gui-rw-obfuscator/GUI-Obfuscator/small.ico b/gui-rw-obfuscator/GUI-Obfuscator/small.ico new file mode 100644 index 0000000..5038bd9 Binary files /dev/null and b/gui-rw-obfuscator/GUI-Obfuscator/small.ico differ diff --git a/gui-rw-obfuscator/README.md b/gui-rw-obfuscator/README.md new file mode 100644 index 0000000..683b628 --- /dev/null +++ b/gui-rw-obfuscator/README.md @@ -0,0 +1,8 @@ +# gta-obfuscation +Obfuscation to protect GTA mods + +One of the most pressing issues facing moderators is the protection of their work. All kinds of game resources, be they *.img archives or data files, can simply be extracted and modified by anyone else. And this library aims to solve the problem by providing an example of an obfuscation system. + +#### gui-gta-obfuscation +- This is the same as `rw-obfuscator`, but with an interface. +- May contain logical errors in the application. \ No newline at end of file