์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[Reversing] 4์ฃผ์ฐจ dreamhack stage 5

๋‹ค๋ธ”๐Ÿ’ 2022. 5. 14. 03:32

Exercise: Helloworld

 

1. ์ •์  ๋ถ„์„

 

IDA๋กœ ํŒŒ์ผ ์—ด๊ธฐ

 

 

main ํ•จ์ˆ˜ ์ฐพ๊ธฐ

์ •์  ๋ถ„์„์€ ์ฃผ๋กœ main ํ•จ์ˆ˜๋ฅผ ์ฐพ๊ณ , ์ด๋ฅผ ๋ถ„์„ํ•˜๋ฉฐ ์‹œ์ž‘๋œ๋‹ค.

 

๋ฐ”์ด๋„ˆ๋ฆฌ์—์„œ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  1. ํ”„๋กœ๊ทธ๋žจ์˜ ์‹œ์ž‘ ์ง€์ ์ธ ์ง„์ž…์ (Entry Point, EP)๋ถ€ํ„ฐ ๋ถ„์„์„ ์‹œ์ž‘ํ•ด์„œ ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰ 
    • ์ด ๋ฐฉ๋ฒ•์˜ ๊ฒฝ์šฐ ๋ฐ”์ด๋„ˆ๋ฆฌ์˜ ๊ทœ๋ชจ๊ฐ€ ์กฐ๊ธˆ๋งŒ ์ปค์ ธ๋„ ๋ถ„์„์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๊ธ‰์ฆ 
  2. ๋Œ€์ƒ ํ•จ์ˆ˜์˜ ํŠน์„ฑ์ด๋‚˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์—ฌ๋Ÿฌ ์™ธ์ ์ธ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ์ƒ‰

 

 

๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๐Ÿ”

๋ฌธ์ž์—ด๋“ค์€ ํŠน์„ฑ์ƒ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.

ex) ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ๊ทธ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ž์—ด์€ ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„๊ณผ ์ธ์ž๊ฐ€ ์ ํ˜€์žˆ๊ธฐ๋„ ํ•˜๋‹ค.

 

IDA๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์— ํฌํ•จ๋œ ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก "๋ฌธ์ž์—ด ํƒ์ƒ‰" ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

 

  1. Shift + F12๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”์ด๋„ˆ๋ฆฌ์— ํฌํ•จ๋œ ๋ฌธ์ž์—ด์ด ์—ด๊ฑฐ๋œ Strings ์ฐฝ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  2. ๋งŽ์€ ๋ฌธ์ž์—ด ์ค‘์— 'Hello, world!'๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ๋‹ค์–‘ํ•œ ๋ฌธ์ž์—ด์ด ๋ฐ”์ด๋„ˆ๋ฆฌ์— ์ถ”๊ฐ€๋˜๋Š”๋ฐ, ์ด ๋ฌธ์ž์—ด์€ ๊ทธ๋Ÿฐ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋„ฃ์—ˆ์„ ๊ฒƒ์œผ๋กœ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด ๋ฌธ์ž์—ด์„ ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

 

 

์ƒํ˜ธ ์ฐธ์กฐ ๐Ÿ”€

์ •์  ๋ถ„์„์„ ํ•˜๋‹ค๊ฐ€, ์–ด๋–ค ์ˆ˜์ƒํ•œ ๊ฐ’์ด๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ฐพ์•˜์„ ๋•Œ ์ƒํ˜ธ ์ฐธ์กฐ(Cross Reference, XRef)๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฐธ์กฐํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์•ž์—์„œ ์ฐพ์€ "Hello, world!\n"์ด๋ผ๋Š” ์ˆ˜์ƒํ•œ ๋ฌธ์ž์—ด์ด ์–ด๋””์„œ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ถ”์ ํ•ด๋ณด์ž.

 

"aHelloWorld"๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ƒํ˜ธ ์ฐธ์กฐ์˜ ๋‹จ์ถ•ํ‚ค X๋ฅผ ๋ˆ„๋ฅด๋ฉด Figure2์™€ ๊ฐ™์ด xrefs(cross reference) ์ฐฝ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.

์ด ์ฐฝ์—๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

aHelloWorld๋ฅผ ๋ชป ์ฐพ๊ฒ ์–ด์„œ ํ™ˆํŽ˜์ด์ง€ ์‚ฌ์ง„์œผ๋กœ ๋Œ€์ฒดํ–ˆ๋‹ค..
main ํ•จ์ˆ˜

 

 

 

main ํ•จ์ˆ˜ ๋ถ„์„

mainํ•จ์ˆ˜๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ, F5๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์ด๋ฅผ ๋””์ปดํŒŒ์ผ ํ•ด๋ณด์ž.

main ํ•จ์ˆ˜ ๋””์ปดํŒŒ์ผ

๋””์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜์˜ ์ฃผ์š” ์ •๋ณด๋ฅผ ์‚ดํŽด๋ณด์ž!

 

์ธ์ž ๋ถ„์„

IDA๋Š” argc, argv, envp๋กœ 3๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค.

 

๋™์ž‘

1. Sleep ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ 1์ดˆ ๋Œ€๊ธฐํ•œ๋‹ค.

2. qword_14001DBE0์— "Hello, world!\n" ๋ฌธ์ž์—ด์˜ ์ฃผ์†Œ๋ฅผ ๋„ฃ๋Š”๋‹ค.

3. sub_140001060์— "Hello, world!\n" ๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜์—ฌ ํ˜ธ์ถœํ•œ๋‹ค.

4. 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ฐ˜ํ™˜ ๊ฐ’

0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

ํ€ด์ฆˆ

ํ€ด์ฆˆ 

 

 

 

 

sub_14001060 ํ•จ์ˆ˜ ๋ถ„์„

sub_14001060 ํ•จ์ˆ˜

  • va_start ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๊ฐ€๋ณ€ ์ธ์ž๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • __arct_job_func ํ•จ์ˆ˜๋Š” ์ŠคํŠธ๋ฆผ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜
    • ์ธ์ง€๋กœ ๋“ค์–ด๊ฐ€๋Š” 1์€ stdout์„ ์˜๋ฏธํ•œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด ์ธ์ž๋ฅผ ๋ฐ›๊ณ  stdout ์ŠคํŠธ๋ฆผ์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€๋ณ€ ํ•จ์ˆ˜์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด ๋ชจ๋“  ์ •ํ™ฉ์„ ํ†ตํ•ด sub_14001060ํ•จ์ˆ˜๋Š” printf ํ•จ์ˆ˜๋กœ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* ์ŠคํŠธ๋ฆผ?

์ŠคํŠธ๋ฆผ(Stream)์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐ๊ธˆ์”ฉ ํ˜๋Ÿฌ๋“ค์–ด์˜จ๋‹ค๋Š” ์˜๋ฏธ์—์„œ ๋ช…๋ช…๋˜์—ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋Š” ์ŠคํŠธ๋ฆผ์˜ ํ˜•์‹์œผ๋กœ ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ, ๋˜๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค๋ฅธ ํŒŒ์ผ ๋“ฑ์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์šด์˜์ฒด์ œ๋Š” stdin (standard input), stdout (standard output), stderr (standard error)์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ๋“ค์„ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์ƒ์„ฑํ•ด์ค€๋‹ค. ์ด๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

printํ•จ์ˆ˜๋Š” stdout์„ ํ†ตํ•ด ์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ,

scanfํ•จ์ˆ˜๋Š” ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ stdin์œผ๋กœ ๋ฐ›์•„์„œ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•ด์ค€๋‹ค.

์ด๋Ÿฐ ๊ธฐ๋ณธ ์ŠคํŠธ๋ฆผ์™ธ์—, ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ dream.txt๋ผ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ด ํŒŒ์ผ๊ณผ ์ŠคํŠธ๋ฆผ์„ ํ˜•์„ฑํ•˜์—ฌ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

 

 

2. ๋™์  ๋ถ„์„ 

 

main ํ•จ์ˆ˜ ์ง„์ž…

์ค‘๋‹จ์  ์„ค์ •(Break Point, F2) ๋ฐ ์‹คํ–‰(Run, F9)

 

โ–ก Run(F9) : ํ”„๋กœ๊ทธ๋žจ์„ ๊ณ„์† ์‹คํ–‰, ๋˜๋Š” ๋””๋ฒ„๊น…์„ ์‹œ์ž‘ํ•œ๋‹ค.

 

์ค‘๋‹จ์ ์„ ํŠน์ • ์ฃผ์†Œ์— ์„ค์ •ํ•˜๊ณ , ์‹คํ–‰ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ์ค‘๋‹จ์ ๊นŒ์ง€ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ์‹คํ–‰๋œ๋‹ค.

mainํ•จ์ˆ˜์˜ ๋™์ž‘์ด ๊ถ๊ธˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด์„œ mainํ•จ์ˆ˜๋กœ ์ง„์ž…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

main ํ•จ์ˆ˜์— ์ค‘๋‹จ์  ์„ค์ •
F9ํ‚ค๊ฐ€ ๋™์ž‘์ด ์•ˆ๋ผ์„œ ํ™ˆํŽ˜์ด์ง€ ์‚ฌ์ง„์œผ๋กœ ๋Œ€์ฒดํ–ˆ๋‹ค.

 

 

 

 

ํ•œ ๋‹จ๊ณ„ ์‹คํ–‰ (Step Over, F8)

Step Over(F8)์€ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

F8์„ ๋ˆ„๋ฅด๋ฉฐ ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

โ–ก Step Over(F8): ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„ ์‹คํ–‰ํ•œ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ๋Š” ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

 

  1. sub rsp, 38์„ ํ†ตํ•ด main ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•  ์Šคํƒ ์˜์—ญ์„ ํ™•๋ณดํ•œ๋‹ค.
  2. rsp+0x20์— 4 ๋ฐ”์ดํŠธ ๊ฐ’์ธ 0x000003e8์„ ์ €์žฅํ•œ๋‹ค.
  3. rsp+0x20์— ์ €์žฅ๋œ ๊ฐ’์„ ecx์— ์˜ฎ๊ธด๋‹ค. (ํ•จ์ˆ˜์˜ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋ฅผ ์„ค์ •)
  4. Sleepํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ecx๊ฐ€ 0x3e8์ด๋ฏ€๋กœ, Sleep(1000)์ด ์‹คํ–‰๋˜์–ด 1์ดˆ๊ฐ„ ์‹คํ–‰์ด ๋ฉˆ์ถ˜๋‹ค.
  5. “Hello, world!\n” ๋ฌธ์ž์—ด์˜ ์ฃผ์†Œ๋ฅผ rax์— ์˜ฎ๊ธด๋‹ค.
  6. ์•„๋ž˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๋คํ”„ ์ฐฝ์„ ์ด์šฉํ•˜์—ฌ 0x14001a140์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด ์‹ค์ œ๋กœ ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์ €์žฅ๋˜์–ด ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  7. rax์˜ ๊ฐ’์„ data์„ธ๊ทธ๋จผํŠธ์˜ ์ฃผ์†Œ์ธ 0x14001dbe0์— ์ €์žฅํ•œ๋‹ค.
  8. 0x14001dbe0์— ์ €์žฅ๋œ ๊ฐ’์„ rcx์— ์˜ฎ๊น๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์Œ ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋‹ค.
  9. 0x140001060ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ •์  ๋ถ„์„์„ ํ†ตํ•ด ์ด ํ•จ์ˆ˜๋ฅผ printfํ•จ์ˆ˜๋ผ๊ณ  ์ถ”์ธกํ–ˆ๋‹ค.
  10. ํ”„๋กœ๊ทธ๋žจ์„ ํ™•์ธํ•˜๋ฉด, Hello, world!๊ฐ€ ์ถœ๋ ฅ๋˜์–ด ์žˆ๋‹ค. ์ •์  ๋ถ„์„์„ ํ•  ๋•Œ๋Š” ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ์ถ”์ธกํ•˜๊ธฐ ์–ด๋ ค์› ์ง€๋งŒ, ๋™์  ๋ถ„์„์œผ๋กœ๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ผ๋Š” ์‚ฌ์‹ค์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  11.  ์‹œ์ž‘ํ•  ๋•Œ ํ™•์žฅํ•œ ์Šคํƒ ์˜์—ญ์„ add rsp, 38์„ ํ†ตํ•ด ๋‹ค์‹œ ์ถ•์†Œํ•˜๊ณ , ret์œผ๋กœ ์›๋ž˜ ์‹คํ–‰ ํ๋ฆ„์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

 

 

 

 

ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ์ง„์ž…ํ•˜๊ธฐ (Step Into, F7)

Step Over๋Š” ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€๋กœ ์ง„์ž…ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ๋ถ„์„ํ•˜๋‹ค ๋ณด๋ฉด ๊ทธ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœํ•˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๊นŒ์ง€ ์ •๋ฐ€ํ•˜๊ฒŒ ๋ถ„์„ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค.

๋งŽ์€ ๋””๋ฒ„๊ฑฐ๋Š” ๊ทธ๋Ÿฐ ์ƒํ™ฉ์„ ๋Œ€๋น„ํ•˜์—ฌ Step Into(F7)๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.

 

โ–ก Step Into(F7): ์–ด์…ˆ๋ธ”๋ฆฌ ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„ ์‹คํ–‰ํ•œ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

 

์ด๋ฒˆ printf()์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•˜๊ณ , ํ•ด๋‹น ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€๋กœ ์ง„์ž…ํ•ด๋ณด์ž.

 

 

  1. ๋””๋ฒ„๊น…์„ ์ค‘๋‹จ(Ctrl-F2)ํ•˜๊ณ , printf๋ฅผ ํ˜ธ์ถœํ•˜๋Š” 0x14000110b์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋””๋ฒ„๊น…์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ , Continue(F9)๋ฅผ ํด๋ฆญํ•˜์—ฌ, printf ํ•จ์ˆ˜์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  3. F7 ๋‹จ์ถ•ํ‚ค๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ RIP๊ฐ€ ์ด๋™ํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

Appendix, ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์กฐ์ž‘ํ•˜๊ธฐ

IDA๋ฅผ ์ด์šฉํ•˜๋ฉด ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Sleep Forever

๊ธฐ์กด ์ฝ”๋“œ์—์„œ๋Š” Sleep(delay=1000)์„ ํ˜ธ์ถœํ•˜์—ฌ 1์ดˆ ๋™์•ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ง€์‹œํ‚จ๋‹ค.

์ด๋ฒˆ์—๋Š” delay์˜ ๊ฐ’์„ 1000000์œผ๋กœ ์กฐ์ž‘ํ•˜์—ฌ 1000์ดˆ ๋™์•ˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •์ง€์‹œ์ผœ๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

 

 

  1. delay๋ฅผ Sleepํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ถ€๋ถ„์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋ฅผ ์žฌ์‹œ์ž‘ํ•œ๋‹ค.
  2. ์Šคํƒ์„ ๋ณด๋ฉด rsp+0x20์— delay์˜ ๊ฐ’์ธ 0x3e8์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค.
  3. ํ•ด๋‹น ๊ฐ’์„ ํด๋ฆญํ•˜๊ณ , F2๋ฅผ ๋ˆ„๋ฅธ ๋’ค 0xf4240(=1000000)์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ F2๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. delay์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ด์ œ F9๋ฅผ ๋ˆŒ๋Ÿฌ์„œ Sleepํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์•„๊นŒ์™€ ๋‹ฌ๋ฆฌ ํ•œ์ฐธ์„ ๊ธฐ๋‹ค๋ ค๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌ๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1000์ดˆ๋Š” ๋Œ€๋žต 20๋ถ„์ด๋ฏ€๋กœ, 20๋ถ„ ์ •๋„๋ฅผ ๋Œ€๊ธฐํ•ด์•ผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žฌ๊ฐœ๋œ๋‹ค.