์ƒˆ์†Œ์‹

Languages/Android

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ ์ดํ•ด

  • -
๋ฐ˜์‘ํ˜•

https://greenhelix.tistory.com/164

 

์•ˆ๋“œ๋กœ์ด๋“œ ๋ชจ๋“  ๊ธ€์€ ๊ฐœ์ธ ๊ณต๋ถ€, ๊ฐœ๋ฐœ ๋ชฉ์ ์ด๋ผ ๊ฐœ๋…์— ๋Œ€ํ•œ ์„ค๋ช…์ด ์ œ๋Œ€๋กœ ๋“ค์–ด๊ฐ€์ง€ ์•Š์œผ๋‹ˆ, ์ฐธ๊ณ ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.


 

 

์•ˆ๋“œ๋กœ์ด๋“œ

- ๋ฒ„์ „๋ณ„๋กœ ๋ณด์•ˆํ•  ๊ฒƒ๋“ค์ด ๋‹ค๋ฆ„ 

 

 

์•ˆ๋“œ๋กœ์ด๋“œ ์šด์˜์ฒด์ œ 

- ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ํ”Œ๋žซํผ.(์ปค๋„๊ธฐ๋ฐ˜ ์˜คํ”ˆ์†Œ์Šค ํ”Œ๋žซํผ)

 

๋ชจ๋ฐ”์ผ ์šด์˜์ฒด์ œ ์—ญํ• 

- ๊ตฌ๊ธ€ ํ”Œ๋ ˆ์ด ์Šคํ† ์–ด ๋ฐ ๊ธฐํƒ€ ๋งˆ์ผ“ ํ”Œ๋ ˆ์ด์Šค๋ฅผ ํ†ตํ•œ ํƒ€์‚ฌ ์•ฑ ์„ค์น˜๋ฅผ ์ง€์›ํ•จ

- iot, ๋“œ๋ก , tv ๋ฐ ๊ธฐํƒ€ ์Šค๋งˆํŠธ ๋””๋ฐ”์ด์Šค ๋“ฑ ์ตœ์‹  ๊ธฐ์ˆ ๋“ค๋„ ๋‹ค ๋ฆฌ๋ˆ…์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ.

 

์•ˆ๋“œ๋กœ์ด๋“œ ์šด์˜์ฒด์ œ ๊ตฌ์กฐ(์•„ํ‚คํ…์ณ)

์ œ์ผ ์•„๋ž˜๋ถ€ํ„ฐ

- ๋ฆฌ๋ˆ…์Šค ์ปค๋„

- HAL(ํ•˜๋“œ์›จ์–ด ์ถ”์ƒํ™” ๊ณ„์ธต)

- Android ๋Ÿฐํƒ€์ž„

- ๋„ค์ดํ‹ฐ๋ธŒ C/C++๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

- Java API ํ”„๋ž˜์ž„ ์›Œํฌ

- ์‹œ์Šคํ…œ ์•ฑ

 

์•ˆ๋“œ๋กœ์ด๋“œ ์‹คํ–‰ํŒŒ์ผ ->apk์ž„.

c/c++ ์€ Livraries์•ˆ์— ์žˆ์Œ. ->.so ํŒŒ์ผ

 

 

์•ฑ ์ปดํฌ๋„ŒํŠธ (๊ตฌ์„ฑ์š”์†Œ)

- ์•ฑ ์ปดํฌ๋„ŒํŠธ๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์˜ ํ•„์ˆ˜์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ฐ ๋…๋ฆฝ๋œ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋ฉฐ ์ •ํ•ด์ง„ ์—ญํ• ์„ ์ˆ˜ํ–‰

- ๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋Š” ์‹œ์Šคํ…œ์ด๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์— ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ง„์ž…์ 

- ์ธํ…ํŠธ๋Š” ๋‹ค๋ฅธ ์•ฑ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง• ๊ฐ์ฒด

 

https://www.google.com/url?sa=i&url=http%3A%2F%2Fm.blog.naver.com%2Fiedddwww%2F220865288769&psig=AOvVaw3IHuMEcA1lDmfKX5YcRlQj&ust=1615827027802000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPC67POesO8CFQAAAAAdAAAAABAK

 

์•กํ‹ฐ๋น„ํ‹ฐ

- ๋ˆˆ์— ๋ณด์ด๋Š” ํ™”๋ฉด์ž„

- ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ง„์ž…์ 

- ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํฌํ•จํ•œ ํ™”๋ฉด ํ•˜๋‚˜๋ฅผ ๋‚˜ํƒ€๋ƒ„

- ๊ฐ ์—ญํ• ๋งˆ๋‹ค ์•กํ‹ฐ๋น„ํ‹ฐ ํ•˜๋‚˜ ์กด์žฌ

- ์–ด๋– ํ•œ ์•ฑ์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์•ฑ์—์„œ ์ด์™€ ๊ฐ™์€ ์•กํ‹ฐ๋น„ํ‹ฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋™์ž‘ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ(์—ฐ๊ฒฐ๋˜์–ด์žˆ์Œ)

 

 

์„œ๋น„์Šค

- ๋ฐฑ ๊ทธ๋ผ์šด๋“œ์—์„œ ์•ฑ์„ ๊ณ„์† ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค๋ชฉ์  ์ง„์ž…์ 

- ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(UI)๋Š” ์ œ๊ณตํ•˜์ง€ ์•Š์Œ

-์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์•ฑ์— ์žˆ๋Š” ๋™์•ˆ์— ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์Œ์•…์„ ์žฌ์ƒํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž ์•กํ‹ฐ๋น„ํ‹ฐ ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ.

 

 

๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๋ฆฌ์‹œ๋ฒ„

- ์‹œ์Šคํ…œ์ด ์ •๊ธฐ์ ์ธ ์‚ฌ์šฉ์ž ํ”Œ๋กœ์šฐ ๋ฐ–์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์•ฑ์— ์ „๋‹ฌํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ

- ๋Œ€๋‹ค์ˆ˜์˜ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ ๋ฐœ์ƒ(ํ™”๋ฉด ๊บผ์ง, ๋ฐฐํ„ฐ๋ฆฌ ๋ถ€์กฑ, ์‚ฌ์ง„ ์บก์ณ ์•Œ๋ฆผ ๋“ฑ)

- ์ผ๋ฐ˜ ์•ฑ๋„ ๋ธŒ๋กœ๋“œ ์บ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์ง€๋งŒ, ์ƒํƒœ ํ‘œ์‹œ์ค„ ์•Œ๋ฆผ์„ ์ƒ์„ฑ

 

์ฝ˜ํ…์ธ  ํ”„๋กœ๋ฐ”์ด๋”

- ์ฝ˜ํ…์ธ  ์ œ๊ณต์ž๋Š” ํŒŒ์ผ์‹œ์Šคํ…œ, SQLite ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค, ์›น์ƒ์ด๋‚˜ ์•ฑ์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์˜๊ตฌ ์ €์žฅ์†Œ์— ์ €์žฅ๊ฐ€๋Šฅํ•œ ์•ฑ ๋ฐ์ดํ„ฐ์˜ ๊ณต์œ ํ˜• ์ง‘ํ•ฉ์„ ๊ด€๋ฆฌํ•จ

- ๋‹ค๋ฅธ ์•ฑ์€ ์ปจํ…์ธ  ์ œ๊ณต์ž๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ฑฐ๋‚˜, ์ฝ˜ํ…์ธ  ์ œ๊ณต์ž๊ฐ€ ํ—ˆ์šฉํ•  ๊ฒฝ์šฐ ์ˆ˜์ • ๊ฐ€๋Šฅ

- ๋ฐ์ดํ„ฐ ์ •๋ณด๋“ค์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.(ํƒ€์‚ฌ ๋ฐ์ดํ„ฐ ์ •๋ณด๋ฅผ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋‹จ ์†Œ๋ฆฌ)

 

 

-> 4๋Œ€ ์ปดํฌ๋„ŒํŠธ์— ๋”ฐ๋ผ ์ทจ์•ฝ์ ์ด ๊ฐ์ž ๋ฐœ์ƒํ•จ.

 

 

์•ˆ๋“œ๋กœ์ด๋“œ ๋ฃจํŒ…

 

๋ฃจํŒ…?

- ๋ชจ๋“  ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒŒ๋“œ๋ฐ•์Šค๋„ ๊นจ์ง€์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ๋‹ค๋ฅธ ์•ฑ๋“ค์— ๋Œ€ํ•ด ๊ถŒํ•œ์„ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์—†๋‹จ ๊ฒƒ์ด๋‹ค.

์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒŒ๋“œ๋ฐ•์Šค๋ฅผ ๋ฒ—์–ด๋‚˜๋ ค๋ฉด) ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๋ณด์•ˆ์„ ์†์ƒ์‹œ์ผœ์•ผํ•œ๋‹ค .๊ฒฐ๊ตญ ํ”Œ๋žซํผ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ด๋•Œ ์ด ๋ณ€๊ฒฝ์ž‘์—…์ด ๋ฐ”๋กœ "๋ฃจํŒ…"์ด๋‹ค.

 

๋ฃจํŒ…์„ ํ•˜๋Š” ์ด์œ 

- ์ตœ๊ณ  ๊ถŒํ•œ(์ตœ๊ณ  ์‚ฌ์šฉ์ž์ž„)

- rootingํ•˜๋ฉด ์‹คํ–‰ ์ค‘์ธ ๋ชจ๋“  ์•ฑ์—์„œ root ๊ถŒํ•œ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•จ.

- ๋” ์•„๋ฆ„๋‹ค์šด ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด

- ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋ชฉํ‘œ๊ฐ€ ๋‹ค๋ฆ„

- ๋ฃจํŠธ ๊ถŒํ•œ ์—†์ด ์„ค์น˜ํ•  ์ˆ˜ ์—†๋Š” ์•ฑ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ->๋ถˆ๋ฒ• ์•ฑ๋“ค 

- ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ์•ฑ์„ ๊ฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•ด(์นจํˆฌ ํ…Œ์ŠคํŠธ ๋ชฉ์ ) ->๋ชจ์˜ํ•ดํ‚น, ์ทจ์•ฝ์  ๋ถ„์„์„ ํ•˜๊ธฐ ์œ„ํ•ด

 

๊ฒฐ๊ตญ ์•ˆ๋“œ๋กœ์ด๋“œ ์šด์˜ ์ฒด์ œ ์ƒ์—์„œ ์ตœ์ƒ์œ„ ๊ถŒํ•œ์„ ์–ป์Œ์œผ๋กœ ํ•ด๋‹น ๊ธฐ๊ธฐ์˜ ์ƒ์‚ฐ์ž ๋˜๋Š” ํŒ๋งค์ž ์ธก์—์„œ

๊ฑธ์–ด๋†“์€ ์ œ์•ฝ์„ ํ•ด์ œํ•˜๋Š” ํ–‰์œ„๋ฅผ "๋ฃจํŒ…"์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ฃจํŒ…

- ์ผ๋ฐ˜์ ์œผ๋กœ ๋””๋ฐ”์ด์Šค๋ฅผ ๊ตฌ๋งคํ•  ๋•Œ ๊ธฐ์ˆ ์ ์œผ๋กœ ์‚ฌ์šฉ์ž๋Š” ๋””๋ฐ”์ด์Šค ์†Œ์œ ์ž๊ฐ€ ์•„๋‹˜

- ๋ฃจํŠธ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์–ป์–ด ๋””๋ฐ”์ด์Šค๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ๋ฃจํŒ…!

- ๋ฃจํŒ…๋œ ๋””๋ฐ”์ด์Šค์—์„œ $๊ฐ€ ์•„๋‹Œ #๋ฃจํŠธ ์‰˜์„ ๊ฐ€์ง„ UID ๊ฐ’ 0์ด ์กด์žฌ

 

๋ฃจํŒ… ์žฅ์ 

- ์žฅ์น˜์— ๋Œ€ํ•œ ๋ฌด์ œํ•œ ์ œ์–ด 

- ์ถ”๊ฐ€ ์•ฑ ์„ค์น˜ (์ œํ•œ x) ->busyBox

- ๋” ๋งŽ์€ ๊ธฐ๋Šฅ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜

 

๋ฃจํŒ… ๋‹จ์ 

- ๋””๋ฐ”์ด์Šค ๋ณด์•ˆ์„ ์†์ƒ์‹œํ‚ด 

  ๊ธฐ๋ณธ์ ์œผ๋กœ ์•ฑ์€ ๋ณ„๋„์˜ ์‚ฌ์šฉ์ž ์•„์ด๋””๊ฐ€ ํ• ๋‹น๋œ ์ž์ฒด ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด์—์„œ ์‹คํ–‰๋จ

  ํ•˜์ง€๋งŒ, ๋ฃจํŒ…๋œ ๋””๋ฐ”์ด์Šค์—์„œ ๋ฃจํŠธ ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ์•…์„ฑ์•ฑ์—๋Š” ์ด ์ œํ•œ์ด ์—†์–ด ์‹คํ–‰์ค‘์ธ ๋‹ค๋ฅธ ์•ฑ์—์„œ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ฐ€๋Šฅ.

 

์ฆ‰ ๊ด€๋ฆฌ์ž๋กœ ์ ‘๊ทผ์ด ๋œ๋‹ค๋ฉด ์‹œ์Šคํ…œ์— ์ค‘์š” ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ์œ„ํ—˜ํ•œ ๊ฒƒ์ž„.

 

- ์žฅ์น˜ ๋ฒฝ๋Œ

  ๋ฃจํŒ… ํ”„๋กœ์„ธ์Šค๋Š” ๋””๋ฐ”์ด์Šค ์†์ƒ์‹œ์ผœ ์“ธ๋ชจ ์—†๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ

 

- ๋ฌดํšจ ๋ณด์ฆ 

  ๋ฃจํŒ…๋œ ๋””๋ฐ”์ด์Šค๋Š” ๋ณด์ฆ์ด ๋ฌดํšจํ™”๋จ

  ๋ฃจํŒ…ํ•œ ํ›„์—๋Š” ๋ณด์ฆ๊ธฐ๊ฐ„ ์ค‘์ด์–ด๋„ ์ˆ˜๋ฆฌ๋น„์šฉ์„ ์ง€๋ถˆ ํ•  ์ˆ˜ ์žˆ์Œ.

 

Jvm & Dvm

jvm : ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  (java virtual machin)

 

- ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ 

- ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” jvm์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ jvm๋งŒ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์–ด๋Š ์šด์˜์ฒด์ œ์—์„œ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ

 

https://www.google.com/url?sa=i&url=http%3A%2F%2Fm.blog.naver.com%2Fweb4click%2F110159692556&psig=AOvVaw18D5DXzBxyW3uRAqXyZpWm&ust=1615827235156000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCLDzxdSfsO8CFQAAAAAdAAAAABAD

-jVM์€ ํ”Œ๋žซํผ์— ์˜์กด์  

- ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ 

 

๋‹ฌ๋น… ๊ฐ€์ƒ๋จธ์‹  (dvm)

 

- ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ฌ๋น… ๊ฐ€์ƒ ๋จธ์‹ 

- ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค ํ™˜๊ฒฝ์— ์ตœ์ ํ™”๋˜์–ด ๊ฐœ๋ฐœ๋œ ๊ฐ€์ƒ๋จธ์‹ ์œผ๋กœ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹คํ–‰๋˜๋„๋ก ์„ค๊ณ„๋จ (๋ฐฐํ„ฐ๋ฆฌ ์ˆ˜๋ช…, ์„ฑ๋Šฅ ๋ฌธ์ œ)

- ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๋™์ผํ•œ ๊ณผ์ •์„ ๊ฑฐ์นœ ํ›„ ์ถ”๊ฐ€์ ์ธ ๋‹จ๊ณ„ ์ง„ํ–‰

 

.class = ํŒŒ์ผ์€ ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ

.java = ์ž๋ฐ” ์†Œ์Šค ์ฝ”๋“œ

 

์•„๋ž˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด jvm ๊ณผ java ์ปดํŒŒ์ผ๋Ÿฌ, ๋ฐ”์ดํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์‰ฌ์›Œ์งˆ ๋“ฏ ํ•˜๋‹ค.

www.tcpschool.com/java/java_intro_programming

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

์œ„ ๋‘๊ฐœ์˜ ๋น„๊ต(jvm &dvm)

- ์Šคํƒ ๊ธฐ๋ฐ˜ & ๋ ˆ์ง€์Šคํ„ฐ ๊ธฐ๋ฐ˜

- Dalvik์˜ ๋ช…๋ น์–ด ์ˆ˜๊ฐ€ ๋” ์ ๊ณ , ์ฝ”๋“œ ๊ธธ์ด๋Š” ๋” ๊ธธ๋‹ค.(ํšจ์œจ์„ฑ๊ณผ ์†๋„)

 

 

 

์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ๋ฒ„์‹ฑ

์ถœ์ฒ˜: www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?curPage=1&seq=21051

 

[Tech Report] ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ๋ฒ„์‹ฑ ๋ถ„์„

์•ˆ๋“œ๋กœ์ด๋“œ ํฌ๋ Œ์‹ ํ•ด๋ถ€์˜ ๋งˆ์ง€๋ง‰ ์—ด์‡  ์›”๊ฐ„ ์•ˆ์—์„œ๋Š” ์ง€๋‚œ 3์›”ํ˜ธ๋ถ€ํ„ฐ ์•ˆ๋“œ๋กœ์ด๋“œ ํฌ๋ Œ์‹์„ ์ž..

www.ahnlab.com

(์œ„ ์ฃผ์†Œ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋ฉด ๋งค์šฐ ๋งŽ์€ ๋„์›€์ด ๋  ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.)

 

์•ˆ๋“œ๋กœ์ด๋“œ ํ™˜๊ฒฝ์—์„œ ‘๋ฆฌ๋ฒ„์‹ฑ’์ด๋ž€ ์•ˆ๋“œ๋กœ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์น˜ ํŒŒ์ผ์ธ APK(Android Package File) ํŒŒ์ผ์„ ๋ฆฌ๋ฒ„์‹ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. APK ํŒŒ์ผ์€ DEX(Dalvik Executable) ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋“ค๋กœ ๊ตฌ์„ฑ๋ผ ์žˆ๋Š” ์••์ถ• ํŒŒ์ผ์ด๋‹ค. ๋˜ํ•œ DEX ํŒŒ์ผ์€ ์ž๋ฐ” ํด๋ž˜์Šค ํŒŒ์ผ์„ ์•ˆ๋“œ๋กœ์ด๋“œ ๋‹ฌ๋น…(Dalvic) ๊ฐ€์ƒ๋จธ์‹ ์—์„œ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณ€ํ™˜ํ•œ ํŒŒ์ผ์ด๋‹ค.

๊ตฌ์กฐ ์•Œ์•„๋ณด๊ธฐ
์•ˆ๋“œ๋กœ์ด๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒŒ์ผ์ธ APK(Android PacKage)ํŒŒ์ผ์€ zip๊ณผ ๊ฐ™์€ ํ•˜๋‚˜์˜ ์••์ถ• ํŒŒ์ผ์ด๋‹ค.
์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๊ด€๊ณ„๋œ ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜๋กœ ์••์ถ•ํ•ด ๋†“์€ ํŒŒ์ผ์ผ ๋ฟ์ด๊ธฐ ๋•Œ๋ฌธ์—. ์••์ถ• ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์••์ถ•์„ ํ’€์ˆ˜ ์žˆ๋‹ค.
 
APKํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง€๋Š” ๊ตฌ์กฐ๋„๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

https://blog.naver.com/gigar/60115566766
apkํŒŒ์ผ์˜ ์••์ถ•์„ ํ’€๋ฉด ๋‚˜์˜ค๋Š” .dex ํŒŒ์ผ์€ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ€์ƒ ๋จธ์‹ ์ธ dalvik์ด ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก classํŒŒ์ผ์„ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œํ‚จ ํŒŒ์ผ์ด๋‹ค. .dex ํŒŒ์ผ์„ jvm ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋””์ปดํŒŒ์ผ ํ•˜์—ฌ .class ํŒŒ์ผ์„ ์ถ”์ถœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์•ˆ๋“œ๋กœ์ด๋“œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ java ์ฝ”๋“œ์˜ ์ถ”์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
 
ํ•จ๊ป˜ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ์‚ฌ์ดํŠธ
https://yhy868700.tistory.com/153
https://source.android.com/devices/tech/dalvik/dex-format

JAR, AAR, DEX, APK ์ฐจ์ด์  : https://simsi6.tistory.com/10

++๋‚ด๊ฐ€ ํ—ท๊ฐˆ๋ ค์„œ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„๋ณธ ๊ฒƒ.
apk -> java?
apk ํŒŒ์ผ์„ java ์ฝ”๋“œ๋กœ ๋ณด๋ ค๋ฉด .dex ํŒŒ์ผ์„ dex2jar๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .jar ํŒŒ์ผ๋กœ ๋””์ปดํŒŒ์ผํ•œ ํ›„
.jar(.class ํŒŒ์ผ๋“ค์˜ ๋ชจ์Œ) ํŒŒ์ผ์„ .java ํŒŒ์ผ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. 


jar : classํŒŒ์ผ์˜ ๋ชจ์Œ, ์ฆ‰ dex ํŒŒ์ผ์„ ๋‹ค์‹œ jar๋กœ ๋ฐ”๊พธ์–ด ์ค˜์•ผ ํ•จ-> jar๋ฅผ jd๋กœ ์ปดํŒŒ์ผ ํ›„ java ํŒŒ์ผ ํš๋“!
dex: ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ€์ƒ ๋จธ์‹ ์ธ dalvik์ด ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก classํŒŒ์ผ์„ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œํ‚จ ํŒŒ์ผ
Smali : ‘An assembler/disassembler for Android's dex format’์˜ ์•ฝ์ž๋กœ, DEX ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. C์™€ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด์˜ ๊ด€๊ณ„์™€ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. 


์ฝ”๋“œ ํŒจ์น˜๋ฅผ ํ•˜๋ ค๋ฉด ๋ฌด์กฐ๊ฑด smali code๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋ฆฌํŒจํ‚ค์ง•ํ•ด์•ผ ํ•จ.
๋ณดํ†ต jadx๋‚˜ jeb๋กœ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•œ ํ›„ smali code๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค.


์ด์— ๋”ฐ๋ผ ์ž๋ฐ” ํ™˜๊ฒฝ์—์„œ์˜ ๋ฆฌ๋ฒ„์‹ฑ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ๋ฒ„์‹ฑ์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ž๋ฐ” ํ™˜๊ฒฝ์—์„œ ๋ฆฌ๋ฒ„์‹ฑ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


๊ธฐ์กด์˜ ์ž๋ฐ” ํ™˜๊ฒฝ์—์„œ์˜ ๋ฆฌ๋ฒ„์‹ฑ์€ ‘์ž๋ฐ” ๋””์ปดํŒŒ์ผ๋Ÿฌ(Java Decomplier)’๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ž˜์Šค ํŒŒ์ผ์ด ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค ํŒŒ์ผ(.Java)๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋ถ„์„๊ฐ€๋Š” ์ด๋ ‡๊ฒŒ ๋ณ€ํ™˜๋œ ์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ์„ ํ†ตํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์™€ ์‹คํ–‰ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.


 

์ž๋ฐ” ๋ฆฌ๋ฒ„์‹ฑ ๊ฐœ๋…

 

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

 

์•ˆ๋“œ๋กœ์ด๋“œ ๋ฆฌ๋ฒ„์‹ฑ ๊ฐœ๋…

 

 

ART

- ์•ˆ๋“œ๋กœ์ด๋“œ ๋Ÿฐํƒ€์ž„

- ํผํฌ๋„Œ์Šค ๊ฐœ์„  ๋“ฑ์„ ์œ„ํ•ด ๊ตฌ๊ธ€์ด DVM์—์„œ ART ๋กœ ๋ณ€๊ฒฝ

- ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋‘๊ฐ€์ง€์˜ ์ปดํŒŒ์ผ ๋ฐฉ์‹์ธ JIT์™€ AOT๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ.

 

 

Jit(just-in -time)์ปดํŒŒ์ผ

- ์•ฑ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ ์ปดํŒŒ์ผ ์ˆ˜ํ–‰

- ์šฉ๋Ÿ‰ ํฌ๊ณ  ์„ค์น˜ ์†๋„ ๋น ๋ฆ„ (์žฅ์ )

- ์‹คํ–‰์†๋„ ๋Š๋ฆฌ๊ณ  ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ,cpu์‚ฌ์šฉ๋Ÿ‰ ์ด ๋งŽ์Œ (๋‹จ์ )

 

Aot(ahead-of-time)์ปดํŒŒ์ผ

- ์•ฑ ์„ค์น˜ ์‹œ์ ์—์„œ ์ปดํŒŒ์ผ ์ˆ˜ํ–‰, ์ „๋ ฅ ์†Œ๋น„๋ฅผ ์ค„์ด๋ฉด์„œ ์„ฑ๋Šฅ์„ 2๋ฐฐ ํ–ฅ์ƒ ์‹œํ‚ด

- ์‹คํ–‰์†๋„ ๋น ๋ฅด๊ณ  ๋ฐฐํ„ฐ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ , cpu์‚ฌ์šฉ์ด ์ ์Œ (์žฅ์ )

- ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ์„ค์น˜ ์†๋„๊ฐ€ ๋Š๋ฆผ (๋‹จ์ )ใ…

 

jar(์ž๋ฅด)ํŒŒ์ผ์ด ๊ฒฐ๊ตญ exe๊ฐ™์€ ์‹คํ–‰ํŒŒ์ผ(์ž๋ฐ”) ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.