How to understand the .apk file

บทนำ (Overview)

บทความนี้นำเสนอโครงสร้างของไฟล์ “apk” ก่อนการทำ “reverse engineering” ว่าประกอบไปด้วยไฟล์อะไรบ้างซึ่งเราสามารถตรวจสอบได้เองทันที

ขั้นตอน (Steps)

  1. นำไฟล์ “.apk” มาแปลงนามสกุลเป็น “.zip” (ลงโปรแกรม winzip หรือ winrar เสียก่อน)  apkunderstand2
  2. จากนั้นคลิกขวาเพื่อแตกไฟล์ “zip” (Extract) จะได้โฟลเดอร์ประมาณตามรูป apkunderstand1
  3. มาเริ่มด้วยโฟลเดอร์แรก “assets:” จะเก็บพวกส่วนประกอบของโปรแกรม เช่น Font หรือหน้าเว็บเช่นพวกโปรแกรมที่ถูกเขียนโดย “Apache Cordova” เป็นต้น apkunderstand3
  4. ต่อมาในส่วนของโฟลอร์เดอร์ “lib” หรือไลบารีของโปรแกรม ซึ่งก็คือ “code” ที่ถูก “complied” ไว้เรียบร้อยแล้วโดยจะแยกโฟลเดอร์สำหรับ “cpu” ที่นำไปประมวลผลด้วย โดยโปรแกรมหลักจะเรียกใช้ “library” พวกนี้สำหรับการทำงานต่าง ๆ ที่เขียนเอาไว้ apkunderstand4ตัวอย่าง “library” เช่น apkunderstand5
  5. ข้ามมาที่ไฟล์ “resources.arsc” เป็นไฟล์ที่สามารถ “complied” ได้เราจะอ่านไม่ออกในส่วนนี้ apkunderstand6
  6. ย้อนกลับไปที่โฟลเดอร์ “res” จะเป็นไฟล์ “resource” ที่ไม่ต้อง “complied” เช่น ไฟล์ภาพ, json และ xml เป็นต้น
  7. โฟลเดอร์  META-INF รวบรวมข้อมูล เช่น
    • CERT.RSA: “certificate” ที่ “application” ใช้
    • CERT.SF: เป็น “signature” ไฟล์ที่ประกอบด้วยข้อมูล “SHA1-Digest” สอดคล้องกับโฟลเดอร์ “res”, “lib” และ “asset” apkunderstand7
  8. ไฟล์ “AndroidMenifest.xml” เป็นไฟล์สำคัญที่ใช้อธิบาย ชื่อ, version, และสิทธิการเข้าถึงเครื่อง android ของโปรแกรม ซึ่งโดยปกติจะอ่านไม่ออก แต่เราสามารถทำให้อ่านให้ออก ได้โดย How to access “AndroidMenifest.xml”  apkunderstand8
  9. สุดท้ายไฟล์ “classes.dex” หรือไฟล์ “DEX”  (Dalvik executable format) เป็นไฟล์ที่รวบรวม “code” ทั้งหมดที่ถูก “complied” เรียบร้อยแล้ว ซึ่งไฟล์เมื่อถูกติดตั้งบนเครื่อง “android” แล้วจะไปอยู่โฟลเดอร์ “/data/dalvik-cache” apkunderstand9

ใส่ความเห็น