EVI$ION/์ธ๊ณต์ง€๋Šฅ ์•…์„ฑ์ฝ”๋“œ ๋ถ„๋ฅ˜

[๋ฆฌ๋ฒ„์‹ฑ ์ด ์ •๋„๋Š” ์•Œ์•„์•ผ์ง€] #3. Windows ๋ฆฌ๋ฒ„์‹ฑ ๊ธฐ๋Šฅ ๋ถ„์„(1)

vinn๐Ÿ‘ฉ‍๐Ÿ’ป 2024. 11. 21. 15:00
728x90

1. ์–ธ์–ด ์„ ํƒ ๋ฐ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐฉ์‹

  • Win32 API๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ถ„์„.
  • ์ž‘์„ฑํ•  ์ฝ”๋“œ๋Š” ๋ชจ๋‘ main() ํ•จ์ˆ˜์— ์žˆ๋‹ค.

2. ํŒŒ์ผ ๊ฒ€์ƒ‰, ๊ด€๋ฆฌ ์ฝ”๋“œ

2.1 ๋™์ž‘ ํ™•์ธ

  1. ๋™์ผ ๊ฒฝ๋กœ์— Sample 01.exe๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
  2. Sample 01.exe ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ํš๋“
  3. Sample 01.exe ํŒŒ์ผ์„ ์‚ญ์ œ
  4. "%TEMP%" ๊ฒฝ๋กœ๊ฒŒ Replicated Sample 01.exe๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ์ƒ์„ฑ
  5. Replicated Sample 01.exe์— Sample 01.exe ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ก
  6. Replicated Sample 01.exe๋ฅผ ์‹คํ–‰

2.2 ์ฝ”๋“œํ•™์Šต

1. ํŒŒ์ผ ๋ณต์ œ ์ฝ”๋“œ ๊ธฐ๋ณธ ๊ตฌ์„ฑ

  • ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํŒŒ์ผ์„ ์—ด์–ด์•ผ ํ•˜๋Š” ๋ฐ ์ด๋•Œ ํ•„์š”ํ•œ API๋Š” CreateFile()
  • CreateFile()์€ ํŒŒ์ผ์„ ์ƒˆ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์žˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” ์ƒ์„ฑ ๋˜๋Š” ์—ด๊ณ ์ž ํ•˜๋Š” ํŒŒ์ผ์˜ ๊ฒฝ๋กœ ๊ฐ’
    • Sample05.exe๋Š” ํ˜„์žฌ ๊ฒฝ๋กœ์— ์œ„์น˜ํ•œ Sample01.exe๋ฅผ ๋ณต์ œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— %guswo rudfh%\Sample01.exe๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•œ๋‹ค.
    • ํ˜„์žฌ ๊ฒฝ๋กœ๋Š” Sample05.exe์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฉฐ CreateFile() API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ด์ „์— ํ˜„์žฌ ๊ฒฝ๋กœ๋ฅผ ์•Œ์•„๋‚ผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
    • GetCurrentDirectory() API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ ๊ฒฝ๋กœ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ์—ฌ๊ธฐ์— \Sample01.exe ๋ฌธ์ž์—ด์„ ๋”ํ•ด์ฃผ๋ฉด ์ ˆ๋Œ€ ๊ฒฝ๋กœ๊ฐ€ ์™„์„ฑ๋œ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์ธ์ž(Generic_Read)๋Š” ํ•ด๋‹น ํŒŒ์ผ์„ ์–ด๋–ค ์šฉ๋„๋กœ ์“ธ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ๊ถŒํ•œ ์ •๋ณด
  • ๋‹ค์„ฏ ๋ฒˆ์งธ ์ธ์ž(OPEN_EXISTING)์€ ๋™์ผํ•œ ๊ฒฝ๋กœ์— Sample01.exe๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์— ์—ด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
    • ํŒŒ์ผ์ด ์—†์œผ๋ฉด ํ˜ธ์ถœ์ด ์‹คํŒจ๋กœ ๋๋‚œ๋‹ค.

  • ํŒŒ์ผ์„ ์—ด์—ˆ์œผ๋‹ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”๋ฐ ReadFile() API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋Š” Sample01.exe์˜ ํ•ธ๋“ค ๊ฐ’์ด๋‹ค.
    • ํ•ธ๋“ค: exe๋Š” ํ–‰์œ„๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ธ๋ฐ exe๊ฐ€ ์–ด๋–ค ํ–‰์œ„๋ฅผ ์š”์ฒญํ•  ๋•Œ๋Š” ๋ชฉ์ ์„ ๋ฐํžˆ๊ณ  ๊ด€๋ฆฌ์ž์—๊ฒŒ ํ—ˆ๋ฝ์„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ CreateFile() API ํ˜ธ์ถœ์ด ํŠน์ • ํ–‰์œ„์— ๋Œ€ํ•œ ์š”์ฒญ์ด๋ฉฐ ์š”์ฒญ ์Šน์ธ์— ๋Œ€ํ•œ ์ง•ํ‘œ๊ฐ€ ํ•ธ๋“ค์ด๋‹ค.
  • ๋‘ ๋ฒˆ์งธ, ์„ธ ๋ฒˆ์งธ ์ธ์ž๋Š” '์ฝ์–ด์˜ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์œ„์น˜ ์ฃผ์†Œ'์™€ '์ฝ์–ด์˜ฌ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ'์ด๋‹ค.
    • ReadFile() API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ์ฝ์–ด ์˜ฌ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๊ณ  ์ €์žฅ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด์•ผ ํ•œ๋‹ค.
    • GetFileSize() API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Sample01.exe์˜ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ทธ๋ฆฌ๊ณ  malloc() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ํฌ๊ธฐ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๊ฐ’์„ ReadFile() API์˜ ์ธ์ž๋กœ ๋„ฃ๊ณ  ํ˜ธ์ถœํ•˜๋ฉด 'IpBuffer'์— Sample01.exe ํŒŒ์ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅํ•˜๊ณ  ๋‚˜์„œ ํ•ธ๋“ค์€ ๋ฐ˜ํ™˜๋œ๋‹ค.

  • Sample01.exe๋„ ์‚ญ์ œํ•œ๋‹ค.
  • ์ด์ œ "%TEMP%" ๊ฒฝ๋กœ์— Replicated Sample 01.exe๋ฅผ ๋งŒ๋“œ๋กœ 'IpBuffer'์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” Sample01.exe ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์จ์•ผ ํ•œ๋‹ค.
  • CreateFile() API๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— "%TEMP%\Replicated Sample 01.exe" ๊ฒฝ๋กœ ๋ฌธ์ž์—ด์„ ๋จผ์ € ๋งŒ๋“ค์–ด์ฃผ๊ณ  GetTempPath()์™€ wsprintf() API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • CreateFile() API์˜ ๋‘ ๋ฒˆ์งธ, ๋‹ค์„ฏ ๋ฒˆ์งธ ์ธ์ž์—๋Š” 'GENERIC_WRITE'์™€ 'CREATE_NEW'๋ฅผ ๋„ฃ์—ˆ๋Š” ๋ฐ ์ด๋Š” 'Sample 01.exe ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด Replicated Sample 01.exe๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค.'๋Š” ์˜๋ฏธ.
  • WriteFile() API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ์–ด ๋“ค์ธ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•œ exeํŒŒ์ผ์— ๊ธฐ๋ก.

  • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŒŒ์ผ ๋ณต์ œ๊ฐ€ ๋๋‚ฌ๊ณ  Replicated Sample 01.exe๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Sample 05.exe์˜ ๋™์ž‘์ด ์™„๋ฃŒ๋œ๋‹ค.

2. ํŒŒ์ผ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

: Sample 05.exe๊ฐ€ ์ž์ฒด์ ์œผ๋กœ Sample 01.exe์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ํŒŒ์ผ ๋ณต์ œ ๋™์ž‘์„ ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ.

  • ํŒŒ์ผ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ๊ฒฝ๋กœ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ํƒ์ƒ‰ํ•˜๊ณ  ์ •๋ณด ์ˆ˜์ง‘์ด ๊ฐ€๋Šฅ.
  • ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ FindFirstFile(), FindNextFile() API๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • FindFirstFile() API ์ฒซ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ๋กœ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๊ฒ€์ƒ‰ ๋Œ€์ƒ์ด ๋ชจ๋“  ํŒŒ์ผ๊ณผ ํด๋”์ด๊ธฐ ๋•Œ๋ฌธ์— "%ํ˜„์žฌ ๊ฒฝ๋กœ%\*.*" ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค.
    • *์€ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•˜๊ณ  ๊ฒ€์ƒ‰ ๋Œ€์ƒ์ด ๋ชจ๋“  exe ํŒŒ์ผ์ด๋ฉด, *. exe๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

  • ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ๋ฅผ ์™„์„ฑํ•˜๋ฉด ํŒŒ์ผ ๊ฒ€์ƒ‰์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ FindFirstFile() API์˜ ์ฝ”๋“œ์— ์ฒซ ๋ฒˆ์งธ ์ธ์ž์—๋Š” ์™„์„ฑ๋œ ๊ฒฝ๋กœ ๊ฐ’์„ ๋„ฃ๊ณ , ๋‘ ๋ฒˆ์งธ ์ธ์ž์—๋Š” WIN32_FIND_DATA ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•ด ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

  • ๊ตฌ์กฐ์ฒด๋„ ๋ณ€์ˆ˜์™€ ๋น„์Šทํ•˜๊ฒŒ ๊ฐ’์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ฃผ๋จธ๋‹ˆ๋กœ ๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ทธ ์•ˆ์—๋Š” ์•ฝ์†๋œ ๊ฐ’์ด ๊ธฐ๋ก๋œ๋‹ค.

  • FindFirstFile()์„ ํ˜ธ์ถœํ•˜๋ฉด ์ฒ˜์Œ์œผ๋กœ ์ฐพ์€ ํŒŒ์ผ์˜ ์ •๋ณด๊ฐ€ WIN32_FIND_DATA ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜์ธ 'FileData'์— ๊ธฐ๋ก.
  • WIN32_FIND_DATA ๊ตฌ์กฐ์ฒด์˜ cFileName ๋ฉค๋ฒ„๋Š” ๊ฒ€์ƒ‰ ํŒŒ์ผ์˜ ์ด๋ฆ„ ์ •๋ณด์ด๋ฉฐ ์ด ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•ด์„œ Sample 01.exe๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธ.
  • ๋งŒ์•ฝ์— ์•„๋‹ˆ๋ฉด FindNextFile() API๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋‹ค์Œ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฐพ์œผ๋ฉด ํŒŒ์ผ ๋ณต์ œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ์ด ์ž‘์—…์€ ํ˜„์žฌ ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ, ํด๋” ๊ฒ€์ƒ‰์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋œ๋‹ค. 

2.3 ํŒŒ์ผ ๋ถ„์„


3. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ด€๋ฆฌ ์ฝ”๋“œ

3.1 ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

:๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ์ผ์ข…์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ Windows ์‹œ์Šคํ…œ ์ •๋ณด์™€ ํ•จ๊ป˜ ๋™์ž‘์— ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด๋“ค์ด ๊ธฐ๋ก.

 

1. Key

๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ํด๋”์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋….

ํด๋”์— ํ•˜์œ„ ํด๋” ๋ฐ ํŒŒ์ผ๋“ค์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜์œ„ ํ‚ค์™€ Value๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

2. Root Key

: ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ํ‚ค

HKEY_CLASSES_ROOT ํŒŒ์ผ ํ™•์žฅ์ž์™€ ํ™•์žฅ์ž๊ฐ€ ์‚ฌ์šฉํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ๋งคํ•‘ ์ •๋ณด๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.
HKEY_CURRENT_USER ํ˜„์žฌ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์˜จํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ์ •๋ณด(๋„คํŠธ์›Œํฌ, ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์˜ ์ •๋ณด)๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.
HKEY_LOCAL_MACHINE ์‹œ์Šคํ…œ์˜ ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ํŒŒ์ผ๊ณผ ์†Œํ”„ํŠธ์›จ์–ด ์ •๋ณด, ๋“œ๋ผ์ด๋ฒ„ ์ •๋ณด ๋“ฑ์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.
HKEY_USER ์‹œ์Šคํ…œ์•  ์žˆ๋Š” ๋ชจ๋“  ๊ณ„์ •๊ณผ ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ์ •๋ณด๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.
HKEY_CURRENT_CONFIG ์‹œ์Šคํ…œ์ด ๋ถ€ํŒ… ์‹œ ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ํ”„๋กœํŒŒ์ผ ์ •๋ณด(๊ธ€๊ผด, ํ”„๋ฆฐํ„ฐ ์ •๋ณด ๋“ฑ์˜ ๋ถ€๊ฐ€์  ์ •๋ณด)๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋‹ค.

 

3. Value

ํด๋”์— ์†ํ•œ ํŒŒ์ผ์ฒ˜๋Ÿผ Key ์•ˆ์— ์กด์žฌํ•œ๋‹ค.

Type Description Type Description
REG_SZ ๋ฌธ์ž์—ด ๊ฐ’ REG_BINARY ์ด์ง„๊ฐ’
REG_MULTI_SZ ๋‹ค์ค‘ ๋ฌธ์ž์—ด ๊ฐ’ REG_DWORD DWORD ๊ฐ’
REG_EXPAND_SZ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด ๊ฐ’ RGE_QWORD QWORD ๊ฐ’

 

4. Data

Value๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ.

Value์˜ Type์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด ๋ฐ ์ด์ง„ ๊ฐ’ ๋“ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.


๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์‹ค์Šต

3.2 ๋™์ž‘ ํ™•์ธ


3.3 ์ฝ”๋“œ ํ•™์Šต

  • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ Value๋ฅผ ๋“ฑ๋ก, ์กฐํšŒ, ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Key๋ฅผ ์—ด์–ด์ค˜์•ผ ํ•œ๋‹ค.
  • RegOpenKeyEx() API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ Key์— ๋Œ€ํ•œ ํ•ธ๋“ค ๊ฐ’์€ ๋‹ค์„ฏ ๋ฒˆ์งธ ์ธ์ž์ธ hKey์— ๋“ค์–ด๊ฐ„๋‹ค.

  • Key๋ฅผ ์—ด์—ˆ์œผ๋ฉด Value๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋˜๋Š” ๋ฐ ๋ฐ”๋กœ ๋“ฑ๋ก์„ ํ•ด์ค˜๋„ ๋ฌด๋ฐฉํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” 'Run_Sample'์ด๋ผ๋Š” ์ด๋ฆ„์˜ Value๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ๋™์ผ Value๋ฅผ ๊ฒ€์ƒ‰ ๋ฐ ์‚ญ์ œํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • RegEnumValue()๋Š” Value๋ฅผ ์กฐํšŒํ•   ๋•Œ ์‚ฌ์šฉํ•˜๋Š” API๋กœ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋Š” ์กฐํšŒํ•˜๊ณ ์ž ํ•˜๋Š” Value์˜ ๋ฒˆํ˜ธ์ด๋‹ค.
  • 0๋ถ€ํ„ฐ ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ Run Key์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  Value๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋‹ค.
  • RegEnumValue()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด 'IpValue'์— ๊ฒ€์ƒ‰๋œ Value์˜ ์ด๋ฆ„ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
    • ์ด ๊ฐ’๊ณผ 'Run_Sample' ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋ฉด ๋™์ผํ•œ ์ด๋ฆ„์˜ Value๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ RegDeleteValue() API๋ฅผ ํ˜ธ์ถœํ•ด์„œ Value๋ฅผ ์‚ญ์ œํ•˜๋„๋ก ์ž‘์„ฑ.

  • Sample 01.exe๊ฐ€ ์ž๋™ ์‹คํ–‰๋˜๋„๋ก Value๋ฅผ ๋“ฑ๋กํ•˜๋ฉด ๋˜๋Š”๋ฐ ์ด๋•Œ RegSetValueEx() API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
  • ๋‹ค์„ฏ ๋ฒˆ์งธ ์ธ์ž๋Š” Data๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • IpSamplePath ๋ณ€์ˆ˜์—๋Š” Sample 01.exe ๊ฒฝ๋กœ ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค.
  • ์—ฌ์„ฏ ๋ฒˆ์งธ ์ธ์ž๋Š” Data ํฌ๊ธฐ ๊ฐ’์ด๋‹ค.
  • Value ๋“ฑ๋ก์ด ๋๋‚˜๋ฉด RegCloseKey()๋ฅผ ํ˜ธ์ถœํ•ด์„œ ํ•ธ๋“ค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • Sample 01.exe์˜ ์ž๋™ ์‹คํ–‰ ๋“ฑ๋ก์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉฐ ์žฌ๋ถ€ํŒ… ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  CMD ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด์„œ ์šด์˜์ฒด์ œ๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜๋ฉด Sample 06.exe์˜ ๋™์ž‘์€ ์™„๋ฃŒ๋œ๋‹ค.

3.4 ํŒŒ์ผ ๋ถ„์„