ต่อไป เราจะอธิบายการเปรียบเทียบก่อนและหลังการคอมไพล์ไฟล์ APK และความหมายของไฟล์ต่อไป เราจะใช้แอปพลิเคชันที่ค่อนข้างเรียบง่าย "เครื่องมือล้างการ์ด SD" เป็นซอฟต์แวร์การสอนสำหรับบทช่วยสอนนี้ (ไฟล์แนบเป็นซอฟต์แวร์เป็นภาษาอังกฤษ)
A ก่อนอื่นเรามาดูโครงสร้างไฟล์ก่อนทำการถอดรหัส ดังแสดงในรูป:
B ต่อไป เรามาพูดถึงการทำงานที่แท้จริงของการคอมไพล์แล้วดูที่ไฟล์ที่ถอดรหัสแล้ว
หลังจากดาวน์โหลดเครื่องมือที่ให้มา [APK decompilation and Compilation tool v141] ในหลักสูตรภาษาจีน 1 วิธีที่ดีที่สุดคือสร้างโฟลเดอร์ใหม่ (ชื่อ apktool) จากนั้นวางเครื่องมือ apktool ในโฟลเดอร์ และวาง APK ที่ต้องทำการถอดรหัส นั่นคือ สวิตช์ทางลัดแถบการแจ้งเตือน สลับ NotificationToggle ในโฟลเดอร์ apktool แล้วเปลี่ยนชื่อ เป็น 123.apk จากนั้นคลิก apktool v1.4.1 และปฏิบัติตามคำแนะนำข้างต้นเพื่อทำการคอมไพล์ apk, การคอมไพล์ (การคอมไพล์ด้านหลัง), ลายเซ็น และการดำเนินการอื่น ๆ ให้เสร็จสิ้น
เนื่องจากการแนะนำการดำเนินการในเครื่องมือมีรายละเอียดมากอยู่แล้ว ฉันจะไม่อธิบายมากเกินไป หากอินเทอร์เฟซต่อไปนี้ปรากฏขึ้น แสดงว่าคุณได้ถอดรหัสสำเร็จแล้ว:
C ต่อไป เรามาดูความแตกต่างระหว่างไฟล์ที่ถอดรหัสแล้วและไฟล์ต้นฉบับ:
โดยการเปรียบเทียบไฟล์ก่อนและหลังการคอมไพล์ คุณจะพบการเปลี่ยนแปลงในไฟล์
D. ต่อไป เรามาทำความเข้าใจทั่วไปเกี่ยวกับฟังก์ชันของไฟล์เหล่านี้กัน:
มี 2 โฟลเดอร์ ได้แก่ META-INF และ res รวมถึง AndroidManifest xml คลาส dex และทรัพยากร ไฟล์ arsc ทั้งสามไฟล์นี้รวมอยู่ในซอฟต์แวร์ทุกตัวนั่นคือมันจำเป็น! ซอฟต์แวร์บางตัวมีทรัพย์สินและบางตัวไม่มี ส่วนใหญ่จะจัดเก็บไฟล์ทรัพยากรบางส่วนซึ่งไม่พบในโปรแกรมทั่วไป แต่ส่วนใหญ่จะอยู่ในเกม ซอฟต์แวร์บางตัวยังมีไฟล์อื่นด้วย ฯลฯ ไดเรกทอรี
META-INF เก็บข้อมูลลายเซ็นซึ่งใช้เพื่อรับรองความสมบูรณ์ของแพ็คเกจ APK และความปลอดภัยของระบบ ไดเร็กทอรี
res จัดเก็บไฟล์ทรัพยากร ซอฟต์แวร์ที่แตกต่างกันมีโฟลเดอร์ต่างกันในไดเร็กทอรี res โดยทั่วไปแล้ว จะเป็นโฟลเดอร์
drawable (ซึ่งมีรูปภาพอยู่)
drawable-hdpi (โฟลเดอร์ที่มีรูปภาพความละเอียดสูง)
layout (โฟลเดอร์ที่มีไฟล์ xml โครงร่างอินเทอร์เฟซอยู่)
layout-hdpi (โฟลเดอร์ที่มีไฟล์ xml เค้าโครงอินเทอร์เฟซความละเอียดสูงอยู่) สิ่งนี้ไม่รวมอยู่ในโปรแกรมนี้ พบได้ในหลายโปรแกรม)
menu (ไม่พบไดเร็กทอรีที่มีไฟล์เมนูบางไฟล์ในโปรแกรมนี้ แต่พบได้ในหลายโปรแกรม)
raw (โฟลเดอร์ที่เก็บเอกสารวิธีใช้หรือทรัพยากรอื่น ๆ เช่น help.html; clock.zip ไม่พบในโปรแกรมนี้)
xml ( ไดเร็กทอรีที่มีไฟล์ xml อื่น ๆ อยู่)
สำหรับตัวอย่าง [SD Card Cleanup Tool] ในบทช่วยสอนนี้ มีเพียง andmin, Drawable, Drawable-hdpi, เค้าโครง, เมนู, ค่าและไฟล์ xml
drawable โฟลเดอร์นี้มักจะเก็บรูปภาพไว้ในซอฟต์แวร์ หากคุณต้องการปรับแต่งรูปภาพด้วยซอฟต์แวร์บางตัว คุณจะพบได้ที่นี่! โดยทั่วไป รูปภาพที่ต้องแก้ไขจะอยู่ในโฟลเดอร์นี้สำหรับเกมเล็กๆ บางเกม
โฟลเดอร์อื่นๆ เก็บไฟล์ XML บางไฟล์ และจะมีตำแหน่งที่ต้องทำให้เป็นภาษาจีนด้วย
AndroidManifest. xml เป็นไฟล์ XML หลักซึ่งทุกแอปพลิเคชันจะต้องกำหนดและรวมไว้ด้วย โดยจะอธิบายชื่อ เวอร์ชัน การอนุญาต ไฟล์ไลบรารีที่อ้างอิง และข้อมูลอื่นๆ ของแอปพลิเคชัน โดยพื้นฐานแล้ว ไม่จำเป็นต้องทำให้เป็นภาษาจีน แต่ชื่อซอฟต์แวร์ของซอฟต์แวร์แต่ละตัวหรือคำแต่ละคำจะมีอยู่ใน XML หลักนี้!
คลาส dex เป็นไฟล์ Java bytecode ที่สร้างขึ้นหลังจากการคอมไพล์ซอร์สโค้ด Java ในแง่คนธรรมดา มันเป็นไฟล์ซอร์สโค้ดของซอฟต์แวร์ทั้งหมด
APKTOOL เวอร์ชันภาษาจีนหลักคือ (รูปภาพด้านล่าง)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
หมายเหตุ: ซอฟต์แวร์ถอดรหัส (apktool มีหลายเวอร์ชัน) บทช่วยสอนนี้ใช้เครื่องมือถอดรหัสและการคอมไพล์ APK v141 เป็นตัวอย่าง
เอสเซ้นส์ ห้องเรียนภาษาจีนระบบ Android บทที่ 5
×
❮
❯
ตอบกลับ (0)
— โหลดคำตอบทั้งหมดแล้ว —