Study/Reversing

abex’ crackme #1, 2, 3

mnzy๐ŸŒฑ 2022. 10. 3. 17:36

1. abex' crackme #1 

ํŒŒ์ผ ์‹คํ–‰ -> 2๊ฐœ์˜ ๋ฉ”์‹œ์ง€ ์ฐฝ์„ ํ™•์ธ 

 
3๊ฐœ์˜ ๋ฉ”์‹œ์ง€ ์ฐฝ์ด ๋œจ๋Š” ํ”„๋กœ๊ทธ๋žจ์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 
์ฆ‰, ํŒŒ์ผ์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ฐฝ์ด ๋–ด๋˜ ๊ฒƒ์ด๊ณ , ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€์ฐฝ์„ ๋œฐ ๊ฒƒ์ด๋‹ค. 

  • ์‹œ์ž‘ ์ฃผ์†Œ์™€ EP๊ฐ€ ๋™์ผ : ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑ 
  • high language๋กœ ์ž‘์„ฑ๋˜์—ˆ์„ ๋•Œ ์•ž๋’ค์— ๋ถ™๋Š” stub code๊ฐ€ ์—†์Œ
    • ์–ด์…ˆ๋ธ”๋ฆฌ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ

 
- ๋ฉ”์‹œ์ง€์ฐฝ์— ์ ํ˜€์žˆ๋˜ ๋Œ€๋กœ GetDriveType() ํ•จ์ˆ˜์—์„œ CD-ROM ํƒ€์ž…์„ ์–ป์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. 
- ํ˜„์žฌ๋Š” root path๋ฅผ c๋กœ ํ–ˆ์œผ๋ฏ€๋กœ ํ•˜๋“œ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ๋˜์–ด์žˆ๋‹ค. 
- ExitProcess: ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๋ผ๋Š” ์˜๋ฏธ
 
**ํ”„๋กœ์„ธ์Šค์™€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฐจ์ด
: ์†Œํ”„ํŠธ์›จ์–ด๋กœ ํŒจํ‚ค์ง•๋œ ๋ชจ๋“  ๊ฑธ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ํ•˜๊ณ , ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ (=๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๊ณ  ์žˆ์„ ๋•Œ)๋ฅผ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค. 

(1) ์ค‘์š” ์ฝ”๋“œ ์„ค๋ช…

MessageBoxA ํ•จ์ˆ˜์—๋Š” 4๊ฐœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š” (Style, Title, Text, hOwner) 

GetDriveTypeA ํ•จ์ˆ˜

  • ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ์ด๋™์‹, ๊ณ ์ •์‹, CD-ROM, RAM ๋””์Šคํฌ ๋˜๋Š” ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ธŒ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ
  • ํ˜„์žฌ RootPathName("c:\")๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•ด์ฃผ์—ˆ์œผ๋ฉฐ, ๋ฆฌํ„ด๊ฐ’์œผ๋กœ 3์ด ๋‚˜์˜ด 

 
 
EAX: ํ•จ์ˆ˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ๋ฆฌํ„ด๊ฐ’์„ ์ „๋‹ฌ. ์ฆ‰, GetDriveTypeA () ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ธ 3์„ ์ €์žฅํ•œ๋‹ค.

 
 
ESI์™€ EAX ๊ฐ’์„ ์กฐ์ •ํ•œ ๋’ค, ๋‘ ๊ฐ’์„ ๋น„๊ต ํ•จ 
ESI = + 1 + 1 + 1 = 3
 

  • ESI: + 1 + 1 + 1 = 3
  • EAX: 3 -1 -1 = 1 
  • ์ฆ‰, ๋งŒ์•ฝ ํ•˜๋“œ ๋””์Šคํฌ๊ฐ€ cd rom์ด์—ˆ์„ ๊ฒฝ์šฐ ๋ฆฌํ„ด๊ฐ’์ธ 5๊ฐ€ EAX์— ์ €์žฅ๋œ๋‹ค. ์ฆ‰, 5-2 = 3์˜ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค. 
์งˆ๋ฌธ: ESI๋Š” ์‹œ์ž‘์ฃผ์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ INC์ด 3๋ฒˆ ๋˜๋ฉด ์‹œ์ž‘์ฃผ์†Œ(401000)์—์„œ 3์ด ๋”ํ•ด์ง„ ๊ฒƒ์ด๋‹ค. 
๊ทธ๋ ‡๋‹ค๋ฉด, ์™œ 401003์ด ์•„๋‹ˆ๋ผ 03๊ณผ EAX๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?
=> ๋งจ ๋’ค์— ๋‘์ž๋ฆฌ๋งŒ ํ™•์ธํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถ”์ •๋จ 

 
JE (Jump if Equal): ์กฐ๊ฑด ๋ถ„๊ธฐ ๋ช…๋ น์–ด

  • JE SHORT 01.0040103D
  • = ๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด 40103D๋กœ ์ ํ”„ํ•˜๊ณ , ๋‹ค๋ฅด๋ฉด ๊ทธ๋ƒฅ ๋ฐ‘(401028)์œผ๋กœ ์ง„ํ–‰ 
  • ํ˜„์žฌ๋Š” ๋‘ ๊ฐ’์ด ๊ฐ™์œผ๋ฏ€๋กœ ์ ํ”„

 

(2) ํฌ๋ž™

+) ํ”„๋กœ๊ทธ๋žจ์˜ ํŒŒ์ผ ํ˜น์€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ํŒจ์น˜๋ผ๊ณ  ํ•œ๋‹ค
- ํฌ๋ž™์€ ํŒจํ‹ฐ์™€ ๊ฐ™์€ ๊ฐœ๋…์ด์ง€๋งŒ, ํŠน๋ณ„ํžˆ ๊ทธ ์˜๋„๊ฐ€ ๋น„ํ•ฉ๋ฒ•์ ์ด๊ณ  ๋น„๋„๋•์ ์ธ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋งํ•œ๋‹ค. 
 

  • Assemble ๊ธฐ๋Šฅ์„ ํ†ตํ•ด JMP 004013D ๋ช…๋ น์–ด๋กœ ๋ณ€๊ฒฝ (ํ•ด๋‹น ๋ช…๋ น์–ด ๋”๋ธ”ํด๋ฆญ ํ›„ ํ…์ŠคํŠธ ์ˆ˜์ •)
    • ์กฐ๊ฑด๋ฌธ์„ ๊ฑฐ์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌด์กฐ๊ฑด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์กฐ์ž‘ 

F9 ๊ฒฐ๊ณผ) ์„ฑ๊ณต 

 
+)

์Šคํƒ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• 

MessageBoxA() ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ž…๋ ฅํ•˜๊ณ  ์žˆ๋‹ค.

 
๋งŒ์•ฝ, ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ C์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 

MessageBoxA(NULL, "Make me think your HD is a CD-Rom.", "abex' 1st crackme", MB_OK|MB_APPLMODAL);

 
์Šคํƒ์€ FILO (First In Last Out) ๊ตฌ์กฐ์ด๋ฏ€๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ๋„ฃ์–ด์ค˜์•ผ ๋ฐ›๋Š” ์ชฝ(ํ•จ์ˆ˜)์—์„œ ์˜ฌ๋ฐ”๋ฅธ ์ˆœ์„œ๋กœ ๊บผ๋‚ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 
 


2. abex' crackme #3 

์‹คํ–‰ํ•˜๋ฉด, keyfile์„ ํ™•์ธํ•˜๊ณ  ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋ฉ”์‹œ์ง€์ฐฝ์ด ๋œฌ๋‹ค. 

 
 

(1) ์ค‘์š” ์ฝ”๋“œ ๋ถ„์„ 

CreateFileA ํ•จ์ˆ˜
https://learn.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-createfilea

  • ํŒŒ์ผ ๋˜๋Š” I/O ๋””๋ฐ”์ด์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ฝ์Œ 
  • ๋งค๊ฐœ๋ณ€์ˆ˜: Mode, Access, FileName(๋งŒ๋“ค๊ฑฐ๋‚˜ ์—ด ํŒŒ์ผ ๋˜๋Š” ๋””๋ฐ”์ด์Šค์˜ ์ด๋ฆ„)
  • FileName: "abex.l2c"
  • Mode: OPEN_EXISTING - ํŒŒ์ผ ๋˜๋Š” ๋””๋ฐ”์ด์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ open 
HANDLE CreateFileA(
  [in]           LPCSTR                lpFileName,
  [in]           DWORD                 dwDesiredAccess,
  [in]           DWORD                 dwShareMode,
  [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [in]           DWORD                 dwCreationDisposition,
  [in]           DWORD                 dwFlagsAndAttributes,
  [in, optional] HANDLE                hTemplateFile
);

๋ฆฌํ„ด ๊ฐ’ : FFFFFFFF (file not found)

 
๋ฆฌํ„ด๊ฐ’์ด FFFFFFFF (-1) ์ด๋ฏ€๋กœ, CMP EAX, -1์˜ ๊ฒฐ๊ณผ๋กœ ZF=1์ด ๋˜๋ฉด์„œ JE๋ฌธ์— ์˜ํ•ด 00401075๋กœ ์ ํ”„ํ•˜๊ฒŒ ๋œ๋‹ค.

 
๋”ฐ๋ผ์„œ, ๊ฐ™์€ ๊ฒฝ๋กœ ๋‚ด์—   "abex.l2c" ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ์„œ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์„ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค. 

 
๋‹ค์‹œ ์‹คํ–‰ํ•ด๋ณด๋ฉด, ํŒŒ์ผ์€ ์ฐพ์•˜์ง€๋งŒ ์ ์ ˆํ•œ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ๋Š” ๋ฉ”์‹œ์ง€์ฐฝ์ด ์ƒˆ๋กญ๊ฒŒ ๋œฌ๋‹ค. 

 
ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’(EAX์— ์ €์žฅ)๋„ 20C์œผ๋กœ ๋‹ฌ๋ผ์กŒ๋‹ค. 

 
๋ฆฌํ„ด๊ฐ’์ด ๋‹ฌ๋ผ์กŒ๊ธฐ ๋•Œ๋ฌธ์— ์ ํ”„ํ•˜์ง€ ์•Š๊ณ , ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ๋„˜์–ด๊ฐ„๋‹ค. 
 
GetFileSize ํ•จ์ˆ˜

์‹คํ–‰ ๊ฒฐ๊ณผ EAX์— 0์ด ์ €์žฅ๋˜์—ˆ๋‹ค. (ํŒŒ์ผ์— ์•„๋ฌด๊ฒƒ๋„ ์ ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ)

 
CMP EAX, 12 : EAX์™€ 12 ๋น„๊ต 

  •  CMP: ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๋น„๊ต ->  ๋‹ค๋ฆ„ ->  ZF = 1 
    • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ๊ฒฐ๊ณผ๋Š” 0์ด ๋˜๊ณ  ZF๋Š” 1์ด ๋œ๋‹ค. ๋งŒ์•ฝ ๋‘ ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ZF๊ฐ€ 0์ด ๋œ๋‹ค. (๋‘ ๊ฐ’์ด ๋‹ค๋ฆ„ -> ๊ฒฐ๊ณผ๊ฐ€ 0์ด ์•„๋‹˜)

JNZ SHORT 00401060

  • JNZ: Jump if Not Zero => 0์ด ์•„๋‹ˆ๋ฏ€๋กœ, ์ ํ”„
    • ์ œ๋กœ ํ”Œ๋ž˜๊ทธ(ZF)๋ฅผ ์ฒดํฌํ•˜์—ฌ, ZF๊ฐ€ 0์ด๋ผ๋ฉด (์ฆ‰, ์ง์ „์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ 0์ด ์•„๋‹ˆ๋ผ๋ฉด) ์ฃผ์–ด์ง„ ์ฃผ์†Œ(00401060)๋กœ ์ ํ”„. ๋งŒ์•ฝ ZF๊ฐ€ 1์ด๋ผ๋ฉด (์ง์ „์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ 0์ด๋ผ๋ฉด), ์ ํ”„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ๊ณ„์† ์‹คํ–‰ํ•œ๋‹ค

 
๋”ฐ๋ผ์„œ, ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ EAX์— ์ €์žฅ๋œ ๊ฐ’์œผ๋กœ ๋งž์ถฐ์ค€๋‹ค. 
์ด๋•Œ, 12๋Š” 16์ง„์ˆ˜์ด๋ฏ€๋กœ 10์ง„์ˆ˜๋กœ 18 ๋ฐ”์ดํŠธ์˜ ํฌ๊ธฐ์˜ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

 
๋‹ค์‹œ ์‹คํ–‰ํ•ด๋ณด๋ฉด ์ ํ”„ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํฌ๋ž™์— ์„ฑ๊ณตํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 


3. abex' crackme #2

*ํ•™์Šต๋ชฉํ‘œ: ๊ฐ„๋‹จํ•œ crack me ํŒŒ์ผ์„ ๋ถ„์„ํ•˜์—ฌ ๋””๋ฒ„๊ฑฐ์™€ ๋””์Šค์–ด์…ˆ ์ฝ”๋“œ์— ์ต์ˆ™ํ•ด์ง€๊ณ , Visual Basic์˜ ํŒŒ์ผ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณธ ๋’ค ๋ถ„์„ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šด๋‹ค. 
 
**ํ•ด๋‹น exe ํŒŒ์ผ์€ Visual Basic์œผ๋กœ ์ œ์ž‘๋˜์—ˆ๋‹ค.
 

(1) abexโ€™ crackme #2 ์‹คํ–‰

  • exe ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„๋ณด๋‹ˆ ํ•ด๋‹น ํ™”๋ฉด์ด ๋–ด๋‹ค.
  • ์ „ํ˜•์ ์ธ crackme์˜ ํ˜•ํƒœ์ธ ์‹œ๋ฆฌ์–ผ ํ‚ค๋ฅผ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๊ณ  ํ•œ๋‹ค. 
  • Name์„ ๋”ฐ๋กœ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฑธ๋กœ ๋ด์„œ๋Š” ์‹œ๋ฆฌ์–ผ ๊ฐ’์„ ์ƒ์„ฑํ•  ๋•Œ Name ๋ฌธ์ž์—ด์ด ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค
    • ์ด ๋ถ€๋ถ„์€ ๊ฒฝํ—˜์„ ํ†ตํ•ด ์ €์ž๊ฐ€ ์ถ”์ธกํ•œ ๋ถ€๋ถ„
  • ์ผ๋‹จ ๋จผ์ €, ํ•ด๋‹น ์นธ์— ์•„๋ฌด๊ฐ’์ด๋‚˜ ์ž…๋ ฅํ•ด๋ณธ ํ›„ [Check] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค

 
 

  • ๊ฐ abc, def๋ฅผ ์ž…๋ ฅํ–ˆ๋Š”๋ฐ ์ตœ์†Œ 4๊ธ€์ž๋ฅผ ์น˜๋ผ๊ณ  ์—๋Ÿฌ์ฐฝ์ด ๋–ด๋‹ค
  • ๋”ฐ๋ผ์„œ, ๋” ๊ธด ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•ด์ฃผ์—ˆ๋”๋‹ˆ, ์‹œ๋ฆฌ์–ผ ๊ฐ’์ด ํ‹€๋ ธ๋‹ค๋Š” ์—๋Ÿฌ ์ฐฝ์ด ๋œฌ๋‹ค. "Wrong serial!"

 

(2) Visual Basic ํŒŒ์ผ ํŠน์ง• 

**ํ•ด๋‹น exe ํŒŒ์ผ์€ Visual Basic์œผ๋กœ ์ œ์ž‘๋˜์—ˆ๋‹ค.
- ๋”ฐ๋ผ์„œ ํ•ด๋‹น ํŒŒ์ผ์„ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์ „์— Visual Basic ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž
 

  • VB ์ „์šฉ ์—”์ง„
    • VBํŒŒ์ผ์€ MSVBVM60.dll (Microsoft Visual Basic Virtual Machine 6.0)์ด๋ผ๋Š” ์ „์šฉ ์—”์ง„์„ ์‚ฌ์šฉํ•œ๋‹ค.
      • The Thunder Runtime Engine ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
        • VB์—”์ง„์˜ ์˜ˆ์‹œ
          • ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ VB ์†Œ์Šค์ฝ”๋“œ์—์„œ MsgBox() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋„๋ก ๋งŒ๋“ค๊ณ , ์ด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ Win31 API ์ธ user32.dll!MessageBoxW() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. 
      • N(Native) code, P(Pseudo) code
        • VB ํŒŒ์ผ์€ ์ปดํŒŒ์ผ ์˜ต์…˜์— ๋”ฐ๋ผ์„œ N code์™€ P code๋กœ ์ปดํŒŒ์ผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
        • N code: ์ผ๋ฐ˜์ ์ธ ๋””๋ฒ„๊ฑฐ์—์„œ ํ•ด์„ ๊ฐ€๋Šฅํ•œ IA-32 instruction ์„ ์‚ฌ์šฉํ•จ
        • P code: ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด ๊ฐœ๋…์œผ๋กœ VB ์—”์ง„์œผ๋กœ ๊ฐ€์ƒ๋จธ์‹ ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ž์ฒด์ ์œผ๋กœ ํ•ด์„ ๊ฐ€๋Šฅํ•œ ๋ช…๋ ์–ด(๋ฐ”์ดํŠธ ์ฝ”๋“œ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
          • ๋”ฐ๋ผ์„œ, VB์˜ P code๋ฅผ ์ •ํ™•ํžˆ ํ•ด์„ํ•˜๋ ค๋ฉด VB์—”์ง„์„ ๋ถ„์„ํ•˜์—ฌ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
    • Event Handler
      • VB๋Š” ์ฃผ๋กœ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ, IDE ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋„ GUI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ๋‹ค. 
      • ์ฆ‰ VB ํ”„๋กœ๊ทธ๋žจ์€ ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์˜ Event Driven ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌด์— main() ํ˜น์€ WinMain()์— ์‚ฌ์šฉ์ž ์ฝ”๋“œ(=์šฐ๋ฆฌ๊ฐ€ ๋””๋ฒ„๊น…์„ ์›ํ•˜๋Š” ์ฝ”๋“œ)๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฐ event handler์— ์‚ฌ์šฉ์ž ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
    • undocumented ๊ตฌ์กฐ์ฒด
      • VB์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ข… ์ •๋ณด(Dialog, Control, Form, Module, Function ๋“ฑ)๋“ค์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ตฌ์กฐ์ฒด ํ˜•์‹์œผ๋กœ ํŒŒ์ผ์— ์ €์žฅ๋œ๋‹ค
      • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ์ฒด ์ •๋ณด๋ฅผ ์ •์‹์œผ๋กœ ๊ณต๊ฐœํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— VB ํŒŒ์ผ์˜ ๋””๋ฒ„๊น…์— ์–ด๋ ค์›€์ด ์žˆ๋‹ค.

(3) Start debugging

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ์ž‘๋˜๋ฉด  EP(401238) ์ฝ”๋“œ์—์„œ๋Š” VB ์—”์ง„์˜ ๋ฉ”์ธํ•จ์ˆ˜(ThunRTMain)๋ฅผ ํ˜ธ์ถœ(CALL)ํ•œ๋‹ค. 
    • CALL <JMP.~~~~#1100> ์„ F8 ์‹คํ–‰ํ•˜๋ฉด crackme์ฐฝ์ด ๋œจ๋ฏ€๋กœ, ํ•ด๋‹น ๋ถ€๋ถ„์— breakpoint ํ•ด๋‘๊ณ , F7๋กœ ๋“ค์–ด๊ฐ€๋ณด์•˜๋‹ค. //์•ˆํ•ด๋„๋จ
    • ์ฃผ์„ ๋“ฑ์„ ํ†ตํ•ด Mainํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 
  • PUSH 00401E14
    •  401E14๋ฅผ ์Šคํƒ์— ์ž…๋ ฅ(PUSH)ํ•œ๋‹ค
      • 401E14๋Š” RT_MainStruct ๊ตฌ์กฐ์ฒด ์ฃผ์†Œ์ด๋‹ค 
  • CALL <jmp.~~~~#1100> //CALL 4012E4
    • ํ•ด๋‹น ๋ช…๋ น์–ด์— ์˜ํ•ด 401232 ์ฃผ์†Œ์˜ JMP DWORD PTR DS:[4010A0] ๋ช…๋ น์–ด ์‹คํ–‰ 
      • ์‹คํ–‰๋œ JMP ๋ช…๋ น์–ด์— ์˜ํ•ด VB ์—”์ง„์˜ ๋ฉ”์ธํ•จ์ˆ˜์ธ ThunRTMain() ํ•จ์ˆ˜๋กœ ๊ฐ„๋‹ค
      • ์•ž์—์„œ ์Šคํƒ์— ์ž…๋ ฅํ•œ 4012E4 ๊ฐ’์€ ThunRTMain()์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์ด๋‹ค. 

 
- ๊ฐ„์ ‘ํ˜ธ์ถœ

  • 40123D ์ฃผ์†Œ์˜ CALL 401232 ๋ช…๋ น์€ ThunRTMain() ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด๋‹ค
    • MSVBVM60.dll! 1unRTMain()์œผ๋กœ ์ง์ ‘ ๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์˜ 401232 ์ฃผ์†Œ์˜ JMP ๋ช…๋ น์„ ํ†ตํ•ด ๊ฐ€๋Š” ํŠน์ดํ•œ  ๋ฐฉ์‹์ด๋‹ค 
    • ์ด ๊ธฐ๋ฒ•์€ VC++, VB ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„์ ‘ํ˜ธ์ถœ(Indirect Call)๊ธฐ๋ฒ•์ด๋‹ค.

 
- RT_MainStruct ๊ตฌ์กฐ์ฒด 

  • RT_MainStruct ๊ตฌ์กฐ์ฒด์˜ ๋ฉค๋ฒ„๋Š” ๋˜ ๋‹ค๋ฅธ ๊ตฌ์กฐ์ฒด์˜ ์ฃผ์†Œ๋“ค์ด๋‹ค. ์ฆ‰, VB์—”์ง„์€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜์–ด์˜จ RT_MainStruct ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์–ป๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค
  • ์ฑ…์—์„œ๋Š” ์ •ํ™•ํ•œ ์„ค๋ช… ์ƒ๋žต

- ThunRTMain() ํ•จ์ˆ˜ //401232์—์„œ F7

 

  • ํ•ด๋‹น ํ™”๋ฉด์€ ThunRTMain() ์ฝ”๋“œ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์ด๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์™„์ „ํžˆ ๋‹ฌ๋ผ์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
      • ์ด ์ฃผ์†Œ๋Š” MSVBVM60.dll ๋ชจ๋“ˆ์˜ ์ฃผ์†Œ ์˜์—ญ์ด๋‹ค. 
      • ์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ๋ถ„์„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ VB์—”์ง„์˜ ์ฝ”๋“œ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
      • ์ด ๋ถ€๋ถ„์€ ์ง€๊ธˆ ๋ถ„์„ํ•  ํ•„์š”X

- crackme ๋ถ„์„
์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ณ ์‹ถ์€ ํŒจ์น˜ํŒจ์•ผ ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ๋‹จ์„œ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. 
์šฐ๋ฆฌ๊ฐ€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋‹จ์„œ๊ฐ€ ๋งŽ์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค์™€ ๊ฒฝ๊ณ  ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•œ๋‹ค.
 
- ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ 
//๋งˆ์šฐ์Šค ์šฐํด๋ฆญ ํ›„ search for -> all referenced text string

 

  • ์ด์ „์— ๋ดค๋˜ ์‹œ๋ฆฌ์–ผ์ด ํ‹€๋ ธ๋‹ค๋Š” ๋ฌธ์ž์—ด์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 
    • ๋”๋ธ”ํด๋ฆญํ•˜์—ฌ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•œ๋‹ค
  • ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค์˜ ํƒ€์ดํ‹€ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด์šฉ ๋ถ€๋ถ„๊นŒ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ค์ œ ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค ํ˜ธ์ถœ ํ•จ์ˆ˜ ์ฝ”๋“œ ๋˜ํ•œ ๋‚˜ํƒ€๋‚ฌ๋‹ค. 
    • ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค ํ•จ์ˆ˜ ํ˜ธ์ถœ ์ฝ”๋“œ: 4034A6
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ด€์ ์—์„œ ์ƒ๊ฐํ•ด๋ณด์ž
    1. ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์‹œ๋ฆฌ์–ผ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ 
    2. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ํ‚ค์™€ ๋ฌธ์ž์—ด ๋น„๊ต๋ฅผ ํ†ตํ•ด์„œ ๊ฐ๊ฐ TRUE(ํ‚ค๊ฐ€ ๊ฐ™์Œ)์™€ FALSE(ํ‚ค๊ฐ€ ํ‹€๋ฆผ)๋กœ ์ฝ”๋“œ๊ฐ€ ๊ฐˆ๋ผ์งˆ ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์œ„ ์ฝ”๋“œ ์ „ํ›„์— ๋ฌธ์ž์—ด ๋น„๊ต ์ฝ”๋“œ ๊ทธ๋ฆฌ๊ณ  ํ‚ค๊ฐ€ ๋งž์•˜์„ ๋•Œ ์ถœ๋ ฅ๋  ์„ฑ๊ณต ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค ํ˜ธ์ถœ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. (์Šคํฌ๋กค์„ ์˜ฌ๋ฆฌ๋ฉด ํ™•์ธ ๊ฐ€๋Šฅ)

 

 

  • 403329 ์ฃผ์†Œ์˜ __vbaVarTstEq() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ฆฌํ„ด๊ฐ’(AX)๋ฅผ ๋น„๊ต(TEST ๋ช…๋ น)ํ•œ ํ›„ 403332 ์ฃผ์†Œ์˜ ์กฐ๊ฑด ๋ถ„๊ธฐ(JE ๋ช…๋ น)์— ์˜ํ•ด์„œ ์ฐธ, ๊ฑฐ์ง“ ์ฝ”๋“œ๋กœ ๋ถ„๊ธฐํ•˜๊ฒŒ ๋œ๋‹ค. 

 
- ๋ฌธ์ž์—ด ์ฃผ์†Œ ์ฐพ๊ธฐ 

  • 403329 ์ฃผ์†Œ์˜ __vbaVarTstEq() ํ•จ์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด ๋น„๊ต ํ•จ์ˆ˜๋ผ๋ฉด, ๊ทธ ์œ„์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ PUSH ๋ช…๋ น์–ด(403327,403328)๋Š” ๋น„๊ต ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฆ‰ ๋น„๊ต ๋ฌธ์ž์—ด์ด ๋  ๊ฒƒ์ด๋‹ค.
    • C์–ธ์–ด์˜ strcmp() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ €์ž๊ฐ€ ์ถ”์ธกํ•œ ๋ถ€๋ถ„
    • 403329 ์ฃผ์†Œ๊นŒ์ง€ ๋””๋ฒ„๊น…์„ ์ง„ํ–‰ํ•ด์ค€๋‹ค.
      • 403329์—๋งŒ Breakpoint๋ฅผ ๊ฑธ๊ณ  F9๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ–ˆ๋‹ค.

 

  • SS: [EBP-44]
    • SS: ์Šคํƒ ์„ธ๊ทธ๋จผํŠธ 
    • EBP: ๋ฒ ์ด์Šค ํฌ์ธํ„ฐ
    • ์ฆ‰, EBP-44๋Š” ์Šคํƒ ๋‚ด์˜ ์ฃผ์†Œ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ ํ•จ์ˆ˜์—์„œ ์„ ์–ธ๋œ ๋กœ์ปฌ ๊ฐ์ฒด์˜ ์ฃผ์†Œ์ด๋‹ค.
      • ๋กœ์ปฌ ๊ฐ์ฒด๋Š” ์Šคํƒ์˜์—ญ์— ์ €์žฅ๋จVB์˜ ๋ฌธ์ž์—ด์€ C++์˜ string ํด๋ž˜์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฌธ์ž์—ด ํƒ€์ž…์„ ์‚ฌ์šฉํ•œ๋‹ค.
ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์ด๋™ํ•˜๋Š” ๋ฒ•: ํ•ด๋‹น ์ฃผ์†Œ ํด๋ฆญ -> ๋งˆ์šฐ์Šค ์šฐ์ธก ๋ฒ„ํŠผ -> Follow in dump (-> Memory address)

 

  • EAX:19F298
  • EDX:19F288
๋ฉ”๋ชจ๋ฆฌ ๋คํ”„ ์ฐฝ -> address with ASCII dump 
*๋ณต๊ตฌ: Hex -> Hex/ASCII(16 bytes)
  • ์‚ฌ์ง„์—์„œ ์•Œ  ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฒฐ๊ตญ EDX๋Š” ์‹ค์ œ serial ๊ฐ’์ด๊ณ , EAX ๊ฐ’์€ ๋‚ด๊ฐ€ ์ž…๋ ฅํ•œ ์‹œ๋ฆฌ์–ผ ๊ฐ’์ด๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • ๋”ฐ๋ผ์„œ, ๊ฐ™์€ Name ๊ฐ’์œผ๋กœ ํ•ด๋‹น ์‹œ๋ฆฌ์–ผ ๊ฐ’์„ ์ž…๋ ฅํ•ด๋ณด๋ฉด ์„ฑ๊ณต์ด๋‹ค

 

 
- Serial ์ƒ์„ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์œ„์—์„œ ๋ณด์•˜๋˜ ์กฐ๊ฑด ๋ถ„๊ธฐ ํ•จ์ˆ˜๋Š” ์–ด๋–ค ํ•จ์ˆ˜์— ์†ํ•ด์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ทธ ํ•จ์ˆ˜๋Š” Check ๋ฒ„ํŠผ์˜ event handler ์ผ ๊ฒƒ์ด๋‹ค. 
    • [Check] ๋ฒ„ํŠผ์„ ์„ ํƒํ–ˆ์„ ๋•Œ ์œ„ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์œผ๋ฉฐ, ์„ฑ๊ณต/์‹คํŒจ ๋ฉ”์‹œ์ง€ ๋ฐ•์Šค๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์‚ฌ์šฉ์ž ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค
    • ํ•ด๋‹น ์กฐ๊ฑด ๋ถ„๊ธฐ ์ฝ”๋“œ์—์„œ ์œ„๋กœ ์Šคํฌ๋กค์„ ํ•˜๋‹ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค

 

  • ์•„๋ž˜ ์ฝ”๋“œ๋Š” ํ•จ์ˆ˜๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ์Šคํƒ ํ”„๋ ˆ์ž„์„ ๊ตฌ์„ฑํ•˜๋Š” ์ „ํ˜•์ ์ธ ์ฝ”๋“œ์ด๋‹ค.
    • ๋”ฐ๋ผ์„œ, ์ด ์œ„์น˜๊ฐ€ ํ•จ์ˆ˜์˜ ์‹œ์ž‘์ž„์„ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ”๋กœ [Check] ๋ฒ„ํŠผ์˜ event handler์ด๋‹ค. 
    • ์ •ํ™•ํ•œ ๋ถ„์„์„ ์œ„ํ– 402ED0์— BP๋ฅผ ๊ฑด๋‹ค.

 
- ์ฝ”๋“œ ์˜ˆ์ธกํ•˜๊ธฐ
 
- ์‹œ๋ฆฌ์–ผ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด๋‚˜ ๋ฆฌ๋ฒ„์‹ฑ ๊ฒฝํ—˜์„ ํ†ตํ•ด ์‹œ๋ฆฌ์–ผ ํ‚ค์˜ ์ƒ์„ฑ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • Name ๋ฌธ์ž์—ด ์ฝ๊ธฐ
  • ๋ฃจํ”„๋ฅผ ๋Œ๋ฉด์„œ ๋ฌธ์ž๋ฅผ ์•”ํ˜ธํ™” ํ•˜๊ธฐ 

๋”ฐ๋ผ์„œ, VB์—”์ง„ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑ๋œ ํ•ด๋‹น ํŒŒ์ผ๋„ ์›๋ฆฌ๊ฐ€ ์ด์™€ ๋น„์Šทํ•  ๊ฒƒ์ด๋ผ๊ณ   ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค
์˜ˆ์ธก์ด ๋งž๋‹ค๋ฉด, event handler ์‹œ์ž‘ ์ฝ”๋“œ๋ถ€ํ„ฐ ๋””๋ฒ„๊น…์„ ํ•˜์—ฌ Name ๋ฌธ์ž์—ด์„ ์ฝ๋Š” ๋ถ€๋ถ„์„ ์ฐพ์œผ๋ฉด, ๋ฐ”๋กœ ์ด์–ด์„œ ์•”ํ˜ธํ™” ๋ฃจํ”„๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ด๋‹ค. 
 
- Name ๋ฌธ์ž์—ด ์ฝ๋Š” ์ฝ”๋“œ์™€ ์•”ํ˜ธํ™” ๋ฃจํ”„ 

 
- ํ•ด๋‹น Call ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ŠคํŠธ๋ง ๊ฐ์ฒด์— ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , 

 
- ๊ณ„์† ๋””๋ฒ„๊น…์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ๋งŒ๋‚˜ ์ •ํ•ด์ง“ ํšŸ์ˆ˜๋งŒํผ ๋ฃจํ”„๋ฅผ ๋Œ๊ฒŒ ๋œ๋‹ค.
 
- ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•

 

  • ์ž…๋ ฅํ•œ Name: minji123
  • ์œ„์˜ ํ™”๋ฉด๊นŒ์ง€ ๋””๋ฒ„๊น…ํ•œ๋‹ค
    • ECX:00191F0
      • ๊ฒฐ๊ณผ ์ €์žฅ์šฉ ๋ฒ„ํผ
    • EAX: 0019F1F0
      • ์•”ํ˜ธํ™” ํ‚ค
    • EDX: 0019F278
      • Name ๋ฌธ์ž์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์˜ ์•„์Šคํ‚ค ๊ฐ’
  • ์ด์ฒ˜๋Ÿผ ์ƒ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

-  ์•”ํ˜ธํ™” ๋ฐฉ์‹ ์ด ์ •๋ฆฌ 

  1. ์ฃผ์–ด์ง„ Name ๋ฌธ์ž์—ด์„ ์•ž์—์„œ๋ถ€ํ„ฐ ํ•œ ๋ฌธ์ž์”ฉ ์ฝ๊ธฐ(์ด 4ํšŒ)
  2. ๋ฌธ์ž๋ฅผ ์ˆซ์ž(ASCII์ฝ”๋“œ)๋กœ ๋ณ€ํ™˜
  3. ๋ณ€ํ™˜๋œ ์ˆซ์ž์— 64๋ฅผ ๋”ํ•จ
  4. ์ˆซ์ž๋ฅผ ๋‹ค์‹œ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜
  5. ๋ณ€ํ™˜๋œ ๋ฌธ์ž๋ฅผ ์—ฐ๊ฒฐ์‹œํ‚ด