บทนำ (Overview)
บทความนี้นำเสนอโครงสร้างของไฟล์ “apk” ก่อนการทำ “reverse engineering” ว่าประกอบไปด้วยไฟล์อะไรบ้างซึ่งเราสามารถตรวจสอบได้เองทันที
ขั้นตอน (Steps)
- นำไฟล์ “.apk” มาแปลงนามสกุลเป็น “.zip” (ลงโปรแกรม winzip หรือ winrar เสียก่อน)
- จากนั้นคลิกขวาเพื่อแตกไฟล์ “zip” (Extract) จะได้โฟลเดอร์ประมาณตามรูป
- มาเริ่มด้วยโฟลเดอร์แรก “assets:” จะเก็บพวกส่วนประกอบของโปรแกรม เช่น Font หรือหน้าเว็บเช่นพวกโปรแกรมที่ถูกเขียนโดย “Apache Cordova” เป็นต้น
- ต่อมาในส่วนของโฟลอร์เดอร์ “lib” หรือไลบารีของโปรแกรม ซึ่งก็คือ “code” ที่ถูก “complied” ไว้เรียบร้อยแล้วโดยจะแยกโฟลเดอร์สำหรับ “cpu” ที่นำไปประมวลผลด้วย โดยโปรแกรมหลักจะเรียกใช้ “library” พวกนี้สำหรับการทำงานต่าง ๆ ที่เขียนเอาไว้
ตัวอย่าง “library” เช่น
- ข้ามมาที่ไฟล์ “resources.arsc” เป็นไฟล์ที่สามารถ “complied” ได้เราจะอ่านไม่ออกในส่วนนี้
- ย้อนกลับไปที่โฟลเดอร์ “res” จะเป็นไฟล์ “resource” ที่ไม่ต้อง “complied” เช่น ไฟล์ภาพ, json และ xml เป็นต้น
- โฟลเดอร์ META-INF รวบรวมข้อมูล เช่น
- ไฟล์ “AndroidMenifest.xml” เป็นไฟล์สำคัญที่ใช้อธิบาย ชื่อ, version, และสิทธิการเข้าถึงเครื่อง android ของโปรแกรม ซึ่งโดยปกติจะอ่านไม่ออก แต่เราสามารถทำให้อ่านให้ออก ได้โดย How to access “AndroidMenifest.xml”
- สุดท้ายไฟล์ “classes.dex” หรือไฟล์ “DEX” (Dalvik executable format) เป็นไฟล์ที่รวบรวม “code” ทั้งหมดที่ถูก “complied” เรียบร้อยแล้ว ซึ่งไฟล์เมื่อถูกติดตั้งบนเครื่อง “android” แล้วจะไปอยู่โฟลเดอร์ “/data/dalvik-cache”