์ƒˆ์†Œ์‹

Languages/Android

[Android] ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์ทจ์•ฝ์  ์ง„๋‹จ ๋ถ„์„ ๋„๊ตฌ ์†Œ๊ฐœ

  • -
๋ฐ˜์‘ํ˜•

์ธ์‹œํ์–ด ๋ฑ…ํฌ ๊ฐ•์˜ ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 


์ทจ์•ฝ์  ์ง„๋‹จ ๋ถ„์„ ๋„๊ตฌ ์†Œ๊ฐœ

 

์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ์ทจ์•ฝ์  ์ง„๋‹จ ๋ถ„์„ ๋„๊ตฌ๋ฅผ ์†Œ๊ฐœํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

์ •์  ๋ถ„์„ ๋„๊ตฌ ์†Œ๊ฐœ

 

ADB : Android Debug Bridge

- ์•ˆ๋“œ๋กœ์ด๋“œ ๋‹จ๋ง๊ธฐ์™€ ๋ฐ์Šคํฌํ†ฑ ๊ฐ„์— ํ†ต์‹ ์„ ํ•  ๋•Œ ํ•„์š”ํ•œ ๋„๊ตฌ.

 

apktool

- apkํŒŒ์ผ์„ ๋””์ปดํŒŒ์ผ ํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ ์ถ”์ถœ (classes.dex)

- ์œ„์˜ ์†Œ์Šค์ฝ”๋“œ(classes.dex)๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.(patch)  ์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ apk๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ๋ฆฌํŒจํ‚ค์ง•(patched apk file)์ด๋ผํ•จ.

 

dex2jar

- dex file to jar 

- dex(Dalvik Excutable์˜ ์•ฝ์ž) file์„ jar(java Byte Code) file๋กœ ๋ฐ”๊พธ์–ด ์ฃผ๋Š” ์—ญํ• ์„ ํ•จ.

 

jd-gui

- jar file์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” viewer์—ญํ• 

- ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ๋ณ€์ˆ˜ ์ด๋ฆ„๊นŒ์ง€ ๋˜‘๊ฐ™์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ -> ์†Œ์Šค์ฝ”๋“œ ๋ณด๊ธฐ ํŽธํ•ด์ง.

 

Eclipse ADP(Android Developer Toolkit)

- ide(ํ†ตํ•ฉ ๊ฐœ๋ฐœํ™˜๊ฒฝ) ๊ฐœ๋ฐœ๋„๊ตฌ

 

๋™์  ๋ถ„์„ ๋„๊ตฌ ์†Œ๊ฐœ

android-Logviewer / adb -d logcat / DDMS

- ๋กœ๊ทธ ํ™•์ธํ•˜๋Š” ํˆด

- ์•ฑ ๋ถ„์„(ํฌ๋ž˜ํ‚น)์— ์šฉ์ดํ•œ ์ •๋ณด ์ถœ๋ ฅ

 

log ๋ถ„์„์„ ํ•˜๋Š” ์ด์œ ?

์–ด๋–ค ๊ฐ’์ด ์ „๋‹ฌ ๋˜๋Š”๋ฐ ๊ทธ ๊ฐ’์„ ๋ชจ๋ฅผ ๋•Œ --> ๋กœ๊ทธ๋‚˜ ์ฃผ์„์ฒ˜๋ฆฌ ๋“ฑ 

 

Fiddler(ํ”„๋ก์‹œ ํˆด)

ํ”„๋ก์‹œ ํˆด์ž„, ๋ฒ„ํ”„์ŠˆํŠธ(burp suite)๋„ ๊ฐ€๋Šฅ.

 

 

์œ„์— ๋„๊ตฌ๋“ค์€ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ค ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์‹œ ํ•„์š”ํ•˜์‹œ๋‹ค๋ฉด ๋Œ“๊ธ€ ์ฃผ์‹œ๋ฉด ๋ฉ”์ผ๋กœ ์œ„์— ๋„๊ตฌ๋“ค ๋‹ค .zip์œผ๋กœ ๋ณด๋‚ด๋“œ๋ฆด๊ป˜์š”~~

 

์•ˆ๋“œ๋กœ์ด๋“œ ์ž๋™ ๋ถ„์„ ํˆด 

- QARK

- MobSF

- APPUSE

- Insoeckage

- Androbus

 

๋“ฑ๋“ฑ ๋ชจ๋ฐ”์ผ ์ฑ…์— ๋ณด๋ฉด ๋งŽ์Œ, ์ฑ…์€ "์•ˆ๋“œ๋กœ์ด๋“œ ๋ชจ๋ฐ”์ผ ์•ฑ ๋ชจ์˜ํ•ดํ‚น"

์œ„ ๋„๊ตฌ๋“ค์˜ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ด๋ฒˆ ํฌ์ŠคํŒ… ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ  ๊ต์žฌ ์‹ค์Šต ์‹œ ์ œ๋Œ€๋กœ ํฌ์ŠคํŒ… ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜๋Š” ์œ„์— ์„ค๋ช…ํ•œ "์ทจ์•ฝ์  ์ง„๋‹จ ๋„๊ตฌ(์ •์  & ๋™์ )"๋“ค์˜ ๋Œ€ํ•œ ์กฐ๊ธˆ ๋” ์ž์„ธํ•œ ์„ค๋ช…์„ ๋‹ค๋ฃฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋””์ปดํŒŒ์ผ ํˆด 

๋””์ปดํŒŒ์ผ ํˆด์ด๋ž€?

๊ฐ„๋‹จํžˆ ๋งํ•ด ๋ช‡๋ช‡ ํ”„๋กœ๊ทธ๋žจ๊ณผ apkํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์›๋ณธ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ๋ณต์› ํ•˜๋Š” ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ.

๋‚œ๋…ํ™” ๋“ฑ ๋ณ„๋„์˜ ๋ณด์•ˆ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ apk ๋ถ„ํ•ด ๊ฐ€๋Šฅ

(Jeb2 ์™€ ๊ฐ™์€ ์œ ๋ฃŒ ํˆด์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‚œ๋…ํ™” ํ•ด์ œ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ ์ข‹์€ ๊ธฐ๋Šฅ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ )

 

์ข…๋ฅ˜:

  •  jadx
    • ์•„๋ž˜ ์ฐธ๊ณ  ๊ธ€ ํ™•์ธํ•˜๊ธฐ
jadx๋ฅผ ์ด์šฉํ•œ APK ํŒŒ์ผ ๋ถ„์„

jadx๋Š” APK ํŒŒ์ผ๊ณผ DEXํŒŒ์ผ์„ ๋น ๋ฅด๊ฒŒ ๋””์ปดํŒŒ์ผ ํ•ด์ค€๋‹ค. ์ด์ œ๊นŒ์ง€ ์†Œ๊ฐœํ•œ ๋„๊ตฌ๋“ค ์ค‘์—์„œ ์ œ์ผ ๋น ๋ฅธ ๋””์ปดํŒŒ์ผ ์†๋„๋ฅผ ๋‚ด๊ณ  ์žˆ๋‹ค. ByteCodeViewer์™€ ๋น„๊ตํ•ด์„œ ์„œ๋กœ ์žฅ๋‹จ์ ์ด ์žˆ์ง€๋งŒ, ์ž๋ฐ” ์ฝ”๋“œ๋งŒ ๋ถ„์„์„ ํ•  ๋•Œ๋Š” jadx๋ฅผ ์ถ”์ฒœํ•œ๋‹ค.

ํŠนํžˆ jadx์˜ ์ฝ”๋“œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์€ ๋‹ค๋ฅธ ๋””์ปดํŒŒ์ผ ๋„๊ตฌ๋ณด๋‹ค ๋งค์šฐ ํƒ์›”ํ•˜๋‹ค. ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋‚ด๋ถ€์ ์œผ๋กœ ๋””์ปดํŒŒ์ผ ์ž‘์—…์ด ์ƒ์„ธํ•˜๊ฒŒ ์ด๋ฃจ์–ด์ง€๋ฉด์„œ ๊ด€๋ จ ์ •๋ณด๋“ค์„ ๋ฏธ๋ฆฌ ํŒŒ์•…ํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ํ•ด์ค€๋‹ค.

์ฒ˜์Œ์—๋Š” ๋””์ปดํŒŒ์ผ๊ณผ ์ธ๋ฑ์‹ฑ ์ž‘์—…์œผ๋กœ ๋‹ค์†Œ ์‹œ๊ฐ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์ง€๋งŒ, “root”๋ผ๋Š” ๋ฌธ์ž๋ฅผ ํด๋ž˜์Šค์™€ ์ฝ”๋“œ ๋‚ด์—์„œ ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ธ๋‹ค. ์ทจ์•ฝ์  ์ง„๋‹จ์„ ํ•  ๋•Œ ๋ฃจํŒ… ์ฒดํฌํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ์ด๋ฅผ ์šฐํšŒํ•˜๋Š” ๊ฒƒ์ธ ์ฒซ๋ฒˆ์งธ ์ž‘์—…์ด๋‹ค.

 

  • jd-gui
  • bytecodeviewer
    • ์ž๋ฐ”, ์•ˆ๋“œ๋กœ์ด๋“œ, DEX, jars ํŒŒ์ผ ๋“ฑ ์†Œ์Šค์ฝ”๋“œ ๋ฆฌ๋ฒ„์‹ฑ ๋ถ„์„ ๋„๊ตฌ์ด๋‹ค.
    • ์œˆ๋„์šฐ์ฆˆ ํ™˜๊ฒฝ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›์„ ํ•˜๊ณ  ์žˆ๋‹ค.
    • ์•ˆ๋“œ๋กœ์ด๋“œ APKํŒŒ์ผ์„ ๋””์ปดํŒŒ์ผํ•˜์—ฌ ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ˜•ํƒœ์™€ ํด๋ž˜์ŠคํŒŒ์ผ์„ ์ž๋ฐ”ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์†Œ์ŠคํŒŒ์ผ๋กœ ๋ณต์›ํ•˜์—ฌ ๊ฐ™์ด ๋ณด์—ฌ์ค€๋‹ค. ์ด์ œ๊นŒ์ง€ ์‚ฌ์šฉํ•œ ๋„๊ตฌ๋“ค์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ํ•ฉํ•œ๊ฒƒ๊ณผ ๊ฐ™์€ ๋Š๋‚Œ์ด ๋“ค์ •๋„๋กœ ๊ธฐ๋Šฅ์ ์œผ๋กœ๋‚˜, ์—…๋ฌด ํšจ์œจ์ ์œผ๋กœ๋‚˜ ๊ฑฐ๋Œ€ํ•œ ๋„๊ตฌ์ด๋‹ค. 
    • ๋ถ„์„ ์†๋„๊ฐ€ ๋‹ค๋ฅธ ๋„๊ตฌ์— ๋น„ํ•ด ๋งค์šฐ ๋น ๋ฅด๋‹ค.

ADB๋Š” Android Debug Bridge์˜ ์•ฝ์ž๋กœ, Android๋ฅผ ์œ„ํ•œ Debugging Tool์ด๋‹ค.

Debug Bridge๋Š” JTAG๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋…์œผ๋กœ, Android๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š” Target Board์˜ Debugging์— ์‚ฌ์šฉ๋œ๋‹ค.

์—ฐ๊ฒฐ์€ USB Port๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๋ณดํ†ต ์‚ฌ์šฉ์ž๋“ค์ด Android ๊ธฐ๋ฐ˜์˜ Smart Device์˜ Rooting( ๋ฃจํŒ… )์— ์‚ฌ์šฉํ•œ๋‹ค.

์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, Command Mode( cmd )์—์„œ Android ๊ธฐ๋ฐ˜์˜ Device์™€ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ,

File Transfer, Application Install, Device Status, Shell ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

https://sutamu.tistory.com/358 <--์ฐธ๊ณ ํ•˜๊ธฐ

  • File Transfer, Application Install, Device Status, Shell ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์—ฐ๊ฒฐ์€ USB Port๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๋ณดํ†ต ์‚ฌ์šฉ์ž๋“ค์ด Android ๊ธฐ๋ฐ˜์˜ Smart Device์˜ Rooting( ๋ฃจํŒ… )์— ์‚ฌ์šฉํ•œ๋‹ค.
  • ADB๋Š” Android Debug Bridge์˜ ์•ฝ์ž๋กœ, Android๋ฅผ ์œ„ํ•œ Debugging Tool์ด๋‹ค.

 

์•Œ์•„๋ณด๋‹ˆ, apk →zip ์œผ๋กœ ์••์ถ• → ๋‹ค์‹œ ํ•ด์ œ —> ์ด์ค‘ class.dex → class.jar๋กœ ๋ณ€ํ™˜ ์ด๋ ‡๊ฒŒ ๋ณด๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹คํ•จ

ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ.

 

Apk ์••์ถ• ํ’€๊ธฐ

ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์žฌ๋นŒ๋“œ ํ•  ๊ณ„ํš์ด๋ผ๋ฉด apk ํŒŒ์ผ์˜ ์••์ถ•์„ ๋จผ์ € ํ’€์–ด์ค€๋‹ค.  ๋ชฐ๋ž๋˜ ์‚ฌ์‹ค์ด ์žˆ๋Š”๋ฐ, .apk ํŒŒ์ผ์˜ ํ™•์žฅ์ž๋ฅผ .zip ์œผ๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ ํ›„ ์••์ถ•์„ ํ’€์–ด๋„ dex ํŒŒ์ผ์ด ๋‚˜์˜ค๊ธด ๋‚˜์˜จ๋‹ค. ๋‹ค๋งŒ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ์ด ๊นจ์ ธ๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ ์•ฑ์„ ๋นŒ๋“œ ํ–ˆ๋˜ ๋ฐฉ์‹์„ ํ† ๋Œ€๋กœ ๋””์ปดํŒŒ์ผ ํ•˜๋Š” apktool์„ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด์•ผ ์ œ๋Œ€๋กœ๋œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•
Contents

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

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