๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Reverse Engineering

[Reverse Engineering] 2023. 09. 14_Reverse Engineering Intro and Binary & Analysis

by A Lim Han 2023. 9. 14.

๐Ÿท Reverse Engineering Introduction

# ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์ด๋ž€?

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://cyberhoot.com/cybrary/reverse-engineering/

 

: ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง(Reverse Engineering)์€ ์–ด๋–ค ์ œํ’ˆ, ์‹œ์Šคํ…œ, ์†Œํ”„ํŠธ์›จ์–ด, ๋˜๋Š” ๊ธฐ์ˆ ์˜ ๋™์ž‘ ์›๋ฆฌ๋‚˜ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ์—ญ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.

 

 ๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง(Reverse Engineering)์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ œํ’ˆ์ด๋‚˜ ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ, ์ž‘๋™ ๋ฐฉ์‹, ๋˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ฝ”๋“œ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํŒŒ์•…ํ•˜๊ฑฐ๋‚˜ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

 

 


 

๐Ÿท ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter)

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://bentist.tistory.com/41

  ์ปดํŒŒ์ผ๋Ÿฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ
์‹คํ–‰ ๋ฐฉ์‹ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ ๋ฒˆ์— ๋ฒˆ์—ญ ํ›„ ์‹คํ–‰ ํ•œ ์ค„ OR ํ•œ ๋ธ”๋ก์„
ํ•œ ๋ฒˆ์— ๋ฒˆ์—ญํ•˜๊ณ  ์‹คํ–‰
๋ฒˆ์—ญ ์‹œ์  ๋Ÿฐํƒ€์ž„ ์ด์ „(์ปดํŒŒ์ผ ์‹œ) ๋Ÿฐํƒ€์ž„ ์ค‘(์‹คํ–‰ ์‹œ)
์†๋„ ๋น ๋ฆ„ ๋Š๋ฆผ
์˜ค๋ฅ˜ ๊ฒ€์ถœ ์‹œ์  ์ปดํŒŒ์ผ ์‹œ ์‹คํ–‰ ์‹œ
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋†’์Œ ๋‚ฎ์Œ
์‚ฌ์šฉ ์–ธ์–ด C, C++, Java Python, Ruby, JavaScript
์ปดํŒŒ์ผ ๊ณผ์ • ์†Œ์Šค ์ฝ”๋“œ -->  ๊ธฐ๊ณ„ ์ฝ”๋“œ ์†Œ์Šค ์ฝ”๋“œ  -->  ๋ฐ”๋กœ ์‹คํ–‰
์ด์‹์„ฑ ๋‚ฎ์Œ ๋†’์Œ

 

 


 

๐Ÿท ์ปดํŒŒ์ผ(Compile)๊ณผ ๋””์ปดํŒŒ์ผ(Decompile)

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://aboullaite.me/understanding-jit-compiler-just-in-time-compiler/

  ์ปดํŒŒ์ผ ๋””์ปดํŒŒ์ผ
์ž‘์—… ์†Œ์Šค ์ฝ”๋“œ  -->  ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ  -->  ์†Œ์Šค ์ฝ”๋“œ
์ฃผ์š” ๋‹จ๊ณ„ 1. ์†Œ์Šค ์ฝ”๋“œ ๋ถ„์„
2. ์ค‘๊ฐ„ ์ฝ”๋“œ ์ƒ์„ฑ
3. ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ์ƒ์„ฑ
1. ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ ๋ถ„์„
2. ์ค‘๊ฐ„ ์ฝ”๋“œ ์ถ”์ถœ
3. ์ค‘๊ฐ„ ์ฝ”๋“œ๋ฅผ ์›๋ž˜
์†Œ์Šค ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜
์–ธ์–ด ์ข…์†์„ฑ ์ปดํŒŒ์ผ๋Ÿฌ์— ๋”ฐ๋ผ ์ƒ์ด ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ์™€ ๊ด€๋ จ X
๊ฐ€๋…์„ฑ ๋ณ€ํ™” ์†Œ์Šค ์ฝ”๋“œ ์†์‹ค๋กœ ๊ฐ€๋…์„ฑ ๋–จ์–ด์ง ๊ฐ€๋…์„ฑ ์ผ๋ถ€ ๋ณต๊ตฌ ๊ฐ€๋Šฅ

 

 


 

๐Ÿท ์ •์  ๋ถ„์„(Static Analysis)๊ณผ ๋™์  ๋ถ„์„(Dynamic Analysis)

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://support.functionbay.com/en/technical-tip/single/259

  ์ •์  ๋ถ„์„ ๋™์  ๋ถ„์„
๋ถ„์„ ์‹œ์  ์ปดํŒŒ์ผ ๋˜๋Š” ๋นŒ๋“œ ์ „ ์‹คํ–‰ ์ค‘
๋ฐ์ดํ„ฐ ์†Œ์Šค ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ์ •์  ๋ฆฌ์†Œ์Šค ์‹คํ–‰ ์ค‘์— ์ƒ์„ฑ๋˜๋Š”
๋ฐ์ดํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉ
์ˆ˜ํ–‰ ๋ชฉ์  ์ž ์žฌ์  ์–ด๋ฅ˜ ์‹๋ณ„ ๋ฐ
์ฝ”๋“œ ํ’ˆ์งˆ ๊ฒ€์ฆ
๋Ÿฐํƒ€์ž„ ๋™์ž‘ ๋ถ„์„ ๋ฐ ๋ณด์•ˆ ๊ฒ€์‚ฌ
์ •ํ™•์„ฑ ์‹คํ–‰ ์ค‘์ธ ๋ฐ์ดํ„ฐ ๋ฐ ํ™˜๊ฒฝ ๊ณ ๋ ค X ์‹ค์ œ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š”
์ด๋ฒคํŠธ ๊ณ ๋ ค
์˜ค๋ฅ˜ ํƒ์ง€ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์—
๋ฐœ๊ฒฌ ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜ ์‹๋ณ„
๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐ ๋ณด์•ˆ ์ทจ์•ฝ์  ์‹๋ณ„
ํ™œ์šฉ ์‚ฌ๋ก€ ์ •์  ์ฝ”๋“œ ๊ฒ€์‚ฌ ๋ฐ
์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ
์ฝ”๋“œ ํ๋ฆ„ ๋ถ„์„ ๋ฐ
๋ณด์•ˆ ๊ฒ€์‚ฌ ๋„๊ตฌ
์‹œ๊ฐ„ ๋ฐ ๋น„์šฉ ์ปดํŒŒ์ผ ๋ฐ ๋ถ„์„ ์‹œ๊ฐ„ ์ถ”๊ฐ€ ์‹คํ–‰ ์ค‘ ๋ถ„์„ํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ
์‹คํ–‰ ์‹œ๊ฐ„ ๋™์ž‘ ์ œ์–ด ์˜ํ–ฅ X ๋Ÿฐํƒ€์ž„์— ๋™์  ์กฐ์ž‘ ๊ฐ€๋Šฅ

 

 


 

๐Ÿท ์ •์  ๋ถ„์„(Static Analysis)์˜ ์žฅ·๋‹จ์ 

# ์ •์  ๋ถ„์„_์žฅ์ 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜: https://learn.dreamhack.io/46#5

 

1. ์ดˆ๊ธฐ ์˜ค๋ฅ˜ ์‹๋ณ„
: ์ •์  ๋ถ„์„์€ ์ฝ”๋“œ๊ฐ€ ์ปดํŒŒ์ผ๋˜๊ฑฐ๋‚˜ ๋นŒ๋“œ๋˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ฉฐ, ์ด๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ ์•ˆ์ •์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

2. ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ
: ์ •์  ๋ถ„์„์€ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ, ๋ณต์žก์„ฑ, ๊ฐ€๋…์„ฑ ๋“ฑ์„ ํ‰๊ฐ€ํ•˜๊ณ  ๊ฐœ์„ ์ ์„ ์ œ์•ˆํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

3. ๋ณด์•ˆ ๊ฐ•ํ™”
: ์ •์  ๋ถ„์„์€ ์ฝ”๋“œ์—์„œ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํƒ์ง€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์•…์„ฑ ์ฝ”๋“œ๋‚˜ ๋ณด์•ˆ ์œ„ํ˜‘์„ ์‚ฌ์ „์— ์‹๋ณ„ํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

4. ๋น„์šฉ ์ ˆ๊ฐ
: ์ •์  ๋ถ„์„์€ ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฏ€๋กœ, ์ฐจํ›„ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ž์›์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

5. ๋ณ‘๋ ฌ ๋ถ„์„
: ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์„ ๋ณ‘๋ ฌ๋กœ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 


# ์ •์  ๋ถ„์„_๋‹จ์ 

๋‹จ์  ์„ค๋ช…
์˜ค๋ฅ˜ ๋ฏธํƒ์ง€ ๊ฐ€๋Šฅ์„ฑ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ถ„์„ํ•˜๊ธฐ์—
๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ๋„ ์žˆ์Œ
๋ณต์žก์„ฑ ์ฒ˜๋ฆฌ ์–ด๋ ค์›€ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๊ทœ๋ชจ๊ฐ€ ํฐ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ์˜ ์ •์  ๋ถ„์„์€
๋ถ„์„ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜๊ณ ,
๊ฒฐ๊ณผ ํ•ด์„์— ์–ด๋ ค์›€์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ
๋†’์€ ์ข…์†์„ฑ ์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ํŠน์ • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ํ”Œ๋žซํผ์—
์ข…์†์ ์ด๊ธฐ์—, ํƒ€ ํ™˜๊ฒฝ์—์„œ์˜ ์‹คํ–‰์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Œ

 

 


 

๐Ÿท ๋™์  ๋ถ„์„(Dynamic Analysis)์˜ ์žฅ·๋‹จ์ 

# ๋™์  ๋ถ„์„_์žฅ์ 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜:https://learn.dreamhack.io/46#8

์žฅ์  ์„ค๋ช…
๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ํƒ์ง€ ๊ฐ€๋Šฅ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ์‹ค์ œ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜์™€ ์˜ˆ์™ธ ํƒ์ง€ ๊ฐ€๋Šฅ
์ˆ˜์›”ํ•œ ํ”„๋กœ๊ทธ๋žจ ๋™์ž‘ ํŒŒ์•… ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋žต์ ์ธ ๋™์ž‘์„ ์ฝ”๋“œ ๋ถ„์„ ๊ณผ์ • ์—†์ด ํŒŒ์•… ๊ฐ€๋Šฅ

 


# ๋™์  ๋ถ„์„_๋‹จ์ 

๋‹จ์  ์„ค๋ช…
ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋‚œ์ด๋„ & ์˜์กด์„ฑ ๋ถ„์„ ํ™˜๊ฒฝ ๊ตฌ์ถ•์ด ์–ด๋ ต๊ณ 
์‹คํ–‰ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์ดํ•  ์ˆ˜ ์žˆ์Œ
์‹คํ–‰ ์‹œ๊ฐ„ ์˜ค๋ฒ„ํ—ค๋“œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๊ณผ์ •์—์„œ ์‹œ๊ฐ„ ๋ฐ ์ž์›์„ ์†Œ๋ชจํ•˜์—ฌ
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Œ
์ปค๋ฒ„๋ฆฌ์ง€ ๋ถ€์กฑ ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ
์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ๋ถ€์กฑํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ