Study34 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. ์ด์ 1 2 3 4 5 6 ๋ค์