๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€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.