วิธีแยกส่วนประกอบและธีม Android APKs
คุณเคยเปิดแอป Android และไม่ชอบธีมสีที่ใช้หรือไม่ จะทำอย่างไรถ้าคุณต้องการเปลี่ยนพื้นหลังสีขาวในแอปเป็นสีดำเช่น? วันนี้ฉันจะแสดงวิธีแปลไฟล์ .APK เพื่อให้คุณสามารถแก้ไขไฟล์ภายในได้จากนั้นคอมไพล์และติดตั้งใหม่บนโทรศัพท์ Android ของคุณ
หมายเหตุ: แอปบางอย่างอาจยากกว่าธีมอื่น ๆ เช่น Facebook Messenger เป็นเรื่องยากที่จะเป็นธีม ฉันจะนำคุณไปสู่คู่มือนี้โดยใช้แอปพลิเคชัน Dropbox เป็นตัวอย่างเนื่องจากเป็นหนึ่งในวิธีที่ง่ายที่สุดในการแก้ไข
ความต้องการ
- Notepad ++
- APKTool + AAPT ล่าสุด
- สคริปต์เครื่องมือ APKMulti
- โปรแกรมแก้ไขภาพเช่น Photoshop / GIMP
- [ไม่บังคับ] Dropbox .apk (สำหรับทำตามคู่มือนี้)
ดาวน์โหลดเครื่องมือที่จำเป็นทั้งหมดและติดตั้งลงในคอมพิวเตอร์ของคุณรวมทั้ง test.apk ที่ระบุไว้ด้านบน Dropbox เป็นหนึ่งในแอพพลิเคชันที่ง่ายกว่าสำหรับชุดรูปแบบดังนั้นเราจึงจะใช้กับบทแนะนำนี้
คุณควรโอนกรอบ res.apk จากโทรศัพท์ของคุณไปยังพีซีของคุณซึ่งอยู่ใน / system / framework / บนที่จัดเก็บข้อมูลภายในของคุณ
วาง APKTool และ AAPT ลงในโฟลเดอร์ Other ภายในไดเรกทอรีหลักของ APK Multi Tool
ลากไฟล์ test.apk ไปที่โฟลเดอร์ place-apk-here-for-modding ภายในไดเรกทอรี APK Multi Tool และคุณจะได้รับทักทายด้วยคำสั่ง terminal
กดปุ่มใด ๆ เพื่อดำเนินการต่อและคุณจะเห็นเมนูเทอร์มินัลที่มีพวงของตัวเลือก เลือกตัวเลือกที่ 24
คุณจะกลับไปที่หน้าจอหลัก แต่ test.app จะเป็นโครงการของคุณ กด 9 เพื่อคอมไพล์ apk แล้วกด 12 เพื่อเรียกใช้งาน test-build นี่เป็นวิธีปฏิบัติที่ดีสำหรับการดูว่ามีบางอย่างผิดพลาดหรือไม่ หากแอปสร้างได้อย่างถูกต้องให้กด 2 และย่อสคริปต์ที่ปรากฏขึ้น
ตั้งแต่การทดสอบสร้างตรวจสอบออกมาลองมาแก้ไขโค้ด XML ของ apk โปรดปฏิบัติตามอย่างระมัดระวัง
ภายในโฟลเดอร์. spk ที่แยกแล้วให้ไปที่โฟลเดอร์ res และเปิด AndroidManifest.xml ด้วย Notepad ++ ตอนนี้กด CTRL + F เพื่อค้นหาสตริงต่อไปนี้:
หุ่นยนต์: พื้นหลัง
ใช้ตัวเลือกค้นหาทั้งหมดและควรมีสตริงประมาณ 190 รายการ ตอนนี้คุณต้องผ่านแต่ละสตริงที่ไฮไลต์เพื่อให้แน่ใจว่าคุณจะไม่พลาดเมื่อเปลี่ยนสีพื้นหลังของแอป
เลื่อนไปเรื่อย ๆ จนกว่าคุณจะพบ Camera_upload_grid.xml ซึ่งมีสายเมาส์ Android: background = @ * android: color / white. คัดลอกสตริงทั้งหมดและกด CTRL + H เพื่อแทนที่บทสนทนา วางสตริงไว้ที่ด้านบนและด้านล่าง แต่เราจำเป็นต้องเปลี่ยนสาย
ภายในโฟลเดอร์ decompiled .apk ไปที่ /res/values/colors.xml และเปิดใน Notepad ++ มองหาเส้น abs__background_holo_dark ซึ่งเป็นพื้นหลังที่แน่นอนที่สุด ตอนนี้คัดลอกสตริงนั้นและกลับไปที่ไฟล์ XML แรกที่เราเปิดไว้โดยที่กล่อง Replace ยังคงเปิดอยู่และในบรรทัดด้านล่างวางสายอักขระที่คุณคัดลอกไว้ ตอนนี้คุณควรจะอยู่ในบรรทัดด้านล่างของบทสนทนาแทนที่:
หุ่นยนต์: พื้นหลัง = @ สี / abs__background_holo_dark
ตอนนี้กด Replace All แล้วก็จะเปลี่ยน @android ทั้งหมด: color / white เพื่อใช้ background_holo_dark แทน ตอนนี้เลื่อนต่อไปยังทั้ง. xml ค้นหาหุ่นยนต์ใด ๆ : สตริงของพื้นหลังที่ใช้ค่าฐานสิบหก (#fffffff) หรืออะไรอื่นนอกจากสิ่งที่เราเพิ่งแทนที่ด้วย สำหรับคนที่คุณพบเปลี่ยนสายการใช้ใหม่ (abs__background_holo_dark)
ดังนั้นเราจึงเปลี่ยนพื้นหลังตอนนี้เราจะเปลี่ยนสีข้อความ ดังนั้นทำตามขั้นตอนเดียวกับที่เราทำ แต่เวลานี้ทำ CTRL + F สำหรับแอนดรอยด์: textColor คุณจะพบเส้นประมาณ 166 เส้น
คุณจะเห็นสิ่งต่างๆเช่นแอนดรอยด์: textColor = # ffbbbbbb ฯลฯ ดังนั้นให้มองไปที่ Colors.xml อีกครั้งและเราจำเป็นต้องระบุว่าต้องการเปลี่ยนสีของข้อความในบรรทัดใด
คุณสามารถเห็น Android: textColor = # ffbbbbbb, #ffffffff, # ff717171 และ #ffcccccc ในภาพหน้าจอและในผลการค้นหาของคุณในหมายเหตุ ++ เปิด Colors.xml อีกครั้งเพื่อหาบรรทัดที่เราต้องการใช้สำหรับสีข้อความ
กลับไปที่. xml ตัวแรกและทำ CTRL + H สำหรับแทนที่บทสนทนาอีกครั้ง ตอนนี้ copypaste Android: textColor = # ffbbbbbbb สายลงด้านบนและด้านล่างและเปลี่ยนบรรทัดด้านล่างเป็น Android: textColor = @ color / text
ตอนนี้อีกครั้งค้นหาผ่านทั้งหมดของหุ่นยนต์: บรรทัด textColor และเปลี่ยนสิ่งที่มีค่า hex ในสตริง สุดท้ายเมื่อคุณไปที่ไฟล์ styles.xml คุณต้องการลบสิ่งที่ตรงกันข้ามออกจากสองสามบรรทัดโดยเริ่มจากบรรทัดที่ 260 และต่อลงไม่กี่บรรทัด ลบ Inverse ออกจากสตริงเหล่านั้น
ถัดไปคุณจะเห็นค่า hex บางค่าในบรรทัดที่ 527, 536, 573, 579, 585, 601 และอีกสองสาม เปลี่ยนจาก (#ffffffff) เป็น (@ สี / ข้อความ)
กด CTRL + F เพื่อค้นหาใน Notepad ++ สำหรับ cacheColorHint, divider, @ * android: color / และ Inverse
แคชColorHintเป็นพื้นหลังแบบเลื่อนดังนั้นเราจำเป็นต้องตรวจสอบให้แน่ใจว่ากำลังใช้สีพื้นหลังของเรา ตัวแบ่งเป็นตัวอธิบายและเราสามารถเปลี่ยนค่า hex ถ้าต้องการ สิ่งเดียวคือคุณต้องไม่แตะต้องอะไรที่ชี้ไปที่ @drawable โดยปกติแล้วภาพเหล่านี้จะถูกจัดเก็บเป็นไฟล์. png ที่อื่นในโฟลเดอร์. apk
เมื่อคุณค้นหา สิ่งที่ตรงกันข้าม จะแสดงการอ้างอิงไปยัง textAppearanceInverse คุณต้องคลิกสองครั้งที่แต่ละอันและลบ Inverse ออกจากสตริงเหล่านี้
สุดท้ายค้นหา @ * android: color / จะตรวจสอบอีกครั้งว่าเราพลาดการแก้ไขกรอบใด ๆ หรือไม่ หากคุณพบอะไรที่บอกว่า android: popupBackground> @ * android: สี / ขาวคุณต้องเปลี่ยนเป็น android: popupBackground> @ color / abs__background_holo_dark ซึ่งรวมถึงบรรทัดที่ 911 ซึ่งอาจทำให้เกิดความสับสนเนื่องจากได้ชี้ไปที่ android แล้ว: สี / ดำ
ถัดไปเราจะเปิด res / values / colors.xml และเปลี่ยนให้มีลักษณะดังนี้:
ถัดไป res / values / styles.xml และเลื่อนลงไปที่บรรทัด 328 เปลี่ยนเช่นนี้:
PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่() ควรเปลี่ยนเป็น ()
ทำเช่นเดียวกันสำหรับบรรทัดที่ 479 เปลี่ยน แสง เป็น สีดำ
ตอนนี้ไปที่ res / values-v11 / styles.xml และลบ แสง ที่กล่าวว่า Holo.Light
ถัดไปคุณจะเปิด res / values-v14 / styles ในขณะนี้ซึ่งมีสตริงมากมาย ดังนั้นใน 46 บรรทัดแรกคุณต้องการลบการอ้างอิงใด ๆ แสง และ ผกผัน และจากนั้นเปลี่ยนผู้ปกครองในบรรทัด 53 และ 54 เพื่อ @ android *: สไตล์ / Theme.Holo
ในบรรทัดที่ 69 ด้านขวาของพาเรนต์ให้นำไลท์ออกจาก @ * android: style / Theme.Holo.Light.Dialog parent
นี้เป็นงานมากใช่มั้ย? บางทีต่อจากนี้คุณจะรู้สึกชื่นชมในธีมและสกินต่างๆมากขึ้น!
ต่อไปเราจะเข้าไปในโฟลเดอร์ res / color มีไฟล์ข้อความอยู่ในนั้นซึ่งชี้ไปที่สีดำ เปิด res / colors / action_mode_item_text_color_state_list.xml
นั่นเป็นวิธีที่ดูเหมือนหุ้น ด้านล่างนี้เป็นวิธีที่คุณต้องการทำ
คุณต้องเปลี่ยนชื่อไฟล์เหล่านี้เป็นไฟล์ xml ต่อไปนี้ภายในโฟลเดอร์ / res / colors: Bottom_button.xml, Button_update.xml, Filelist_text_name.xml, Filelist_text_small.xml, Link_button.xml, Local_filelist_text_name.xml, Local_filelist_text_small.xml, ss_bottom_bottom_text_color_dark xml, ss_bottom_bottom_text_color_light.xml, tab_text_foreground.xml
เมื่อคุณเสร็จสิ้นแล้วเปิด / res / drawable และมี xml ที่ควบคุมสีพื้นหลัง เพื่อไปผ่านพวกเขาและทำให้พวกเขามีลักษณะเช่นนี้:
ใช้การเปลี่ยนแปลงเดียวกันกับไฟล์ drawable.xml ไฟล์อื่น ๆ
ตอนนี้เปิด test.apk แล้วกด CTRL + คลิกซ้ายเพื่อเน้น smali และ AndroidManifest จากนั้นคลิกขวาและแก้ไขด้วย Notepad ++ อีกครั้ง เห็นด้วยกับไฟล์ smali ทั้งหมดของปี 1999 เมื่อโหลดโหลดให้ค้นหา CTRL + F สำหรับ -0x100 (สีดำ)
คุณจะได้รับ Hit 8 ครั้งและคุณต้องการ smali / com / dropbox / android / activity / TextEditActivity.smali ในบรรทัดที่ 599 คลิกสองครั้งที่บรรทัดนั้น
บรรทัด 599 มี -0x100 อยู่ในนั้นและบรรทัด 601 มี SetTextColor นอกจากนี้ยังมีตัวแปรที่ตรงกับบรรทัดที่ 599 เพื่ออธิบายสั้น ๆ -0x100, -0x1000000 และแม้กระทั่ง 0x0 หมายถึงสีดำ -0x1000000 เป็นสีดำและยัง 0x0 เปลี่ยนบรรทัดที่ 599 โดยการเอาสอง 0 ออกจาก 100 และลบ / high16 เช่นนี้:
ต่อไปเราจะค้นหา @ * android: style แต่ใน smali xml จะมีค่าเป็นพิเศษ 0 หลังจาก x แต่ใน smali เราไม่ใช้ ต้องเป็น 0x103004f แทนที่จะเป็น 0x0103004f
ค้นหาใน Notepad ++ สำหรับ @ * android: style / ซึ่งมี 0x103
ตีที่สองคือ const v7, 0x1030073 ค้นหาในไฟล์ public.xml จากกรอบ res.apk อีกครั้ง คุณจะเห็นว่าเป็นรหัสสำหรับ Theme.Holo.Light.Dialog คุณจะต้องเปลี่ยนรหัสนี้เป็นรหัสสาธารณะของรูปแบบตรงข้าม
เนื่องจากเป็น Theme.Holo.Light.Dialog คุณต้องการทำให้ Theme.Holo.Dialog เป็น Theme.Holo.Dialog Theme.Holo.Dialog มีรหัสของ 0x103006f ที่จะเปลี่ยนกล่องโต้ตอบการแจ้งเตือนโต้ตอบแบบป๊อปอัพเพื่อใช้ชุดรูปแบบ Holo ที่เข้มกว่าแทนที่จะเป็นธีมแบบ Holo.Light ที่เบากว่า
หน้าถัดไปที่เราต้องเปลี่ยนคือ 0x103006e ซึ่งเป็น Theme.Holo.Light เพื่อไปข้างหน้าและทำให้รูปแบบธีมตรงกันข้าม ในไฟล์ public.xml จากกรอบ res.apk คุณจะเห็นรหัสสำหรับ Theme.Holo คือ 0x0103006b ให้เราเปลี่ยนบรรทัดให้เป็นดังนี้:
มีเพียงอีก 2 เรื่องที่จะต้องผ่าน ส่วนถัดไปคือ 0x103000c ซึ่งมีไว้สำหรับ Theme.Light ใน public.xml สิ่งที่ตรงกันข้ามคือ ThemeBlack ไม่ใช่ ThemeHolo ดังนั้นใน public.xml คุณจะเห็นรหัสสำหรับ Theme.Black คือ 0x01030008 - เปลี่ยนให้มีลักษณะดังนี้:
ในแอปพลิเคชันอื่น ๆ คุณควรแก้ไขและเปลี่ยนแปลงสิ่งอื่น ๆ และด้วยการปฏิบัติที่เพียงพอคุณจะสามารถจัดธีมใหม่ได้เกือบทุกอย่าง แต่ตอนนี้เรากำลังดำเนินการกับรหัสทั้งหมด ( ในที่สุด!)
ตอนนี้คุณสามารถเปิดสคริปต์จาก apk Multi Tool แล้วกด 12 เพื่อคอมไพล์แอพ หากมีข้อผิดพลาดใด ๆ ปรากฏขึ้นคุณสามารถลองดูภายในบันทึกข้อผิดพลาดสำหรับสิ่งที่ผิดพลาด แต่น่าจะเป็นเพราะคุณทำผิดพลาดหรือข้อผิดพลาดอื่น ๆ ในระหว่างการแก้ไขโค้ด
เมื่อการสร้างเสร็จสิ้นให้กด 2 และ 13 เพื่อลงชื่อสมัครใช้อีกครั้ง
แอปสต็อกมีโฟลเดอร์ชื่อเทมเพลต - คุณต้องลากข้อมูลนั้นลงใน APK ที่ไม่ได้ลงชื่อโดยใช้บางอย่างเช่น 7zip คัดลอก unsigned.apk ลงในโฟลเดอร์ place-apk-here-for-signing ภายในเครื่องมือ Apk Multi ตอนนี้กด 18 ในสคริปต์เทอร์มินัลเพื่อแบทช์แอ็พพลิเคชันในโฟลเดอร์นั้น เมื่อเสร็จสิ้นสคริปต์จะออกจากตัวเองโดยอัตโนมัติ ขณะนี้คุณสามารถโหลด. apk ลงในอุปกรณ์ของคุณได้แล้ว!
PRO TIP: หากปัญหาเกิดขึ้นกับคอมพิวเตอร์หรือแล็ปท็อป / โน้ตบุ๊คคุณควรลองใช้ซอฟต์แวร์ Reimage Plus ซึ่งสามารถสแกนที่เก็บข้อมูลและแทนที่ไฟล์ที่เสียหายได้ วิธีนี้ใช้ได้ผลในกรณีส่วนใหญ่เนื่องจากปัญหาเกิดจากความเสียหายของระบบ คุณสามารถดาวน์โหลด Reimage Plus โดยคลิกที่นี่