Phần 3 – Áp dụng patch và tận hưởng thành quả
Phần trước: Các patch cần áp dụng đối với AppleUSBXHCI
1. Đối với patch trực tiếp trên binary
Sau khi đã áp dụng các patch trên giao diện của 0xED, bạn vào menu File -> Save để lưu binary lại, như vậy file AppleUSBXHCI.kext trên Desktop đã được patch. Giờ bạn chỉ việc cài kext này bằng Kext Utility hoặc Kext Wizard (nhớ rebuild cache, repair permission) là xong.
2. Sử dụng Clover để patch AppleUSBXHCI on-the-fly
Mục này sẽ hướng dẫn cách cấu hình Clover để patch AppleUSBXHCI mà không cần phải sửa đổi trực tiếp binary bằng 0xED.
Lưu ý: Cơ chế patch on-the-fly của Clover là sẽ tìm chuỗi byte gốc (mục Find) trong binary của kext (ở trong RAM sau khi đã load) và thay thế nó bằng chuỗi byte mới (mục Replace). Nếu chuỗi byte gốc xuất hiện nhiều lần trong binary thì nó sẽ thay thế từng ấy lần, và như vậy sẽ làm kext bị lỗi và chạy sai hoặc không chạy được. Do vậy việc lựa chọn chuỗi byte gốc phải chính xác để khi Clover tìm thì chỉ ra 1 kết quả đúng với vị trí cần thay thế.
Để test chuỗi byte gốc, bạn mở binary gốc (chưa patch) của AppleUSBXHCI bằng 0xED. Trên giao diện của 0xED, bạn nhập chuỗi byte vào ô tìm kiếm, bấm vào nút kính lúp và chọn Hex Search. Nếu chỉ ra được 1 kết quả tìm kiếm tại đúng offset cần patch thì chuỗi byte gốc là OK.
a. Chuỗi byte gốc của các patch
Patch 1: Chuỗi byte gốc sẽ là:
00 80 75 34
Chuỗi byte thay thế sẽ là
00 80 EB 34
Patch 2: Chuỗi byte gốc sẽ là:
E0 3D 00 01
Chuỗi byte thay thế sẽ là
E0 3D 00 00
Patch 3: Các patch này đều thay đổi 0x400000 thành 0x0 nên mình sẽ gộp chúng lại. Chuỗi byte gốc sẽ là:
08 00 00 40
Chuỗi byte thay thế sẽ là
08 00 00 00
Patch 4: Chuỗi byte gốc sẽ là:
C8 00 00 00 01 48
Chuỗi byte thay thế sẽ là
C8 00 00 00 00 48
Patch 5: Chuỗi byte gốc sẽ là:
85 C0 75 4D
Chuỗi byte thay thế sẽ là
85 C0 EB 4D
b. Áp dụng trên Clover
Đầu tiên bạn cần có Clover Configurator, nếu chưa có thì tải ở đây. Chạy Clover Configurator, mở file config.plist rồi truy cập vào mục Kernel And Kext Patches.
Trong mục KextsToPatch, bấm nút + để thêm patch. Với mỗi patch, mục Name để là AppleUSBXHCI, mục Find nhập chuỗi byte gốc, mục Replace nhập chuỗi byte thay thế, và mục Comment để tên bất kì theo ý bạn. Chẳng hạn như mình làm dưới đây:
Sau khi đã thêm tất cả các patch, lưu file config.plist lại và thế là xong.
Hết