วันพฤหัสบดีที่ 10 กรกฎาคม พ.ศ. 2557

การใช้งาน Dex2Jar และ JD-GUI กับ Android

Blog นี้เป็น Blog แรกที่ผมเริ่มลงเขียนนะครับ หากใช้ภาษาไม่สวยอ่านยาก หรือ ไม่เข้าใจตรงไหนต้องขออภัยทุกท่านด้วย

* หมายเหตุ บทความนี้เป็นเพียงบทความเพื่อแจ้งในนักพัฒนาทราบว่าเราสามารถทำการ De-compile หรือดู source code ได้จากเครื่องมือเหล่านี้ ซึ่งเป็นวิธีการแพร่หลายอยู่แล้ว ผู้เขียนเพียงเพื่อจะแนะนำวิธีการแหละการป้องกัน (ซึ่งจะกล่าวใน Blog ถัดไป) ไม่ได้มีเจตนาในการสอนหรือทำการเผยแพร่วิธีการ Hack ใดๆทั้งสิ้น

ผู้เขียนขอแยกประเป็น เนื้อหา Blog นี้เป็น2 ประเด็นละกัน คือเรื่อง Dex2Jar และ JD-GUI

Dex2Jar คืออะไร
เชื่อว่าหลายคนที่หลงเข้ามาอ่านน่าจะต้องเกิดคำถาม ตอบตรงๆผู้เขียนก็ไม่รู้เหมือนกัน (วะฮะฮ่า) แต่ถ้าแปลเฉพาะในส่วนของความสามารถมันแล้วล่ะก็ เจ้า Tools ตัวนี้สามารถ convert ไฟล์ *.dex เป็น *.jar ได้แล้วถามว่ามันมีประโยชน์ยังไง ล่ะ เอ๋?   เรื่องของเรื่องก็คือ โดยปกติแล้วหลังจากที่ Android Developer อย่างเราๆ ทำการ build apk ออกมาแล้วเตรียมตัว Deploy ขึ้น Play Store หรืออะไรก็แล้วแต่ จริงๆแล้วเราสามารถที่จะ rename เจ้าตัว apk นี้เป็น zip ได้ เช่น   Facebook.apk >>  Facebook.zip แทน แล้วจากนั้นถ้าเราโปรแกรมจำพวก winrar เป็นดู หน้าตามันจะออกมาประมาณนี้



จะสังเกตว่าหน้าตา structure มันค่อนข้างคล้ายกันกับ project ของเรา ถ้าเราลองกดเข้าไปใน res เราก็จะเจอ folder drawable เหมือนปกติ รูปภาพในนั้นสามารถเปิดขึ้นมาดูได้  resource อื่นๆที่เป็น .xml ก็เปิดมาดูได้ แต่จะอ่านไม่รู้เรื่อง ส่วนถ้าใครถามว่าแล้วตัว Source code เราล่ะอยู่ไหน ... ครับมันก็คือไฟล์ classes.dex นั่นเอง :D  ลองย้อนกลับไปดูรูปแรก ทีนี้ถ้าเราอยากจะเห็น Source code พวกนี้ทำไง ก็เจ้า Tools ตัวนี้แหละครับที่ช่วยเราได้ วิธีการก็คือ


หลังจากโหลด zip มาแล้วก็แตก zip เลย ผู้เขียนขอแตก zip ไปไว้ที่ Drive C ละกัน

จากนั้นนำไฟล์ apk ไปวางไว้ข้างใน Folder ของ dex2jar เลยเพื่อความง่ายต่อการ Run command
จากนั้นเปิดหน้าต่าง command ขึ้นมา แล้วใช้คำสั่ง
 d2j-dex2jar.sh myapp.apk
เท่านี้ก็เปนอันเสร็จเรียบร้อย

จากนั้นเราก็สามารถเปิดไฟล์ .jar เหล่านี้มาดูได้ด้วยโปรแกรม winrar เจ้าเก่าเนี่ยแหละ ภายในเราก็จะเห็น ไฟล์ *.class เต็มไปหมด โดย Structure ก็จะเหมือนกับ Project เราแทบทุกอย่าง

อ้าา หลายคนสงสัยว่าได้ class มาแล้วยังไง ก็เปิดดูไม่ได้ หรือได้แล้วก็อ่านไม่รู้เรื่องอยู่ดี


ใช่แล้วครับเราถึงต้องมีเจ้า Tools ตัวนี้ที่ชื่อว่า JD-GUI เนี่ยแหละ เวลาไว้ดู code ที่อยู่ใน *.class วิธีการนั้นแสนง่ายมากโดย
เริ่มจาก Download มาก่อนเลย

แตก zip แล้วทำการเปิดไฟล์ท่ชื่อ jd-gui ขึ้นมา
จากนั้นทำการเลือกไฟล์ *.jar ที่เราต้องการจะเปิด


แต่นแต๊นนน

เห็นหมดเลย

Source ข้างในหลังจากที่ผู้เขียนได้ลองตรวจสอบแล้ว บางครั้งมันก็ไม่ได้ถูกต้อง 100% นะครับ มี compile Error หลายที่    หลายคนอาจจะสงสัยว่าอ่าวแล้วแบบนี้เราจะป้องกันการแอบเอา apk ไฟล์เราไปดู source code ยังไง   :3  มีวิธีครับ หนึ่งในนั้นก็คือการทำ Obfuscation Code ข้างในมันด้วย proguard ทำให้ต่อให้ Hacker ได้โค๊ตไปก็อ่านไม่รู้เรื่องอยู่ดี โดยเรื่องนี้ผู้เขียนจะขออธิบายไปใน Blog ถัดไปนะครับ   เอาเป็นว่า อยากแอบดู source code ใครก็ลองทำดูเอ้ย ไม่ใช่ >///< ประโยชน์ที่ผู้เขียนได้รับจากการทำคือ บางครั้งเราจำเป็นต้อง Hack Library บ้างเพื่อให้มันทำงานสอดคล้องกับที่เราต้องการ เข้าไปดูว่าเขาเขียนยังไงตรงไหนแล้วทำไมมันมี impact กับ Logic เรา ก็ไปทำการ Over write class นั้นๆซะ ประมาณนี้แหละครับ 
ครั้งหน้าผมจะมาอธิบายการใช้ Proguard เพื่อป้องกันการถูก Hack โค๊ตเรานะครับบ ^__^ 

ไม่มีความคิดเห็น:

แสดงความคิดเห็น