SECURITY/REVERSING

REVERSING ์‹œ์ž‘ํ•˜๊ธฐ - ๊ธฐ์ดˆ ๊ฐœ๋… 3 :: Endian

\b\t 2020. 7. 8. 17:13

 

Endian = Endianness

: ์ปดํ“จํ„ฐ์˜ ์—ฐ์†๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ฐฐ์—ดํ•˜๋Š” ๋ฐฉ์‹

(Byte Order : byte ๋ฐฐ์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•)

 

* ์ค‘์š”ํ•œ ์ด์œ 

 ๋‚˜๋ผ๋งˆ๋‹ค ์–ธ์–ด, ์ฑ… ๋“ฑ ์–ด๋””์„œ๋ถ€ํ„ฐ ์ฝ๋Š”์ง€(์™ผ/์˜ค) ๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์žˆ์–ด์„œ๋„ ์–ด๋””์„œ๋ถ€ํ„ฐ ์ฝ์„์ง€์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•œ ๊ทœ์น™์„ ์ •ํ•ด๋‘์–ด์•ผ ํ•œ๋‹ค.

 

* ์œ ๋ž˜

 ์กฐ๋„ˆ์„  ์Šค์œ„ํ”„ํŠธ์˜ <๊ฑธ๋ฆฌ๋ฒ„ ์—ฌํ–‰๊ธฐ> ์˜ ์†Œ์ธ๊ตญ ๋ฆด๋ฆฌํผํŠธ ์ด์•ผ๊ธฐ์—์„œ ๋‹ฌ๊ฑ€์„ ๊นฐ ๋•Œ ๋ญ‰ํˆญํ•œ ๋(big-end) ๋ฅผ ๋จผ์ € ๊นจ๋Š” ์‚ฌ๋žŒ๋“ค(๋น…์—”๋””์–ธ)๊ณผ ๋พฐ์ฃกํ•œ ๋(little-end)๋ฅผ ๋จผ์ € ๊นจ๋Š” ์‚ฌ๋žŒ๋“ค(๋ฆฌํ‹€ ์—”๋””์–ธ) ์‚ฌ์ด์— ๊ฒฉ๋ก ์ด ๋ฒŒ์–ด์ง„ ๋ฐ์„œ ๋”ฐ๋ก  ๊ฒƒ์ด๋‹ค. 

 

 

- Big Endian

: ํฐ ๋‹จ์œ„์˜ ๋ฐ”์ดํŠธ๊ฐ€ ์•ž์— ์˜ค๋Š” ๋ฐฉ๋ฒ• 

ex. 0x34642345 : 34 64 23 45

 

์‚ฌ๋žŒ์ด ์ˆซ์ž๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊ทธ๋ฅผ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•˜์œ„ ๋ฐ”์ดํŠธ๋ฅผ ์–ป์œผ๋ ค๋ฉด ๋ณ€์ˆ˜ ์ฃผ์†Œ์— 2๋ฐ”์ดํŠธ(16 bit) ๋˜๋Š” 3๋ฐ”์ดํŠธ(8 bit) ๋ฅผ ๋”ํ•ด์•ผ ํ•œ๋‹ค.

 

* 'ํฐ ๋‹จ์œ„์˜ ๋ฐ”์ดํŠธ' ๋ผ๋Š” ๊ฒƒ์€ ์ด์ง„์ˆ˜ ์‹œ์ ์—์„œ ๋ณด์•„์•ผ ํ•œ๋‹ค.

0x123456 ์ด๋ผ๋Š” 16์ง„์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ, ์ฃผ์†Œ ์ƒ์œผ๋กœ๋Š” ๋‚ฎ์€ ์ฃผ์†Œ -> ๋†’์€ ์ฃผ์†Œ๋กœ 12 34 56 ์ด ์ €์žฅ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์ง„์ˆ˜์—์„œ๋Š” ์ƒ์œ„ ๋น„ํŠธ๋กœ ๊ฐˆ์ˆ˜๋ก ๊ฐ’์ด ์ปค์ง„๋‹ค.

์ฆ‰, 12 34 56 ์˜ ๋‹จ์œ„๋Š” 2^23 , ... , 2^1, 2^0 ์ด ๋œ๋‹ค!

 

 

- Little Endian

: ์ž‘์€ ๋‹จ์œ„์˜ ๋ฐ”์ดํŠธ๊ฐ€ ์•ž์— ์˜ค๋Š” ๋ฐฉ๋ฒ•

ex. 0x34642345 : 45 23 64 34

 

๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๊ฐ’์˜ ํ•˜์œ„ ๋ฐ”์ดํŠธ๋“ค๋งŒ ์‚ฌ์šฉํ•  ๋•Œ ๋ณ„๋„์˜ ๊ณ„์‚ฐ์ด ํ•„์š” ์—†๋‹ค.

ex. 0x 3B :: 3B 00 00 00

์ฆ‰, ํ•˜์œ„ ๋ฐ”์ดํŠธ๋ฅผ ์–ป๊ธฐ ํŽธํ•˜๋‹ค.

 

 

์ด ๋‘˜์ด ๋ฐฐ์—ด์—์„œ์˜ ์ €์žฅ์€ ์ €์žฅ ๋ฐฉ์‹์ด ๋‹ค๋ฅธ๊ฑฐ์ง€ ์ถœ๋ ฅํ•ด๋ณด๋ฉด ๋˜‘๊ฐ™์Œ

 

4byte ์”ฉ ๋Š์–ด์„œ ์ €์žฅํ•œ๋‹ค. word ๋‹จ์œ„๋ผ์„œ !! 32 bit~

 

 

- ๊ทธ๋ฆฌ๊ณ  ๊ฐ endian ๋“ค์˜ ํ™œ์šฉํ•˜๋Š” ๋ถ„์•ผ

 

Big Endian Little Endian
UNIX ์—์„œ ์‚ฌ์šฉํ•˜๋Š” RISC ํ”„๋กœ์„ธ์„œ์—์„œ ์‚ฌ์šฉ Intel ๊ณ„์—ด์˜ ํ”„๋กœ์„ธ์„œ์—์„œ ์‚ฌ์šฉ
๋„คํŠธ์›Œํฌ์—์„œ ์‚ฌ์šฉ  
์•ž์—์„œ๋ถ€ํ„ฐ Stack ์— PUSH ๋’ค์—์„œ๋ถ€ํ„ฐ Stack ์— PUSH (๋” ๋А๋ฆฌ๋‹ค)
๋น„๊ต ์—ฐ์‚ฐ์— ์šฉ์ด ์ˆ˜์น˜ ์—ฐ์‚ฐ์— ์šฉ์ด (CARRY ๋ฐœ์ƒ ์‹œ)
  ํƒ€์ž…์„ ์ฝ๊ฑฐ๋‚˜ ํ˜•๋ณ€ํ™˜ ์‹œ ์šฉ์ด

Littel Endian ์€ ์ž‘์€ ์ˆ˜๋ถ€ํ„ฐ ์˜ฌ๋ฆผ์ˆ˜๋ฅผ ํŒ๋‹จ ํ›„ ํฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ฏ€๋กœ ์ˆ˜์น˜ ์—ฐ์‚ฐ์ด ๋น ๋ฅด๋‹ค.

๋ฐ˜๋ฉด ์ˆซ์ž๋ฅผ ๋น„๊ตํ•  ๋• ํฐ ์ž๋ฆฟ์ˆ˜๋ถ€ํ„ฐ ๋น„๊ตํ•˜์—ฌ ์•ž์—์„œ๋ถ€ํ„ฐ Stack ์— PUSH ํ•˜๋Š” Big Endian ์ด ๋” ๋น ๋ฅด๋‹ค.

 

์˜ค๋Š˜๋‚ ์—๋Š” ํ”„๋กœ์„ธ์„œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ”์ดํŠธ๋ฅผ ๋™์‹œ์— ์ฝ์–ด๋“ค์—ฌ ๋ง์…ˆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋‘ Endian ์‚ฌ์ด์— ์‚ฌ์‹ค์ƒ ์ฐจ์ด๊ฐ€ ์—†๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.