โครงสร้างแอป Android
ส่วนภายใน APK
โครงสร้างแอป Android เป็นบทเรียน Ethical Hacking Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ethical Hacking Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไฟล์ APK
แอป Android จะจัดส่งในรูปแบบ APK (แพ็กเกจ Android) ซึ่งแท้จริงแล้วเป็นไฟล์จัดเก็บ ZIP ที่บรรจุโค้ดที่คอมไพล์แล้ว ทรัพยากร และข้อมูลเมทาดาทา
เนื่องจากเป็น ZIP คุณจึงเพียงคลายไฟล์เพื่อสำรวจเนื้อหาได้ ซึ่งเป็นขั้นตอนแรกของการทดสอบเจาะระบบอุปกรณ์เคลื่อนที่
unzip app.apk -d app_extracted/ภายใน APK
APK ที่แยกไฟล์แล้วประกอบด้วย:
AndroidManifest.xml: การกำหนดค่าแอปclasses.dex: ไบต์โค้ดที่คอมไพล์แล้วres/และresources.arsc: ทรัพยากรlib/: ไลบรารีเนทีฟMETA-INF/: ข้อมูลการเซ็นชื่อ
แมนิเฟสต์
AndroidManifest.xml ประกาศคอมโพเนนต์ สิทธิ์ และการกำหนดค่าของแอป ภายใน APK ไฟล์นี้อยู่ในรูปแบบ XML ไบนารีที่เครื่องมือสามารถถอดรหัสได้
นี่คือไฟล์ที่สำคัญที่สุดสำหรับทำความเข้าใจพื้นผิวการโจมตีของแอป
DEX และสภาพแวดล้อมขณะทำงาน
ซอร์สโค้ด Java/Kotlin จะคอมไพล์เป็นไบต์โค้ด DEX (Dalvik Executable) ใน classes.dex Android รุ่นใหม่เรียกใช้ไบต์โค้ดนี้ผ่าน ART (Android Runtime)
สามารถแปลง DEX กลับไปเป็นโค้ดที่อ่านได้ ซึ่งเป็นสิ่งที่การวิเคราะห์ APK แบบสถิติอาศัย
คอมโพเนนต์ทั้งสี่
แอป Android สร้างจากคอมโพเนนต์สี่ประเภท:
- กิจกรรม: หน้าจอ / ส่วนติดต่อผู้ใช้
- บริการ: งานเบื้องหลัง
- ตัวรับการกระจายสัญญาณ: ตอบสนองต่อเหตุการณ์ของระบบ
- ผู้ให้บริการเนื้อหา: แบ่งปันข้อมูลระหว่างแอป
คอมโพเนนต์ที่ส่งออก
คอมโพเนนต์ที่มีเครื่องหมาย android:exported="true" สามารถถูกเรียกใช้โดยแอปอื่นได้ หากคอมโพเนนต์ดังกล่าวทำงานที่ละเอียดอ่อนโดยไม่มีการตรวจสอบ ก็ถือเป็นพื้นผิวการโจมตี
ผู้ทดสอบเจาะระบบจะค้นหากิจกรรม บริการ และผู้ให้บริการที่ส่งออก ซึ่งอาจทำให้ข้อมูลรั่วไหลหรือดำเนินการที่ต้องใช้สิทธิ์สูง
<activity android:name=".AdminActivity" android:exported="true"/>สิทธิ์
แอปจะขอสิทธิ์ในแมนิเฟสต์ (เช่น INTERNET, READ_SMS, ACCESS_FINE_LOCATION)
สิทธิ์ที่กว้างเกินไปอาจบ่งชี้พฤติกรรมที่มีความเสี่ยงหรือการเข้าถึงข้อมูลมากเกินจำเป็น สิทธิ์แบบกำหนดเองก็อาจกำหนดค่าผิดพลาดจนอนุญาตให้เข้าถึงโดยไม่ได้รับอนุญาต
<uses-permission android:name="android.permission.READ_SMS"/>แซนด์บ็อกซ์ของแอป
Android แยกแต่ละแอปไว้ในแซนด์บ็อกซ์ของตัวเอง พร้อม Linux UID ที่ไม่ซ้ำกัน โดยค่าเริ่มต้น แอปจะไม่สามารถอ่านข้อมูลของกันและกันได้
ช่องโหว่เกิดขึ้นเมื่อแอปทำให้ขอบเขตนี้อ่อนแอลง เช่น มีไฟล์ที่ทุกคนอ่านได้หรือมีผู้ให้บริการที่เปิดเผย
การจัดเก็บข้อมูลแอป
แอปที่ติดตั้งแล้วจะจัดเก็บข้อมูลส่วนตัวไว้ที่ /data/data/<package>/ ซึ่งประกอบด้วยฐานข้อมูล ค่ากำหนดที่ใช้ร่วมกัน และไฟล์
บนอุปกรณ์ที่ผ่านการรูตหรือผ่านการสำรองข้อมูล ผู้ทดสอบเจาะระบบสามารถตรวจสอบไดเรกทอรีนี้เพื่อค้นหาข้อมูลลับที่จัดเก็บอย่างไม่ปลอดภัย ซึ่งบทเรียนถัดไปจะอธิบายเพิ่มเติม
/data/data/com.example.app/การเซ็นชื่อ
APK ทุกไฟล์จะถูกเซ็นชื่อแบบดิจิทัล โดยลายเซ็นจะอยู่ใน META-INF/ Android จะตรวจสอบลายเซ็นเมื่อติดตั้งและเมื่ออัปเดต
หากคุณแก้ไขและแพ็กแอปใหม่ คุณต้องเซ็นชื่อใหม่ด้วย นี่คือเหตุผลที่นักพัฒนาพึ่งพาการเซ็นชื่อเพื่อตรวจจับการดัดแปลง
ไลบรารีเนทีฟ
ตรรกะที่ต้องการประสิทธิภาพสูงหรือถูกทำให้อ่านยากอาจอยู่ในไลบรารีเนทีฟ (ไฟล์ .so) ภายใต้ lib/ ซึ่งคอมไพล์จาก C/C++
ไลบรารีเหล่านี้ไม่ได้อยู่ใน DEX จึงต้องวิเคราะห์แยกต่างหากด้วยเครื่องมือถอดแยกชิ้นส่วนเนทีฟ นักพัฒนาบางรายซ่อนข้อมูลลับไว้ที่นี่ โดยเข้าใจผิดว่าโค้ดเนทีฟตรวจสอบได้ยากกว่า
lib/arm64-v8a/libnative.soตรวจสอบความเข้าใจ
ทบทวนว่าแอตทริบิวต์ใดในแมนิเฟสต์ที่เปิดเผยคอมโพเนนต์ให้แอปอื่นเข้าถึง
สรุปทบทวน
ขณะนี้คุณเข้าใจโครงสร้างแอป Android แล้ว:
- APK คือ ZIP ที่บรรจุ
AndroidManifest.xml,classes.dex, ทรัพยากร และข้อมูลการเซ็นชื่อ - แอปใช้คอมโพเนนต์สี่ประเภท โดยคอมโพเนนต์ที่ส่งออกถือเป็นพื้นผิวการโจมตี
- สิทธิ์และแซนด์บ็อกซ์แยกตามแอปเป็นตัวควบคุมการเข้าถึง ข้อมูลส่วนตัวอยู่ที่
/data/data/ - APK ถูกเซ็นชื่อเพื่อใช้ตรวจจับการดัดแปลง
ถัดไปคุณจะดีคอมไพล์ APK ในการวิเคราะห์แบบสถิติ
คำถามที่พบบ่อย
บทเรียน “โครงสร้างแอป Android” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โครงสร้างแอป Android” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ethical Hacking Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ethical Hacking Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โครงสร้างแอป Android”
ส่วนภายใน APK คุณปฏิบัติ Ethical Hacking Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ethical Hacking Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ethical Hacking Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “โครงสร้างแอป Android” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ethical Hacking Academy นี้ได้ไหม
ได้ บทเรียน Ethical Hacking Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงสร้างแอป Android
- การวิเคราะห์ APK แบบสแตติก
- การวิเคราะห์แบบพลวัตด้วย Frida
- การจัดเก็บและการสื่อสารที่ไม่ปลอดภัย