์ ์ฒด ๊ธ68 Dynamic ์ํฐ ๋๋ฒ๊น (Anti Debugging) ๊ธฐ๋ฒ๊ณผ ์ฐํ ์ค๋์ Dynamic ์ํฐ ๋๋ฒ๊น ๊ธฐ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.Dynamic ์ํฐ ๋๋ฒ๊น ๊ธฐ๋ฒ์ ํต์ฌ ์ฝ๋(OEP)๋ก ๊ฐ์ง ๋ชปํ๋๋ก ํธ๋ ์ด์ฑ์ ์ง์์ ์ผ๋ก ๋ฐฉํดํฉ๋๋ค. 1. ์์ธ (Exception)์ฒซ ๋ฒ์งธ๋ ์์ธ๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ๋๋ค.์ผ๋ฐ ์คํ๊ณผ ๋๋ฒ๊ฑฐ ์คํ์ ์ฐจ์ด๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค. ์ผ๋ฐ ์คํ์ ์์ธ ๋ฐ์ ์ SEH๋ฅผ ํธ์ถํ์ง๋ง ๋๋ฒ๊น ์ ํตํด ์คํํ๋ฉด ๋๋ฒ๊ฑฐ๊ฐ ์ฒ๋ฆฌํ๋๋ก ๋์๋ฉ๋๋ค. ์์ธ๋ฅผ ๋ง๋๋ฉด ๋๋ฒ๊ฑฐ๊ฐ ์์ฒด์ ์ผ๋ก (๊ฐ๋ก์ฑ์) ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. 1.1. SEH (Structured Exception Handling)SEH๋ ์์ธ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ฒด์ธ ํํ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์์ธ ์ฒ๋ฆฌ๊ธฐ์์ ํด๋น ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด ๋ค์ ์์ธ ์ฒ๋ฆฌ๊ธฐ๋ก ์์ธ๋ฅผ ๋๊ฒจ์ฃผ๋ ํ์์ ๋๋ค. ์์ธ ์ฒ๋ฆฌ๊ธฐ๋ .. 2024. 12. 17. Static ์ํฐ ๋๋ฒ๊น (Anti Debugging) ๊ธฐ๋ฒ๊ณผ ์ฐํ Static ์ํฐ ๋๋ฒ๊น ์ ์์ ์ด ๋๋ฒ๊น ๋๊ณ ์๋์ง ํ์ ํ์ฌ ๋๋ฒ๊น ๋๊ณ ์๋ค๊ณ ํ๋จํ๋ฉด ์๋ณธ๊ณผ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. Static ๊ธฐ๋ฒ์ ํ ๋ฒ๋ง ํด์ฒดํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.Dynamic ์ํฐ ๋๋ฒ๊น ์ ์๋ณธ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋๋ก ํธ๋ ์ด์ฑ์ ์ง์์ ์ผ๋ก ๋ฐฉํดํฉ๋๋ค. Dynamic ๊ธฐ๋ฒ์ ๋ง๋ ๋๋ง๋ค ํด๊ฒฐํด์ผ ํฉ๋๋ค. ์ค๋์ Static ์ํฐ ๋๋ฒ๊น ๊ธฐ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. 1. PEB (Process Environment Block)ํ๋ก์ธ์ค ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ตฌ์กฐ์ฒด PEB๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ๊ฐ ์ ๊ทผ์ด ์ฌ์ ๋ง์ด ์ด์ฉํฉ๋๋ค.PEB ๊ตฌ์กฐ์ฒด ์ฃผ์๋ FS ์ธ๊ทธ๋จผํธ(๋๋ GS ์ธ๊ทธ๋จผํธ)๋ฅผ ํตํด ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค. FS ๋ ์ง์คํฐ์์ธ ์ฒ๋ฆฌ ๋ฐ ์ค๋ ๋ ๊ด๋ฆฌ๊ฐ ์ค๋ ๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ TEB๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, ์์ธ ์ฒ.. 2024. 11. 29. ํค๋ก๊ฑฐ(Keylogger)(C++) ํ๋ก๊ทธ๋จ ๋ฆฌ๋ฒ์ฑ ํค๋ก๊น ํ์ฌ ์ ์ฅ๋ ํ์ผ์ AES ์ํธํํ์ฌ ์์ผ ํต์ ํ๋ C++ ํ๋ก๊ทธ๋จ์ ๋ฆฌ๋ฒ์ฑํด๋ณด๊ฒ ์ต๋๋ค.30์ด๋์ ์ ๋ ฅ๋๋ ํค๋ฅผ ํ์ผ์ ์ ์ฅํ๊ณ ํด๋น ํ์ผ์ ์ํธํํ์ฌ ์ธ๋ถ๋ก ์ ์กํฉ๋๋ค. #include #include #include #include #include #include #include #include #include #pragma comment(lib, "ws2_32.lib") // ์๋์ฐ ์์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋งํฌ#pragma comment(lib, "advapi32.lib") // Advapi32 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋งํฌ// ์ํธํํ ํ์ผ ๊ฒฝ๋ก ๋ฐ ์ถ๋ ฅ ๊ฒฝ๋กconst char* inputFilePath = "E:\\Office 2022\\HOffice120\\Bin\\Logs\\log.txt";const ch.. 2024. 11. 25. ํจ์ ์ค๋ฒ๋ก๋(overload) ํจ์ ์ค๋ฒ๋ก๋ ๊ฐ๋ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํจ์ ์ค๋ฒ๋ก๋(overload)๊ฐ์ ์ด๋ฆ์ ํจ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ ์ ์๋ ๊ฐ๋ ๊ฐ ํจ์๊ฐ ์ ๋ ฅ๋ฐ๋ ํ๋ผ๋ฏธํฐ์ ๊ฐ์๋ ํ์ ์ ๋ค๋ฅด๊ฒ ํด์ผํ๋ค.ํจ์ ์ด๋ฆ์ด ๊ฐ์๋ ์ ๋ ฅ๋๋ ํ๋ผ๋ฏธํฐ์ ๊ฐ์๋ ํ์ ์ด ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํจ์๋ก ์ธ์๋์ด ํธ์ถ๋๋ค.C++, C#, Java, Swift์์๋ ์ค๋ฒ๋ก๋ฉ์ ์ง์ํ๊ณ , C, Python, JavaScript, Ruby ๋ฑ์์๋ ์ง์ํ์ง ์๋๋ค.์ธ์ด๋ง๋ค ์ค๋ฒ๋ก๋ ๊ตฌํ ๋ฐฉ์๊ณผ ์ ์ฝ ์ฌํญ์ ๋ค๋ฅผ ์ ์๋ค. C++์์์ ํจ์ ์ค๋ฒ๋ก๋ํจ์ ์ด๋ฆ์ ๊ฐ์ง๋ง ํ๋ผ๋ฏธํฐ์ ํ์ ์ด๋ ๊ฐ์๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ์ฌ๋ฌ ๊ฐ์ ํจ์๋ฅผ ์ ์ํ ์ ์๋ค.๋ฐํ ๊ฐ์ ํ์ ๋ง ๋ค๋ฅด๊ฒ ์ ์ํ๋ฉด ์ค๋ฒ๋ก๋ํ ์ ์๊ณ , ํ๋ผ๋ฏธํฐ๊น์ง ๋ค๋ฅด๊ฒ ํด์ผ ํ๋ค. C++ ์ค๋ฒ๋ก๋ฉ ์์1: ํ๋ผ๋ฏธ.. 2024. 11. 14. ์ ์ ํ์ ์ ๋ถํธ ๊ตฌ๋ถ ๋ช๋ช ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค์์๋ ์ ์ ํ์ ์ ๋ถํธ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฐ๋ ์ด ์กด์ฌํฉ๋๋ค. ๊ทธ ์ค C/C++์์์ ์ ์ ํ์ ๋ถํธ ๊ตฌ๋ถ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ ์ ํ์ ์ ๋ถํธ ์ ๋ฌด๋ถํธ๊ฐ ์๋ ํ์ (signed type)0์ ํฌํจํ์ฌ ์์์ ์์๋ฅผ ๋ชจ๋ ํํํ ์ ์๋ ์ ์ ํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ถ๋ถ์ ์ ์ํ ํ์ (int, short, long ๋ฑ)์ ๋ถํธ๊ฐ ์๋ ํ์ ์ผ๋ก ์ ์ธ๋๋ค.+์ - ๊ธฐํธ๋ฅผ ํตํด ์์๋ฅผ ํํํ ์ ์๋ค.๋ถํธ๊ฐ ์๋ ํ์ (unsigned type)์์์ 0๋ง ํํํ ์ ์๋ ์ ์ ํ์ ์์๋ ํํํ ์ ์๋ค.unsigned int, unsigned short, unsigned long ๋ฑ์ผ๋ก ์ ์ธ๋๋ค. ์ค๋ฅ ๋ฐ ํด๊ฒฐ ์์ํน์ ํ์ผ์ ํฌ๊ธฐ๊ฐ 1024๋ฐ์ดํธ๋ณด๋ค ํฐ ์ง ๊ฒ์ฌํ๋ ์ฝ๋์ ๋๋ค.const .. 2024. 11. 13. AES ์ํธํ ๋ฐ์ดํฐ ์ ์ก ํ๋ก๊ทธ๋จ(C++) ๋ฆฌ๋ฒ์ฑ ๋ฐ์ดํฐ๋ฅผ AES ์ํธํํ์ฌ ์์ผ ํต์ ํ๋ C++ ํ๋ก๊ทธ๋จ์ ๋ฆฌ๋ฒ์ฑํด๋ณด๊ฒ ์ต๋๋ค.OpenSSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ(v3.4.0)๋ฅผ ํตํด AES ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์์ต๋๋ค. #include #include #include #include #include #include #pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "libssl.lib")#pragma comment(lib, "libcrypto.lib")#define AES_KEY_SIZE 32 // AES-256#define AES_BLOCK_SIZE 16// AES ์ํธํ ํจ์ (EVP API ์ฌ์ฉ)int aes_encrypt(const unsigned char* input, int input_len, unsign.. 2024. 11. 11. ๋งํฌ ๋ฐฉ์์ ๋ฐ๋ฅธ ๋์ค์ด์ ๋ธ๋ฆฌ ์ฝ๋ ํน์ง ์คํ ํ์ผ์ ๋์ค์ด์ ๋ธ๋ฌ๋ฅผ ํตํด ๋ถ์ํ ๋ ๋งํฌ ๋ฐฉ์์ ๋ฐ๋ผ ์ฝ๋์ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋์ง ์์๋ณด๊ฒ ์ต๋๋ค. ๋งํฌ(Link)์ฌ๋ฌ ๊ฐ์ฒด ํ์ผ(object file)์ ํ๋์ ์คํ ํ์ผ๋ก ๊ฒฐํฉํ๋ ์์ ์ด ๊ณผ์ ์์ ์คํ๋ ์ฃผ์ ์์น, ์ฐ๊ฒฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒฐ์ ํ๋ค. ๋งํฌ ๋ฐฉ์1. ์ ์ ๋งํฌ(Static Link)์ปดํ์ผํ ๋ ํ์ํ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํ ํ์ผ์ ํฌํจ์ํค๋ ๋ฐฉ๋ฒ์คํ ํ์ผ๋ง ๋ฐฐํฌํ๋ฉด ์์คํ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ด ์์ด๋ ๋์ํ๋ค.๋ชจ๋ ์ฝ๋๊ฐ ํ๋์ ์คํ ํ์ผ์ ํฌํจ๋๋ฏ๋ก ์คํ ์ ๋ก๋ฉ ์๊ฐ์ด ์ ๊ณ ์ฑ๋ฅ์ ํจ์จ์ ์ด์ง๋ง, ํ์ผ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค.๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๋ค์ ๋น๋ํด์ผ ํ๋ค. 2. ๋์ ๋งํฌ(Dynamic Link)์ปดํ์ผํ ๋ ๊ฐ์ฒด ํ์ผ๋ก ์ปดํ์ผ๋๊ณ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์ ์ฌ๋ณผ(s.. 2024. 11. 7. Visual Studio์์ AES ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉํ๊ธฐ (OpenSSL) AES ์ํธํ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉํ๋ ค OpenSSL ๋ค์ด๋ก๋ํ๊ตฌ ์ ์ฉํ๋ คํ๋๋ฐ์๊ทผ ๊ณ ์์ ํด๊ฐ์ง๊ตฌ..๐ข ๊ธฐ๋กํด๋์ผ๋ ค๊ณ ํฉ๋๋น slproweb.com ์ฌ์ดํธ์์ Win64 OpenSSL v3.4.0๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค ๋ค์ด๋ก๋๋ ํ์ผ์ ์ค์นํฉ๋๋ค. Visual Studio๋ฅผ ํตํด ์ฌ์ฉํ๊ธฐ ์ํด ์ค์ ์ ๋ฐ๊พธ์ด ์ค์ผ๋ฉ๋๋ค. ํ๋ก์ ํธ ์์ฑ ์ค์ 3๊ฐ์ง๋ฅผ ๋ฐ๊พธ์ด ์ค๋๋ค. 1. OpenSSL์ include ๋๋ ํฐ๋ฆฌ ์ถ๊ฐ'C/C++' - '์ผ๋ฐ' - '์ถ๊ฐ ํฌํจ ๋๋ ํฐ๋ฆฌ'์ OpenSSL์ include ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก ์ถ๊ฐ* OpenSSL์ include ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก = E:\OpenSSL-Win64\include 2. OpenSSL์ lib ๋๋ ํฐ๋ฆฌ ์ถ๊ฐ '๋ง์ปค' - '์ผ๋ฐ' - '์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํฐ๋ฆฌ'์.. 2024. 11. 6. ์๋ ์คํ ๋ฑ๋ก ํ๋ก๊ทธ๋จ(C++) ๋ฆฌ๋ฒ์ฑ ํน์ ํ๋ก๊ทธ๋จ์ ์๋ ์คํํ๋๋ก ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋กํ๋ C++ ํ๋ก๊ทธ๋จ์ ๋ฆฌ๋ฒ์ฑํด๋ณด๊ฒ ์ต๋๋ค. #include #include void AddToStartup(const std::wstring& appName, const std::wstring& appPath) { // ๋ ์ง์คํธ๋ฆฌ ํค๋ฅผ ์ด๊ธฐ HKEY hKey; LONG result = RegOpenKeyEx(HKEY_CURRENT_USER, L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hKey); if (result != ERROR_SUCCESS) { std::cerr (appPath.c_.. 2024. 11. 5. ์ด์ 1 ยทยทยท 3 4 5 6 7 8 ๋ค์