วิธีแยกส่วนประกอบและธีม Android APKs

คุณเคยเปิดแอป Android และไม่ชอบธีมสีที่ใช้หรือไม่ จะทำอย่างไรถ้าคุณต้องการเปลี่ยนพื้นหลังสีขาวในแอปเป็นสีดำเช่น? วันนี้ฉันจะแสดงวิธีแปลไฟล์ .APK เพื่อให้คุณสามารถแก้ไขไฟล์ภายในได้จากนั้นคอมไพล์และติดตั้งใหม่บนโทรศัพท์ Android ของคุณ

หมายเหตุ: แอปบางอย่างอาจยากกว่าธีมอื่น ๆ เช่น Facebook Messenger เป็นเรื่องยากที่จะเป็นธีม ฉันจะนำคุณไปสู่คู่มือนี้โดยใช้แอปพลิเคชัน Dropbox เป็นตัวอย่างเนื่องจากเป็นหนึ่งในวิธีที่ง่ายที่สุดในการแก้ไข

ความต้องการ

  1. Notepad ++
  2. APKTool + AAPT ล่าสุด
  3. สคริปต์เครื่องมือ APKMulti
  4. โปรแกรมแก้ไขภาพเช่น Photoshop / GIMP
  5. [ไม่บังคับ] 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 โดยคลิกที่นี่

Facebook Twitter Google Plus Pinterest