Thursday, October 10, 2013

แปลงไฟล์ *.apk เป็น java code [ Decompile android apk file to java source code ]

        สวัสดีครับวันนี้ผมจะมาสอนวิธีการแปลงไฟล์จากไฟล์ *.apk ซึ่งเป็นไฟล์ที่ Compile แล้ว
( พร้อมติดตั้งไปยังอุปกรณ์ระบบปฏิบัติการแอนดรอย ) ไปเป็นไฟล์ source code กันครับ

เริ่มแรกเลยสิ่งที่ต้องมีคือ
  1. ไฟล์ *.apk ที่เราจะแปลง
  2. dex2jar
  3. jd-gui (Java Decompile)

คราวนี้มาถึงวิธีการแปลงไฟล์กันครับ
ตัวอย่างไฟล์ Source Code เดิมก่อนที่จะแปลงเป็น apk file นะครับ

มาถึงขั้นตอนกันเลยละกัน เตรียมไฟล์ apk ไว้ดังรูปนะครับ
จากนั้นทำการเปลี่ยนชื่อไฟล์ จาก HelloWord.apk เป็น HelloWord.zip (เปลี่ยน ชื่อธรรมดานี่แหละครับ) แล้ว extract ไฟล์ออกมา
เข้าไปที่โพลเดอร์ จะเจอไฟล์ดังต่อไปนี้

ไฟล์ที่เป็นตัว source code คือ classes.dex จากนั้นให้ทำการดาวน์โหลดไฟล์ dex2jar
ซึ่งไฟล์นี้จะทำหน้าที่ในการแปลง *.dex  เป็น *.jar  , โดยเมื่อเราดาวน์โหลดมาแล้วจะพบว่า dex2jar จะมีโครงสร้างดังนี้ครับ


ต่อมาให้ทำการ  copy ไฟล์ classes.dex ไปไว้ในไดเรททอรี่เดียวกันกับ dex2jar.sh (ถ้าเป็นระบบปฏิบัติการ Windows ให้ใช้ dex2jar.bat ) เปิด Terminal ขึ้นมา
แล้ว cd ไปยังไดเรททอรี่ที่เก็บไฟล์ dex2jar.sh
ใช้คำสั่ง  ./dex2jar.sh classes.dex สำหรับ Linux OS หรือ Mac OS
ใช้คำสั่ง  dex2jar.bat classes.dex สำหรับ Windows OS

เมื่อใช้แล้วจะพบหน้าตาดังภาพครับ


จากนั้นสังเกตุในโพลเดอร์ครับ จะได้ไฟล์ classes_dex2jar.jar เพิ่มมา

จากนั้นทำการเปิดโปรแกรม jd-gui (Java Decompile) 


เปิดไฟล์ classes_dex2jar.jar ที่ได้จากการแปลง ก็จะเห็น code ด้านใน


จบละครับ นำความรู้ไปใช้เพื่อการศึกษานะครับ 
ความรู้เปรียบดังอาวุธครับ ขึ้นอยู่กับคนที่ใช้ว่าจะใช้ยังไง