loki được xem là phương pháp hack boot cực kỳ nổi tiếng do một người cực thông minh tên là dan rosenberg công bố. đến thời điểm bây giờ, mặc dù loki không chiếm vị trí độc tôn như trước nữa, nhưng trong một thời gian dài, loki đã hỗ trợ biết bao dòng máy và người dùng có những bản rom và đặc biệt là các recovery.
vốn bản tính thích vọc vạch, vả lại, gx cũng quá hạn chế về rom, do đó, mình đã tìm đến cách loki cho gx như sau:
- code loki: https://github.com/djrbliss/loki (thanks @djrbliss).
- phần mềm đọc hexa hxd: http://mh-nexus.de/en/hxd/
- terminal emulator: https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=en
- kiên nhẫn một tý
do có thể ảnh hưởng đến máy do trong quá trình thao tác sai cũng nên một số chi tiết xin không cụ thể.
1. lấy aboot.img và boot.img từ điện thoại
chạy app terminal emulator trên gx, ta gõ các lệnh sau:
Mã:
$su
# dd if=/dev/block/platform/msm_sdcc.1/by-name/aboot of=/sdcard/aboot.img
# dd if=/dev/block/platform/msm_sdcc.1/by-name/boot of=/sdcard/boot.img
vậy ta được 2 file aboot.img và boot.img trên bộ nhớ trong của gx. nối cáp với máy tính, copy qua 1 thư mục xác định để tiếp tục hành trình khám và phá.
2. chỉnh sửa boot.img
sử dụng tool bất kỳ để bung file boot.img, sau đó, chỉnh sửa một số thứ, thay đổi kernel rồi đóng lại. do có thể ảnh hưởng đến điện thoại của các bạn (đối với những bạn tò mò nhưng chưa nghiên cứu kỹ) hay thật ra là hiểu biết của mình quá hữu hạn nên bước này xin không đi chi tiết.
3. tìm aboot_base
dùng hxd mở file aboot.img.
từ những dòng đầu tiên, ta được:
offset 0000 05 00 00 00 03 00 00 00 00 00 00 00 00 00 f0 88 38 9f 04
tại địa chỉ 0x0c - 0xf, ta được: 00 00 f0 88, đảo lại là giá trị 88f00000.
lấy 0x88f00000-0x28 = 0x88efffd8, địa chỉ này gọi là aboot_base.
4. tìm hdr address
tiếp theo, ta tìm xâu android-boot! ta nhận được:
offset 31a30 41 4e 44 52 4f 49 44 2d 42 4f 4f 54 21 00 00 00 android-boot!...
offset 4749c 41 4e 44 52 4f 49 44 2d 42 4f 4f 54 21 00 00 00 android-boot!...
trong hai đoạn này, có vẻ 4749c chứa dấu hiệu bắt đầu boot.img.
lấy : 0x88efffd8+ 0x4749c = 0x88f47474
đảo lại, ta được: 7474f488, tiếp tục tìm giá trị hexa, ta được:
offset 0d6f0 9c 41 f5 88 20 04 f6 88 80 74 f5 88 18 54 f5 88 08 44 f5 88 94 1f f3 88 60 74 f4 88 f8 e5 f2 88 79 c2 f0 88 d4 1f f3 88 d1 d0 f0 88 dc 1f f3 88 81 bb f0 88 e4 1f f3 88 a1 cb f0 88 f0 1f f3 88 9d b9 f0 88 f8 1f f3 88 71 b9 f0 88 0c 20 f3 88 19 cd f0 88 18 20 f3 88 f9 ba f0 88 28 20 f3 88 7d bc f0 88 38 20 f3 88 40 20 f3 88 48 20 f3 88 30 ef f2 88 50 20 f3 88 a4 41 f5 88 5c 20 f3 88 a0 41 f5 88 0c 44 f5 88 c1 b9 f0 88 29 bc f0 88 70 57 f4 88 98 41 f5 88 74 74 f4 88 40 1f f3 88
offset 0cd00 08 48 02 b0 bd e8 70 40 03 f0 f8 b8 4c 14 f3 88 10 44 f5 88 20 f4 f5 88 08 1a f3 88 74 14 f3 88 28 14 f3 88 54 14 f3 88 10 b5 04 46 fd f7 42 ff 00 b1 10 bd 20 46 bd e8 10 40 ff f7 47 b8 00 bf 06 48 08 b5 03 69 1b b9 01 23 03 61 ff f7 ec ff 03 48 bd e8 08 40 00 f0 53 bf 00 bf 74 74 f4 88
tìm tiếp, ở offset 0cb8c có một giá trị đáng chú ý: 18 44 f5 88
offset 0cb60 4f f0 ff 30 0e e7 00 bf 5c 12 f3 88 08 19 f3 88 24 19 f3 88 40 19 f3 88 50 19 f3 88 80 16 f3 88 80 74 f5 88 e0 14 f3 88 10 44 f5 88 18 44 f5 88 74 74 f4 88 9c 41 f5 88 bc 17 f3 88 f8 e5 f2 88
ở offset 0c8f4 cũng vậy
offset 0c8a0 a0 ec f2 88 d4 16 f3 88 d8 04 f3 88 e0 14 f3 88 98 41 f5 88 18 54 f5 88 a0 41 f5 88 08 ea f2 88 b0 16 f3 88 98 17 f3 88 10 44 f5 88 6c 17 f3 88 74 74 f4 88 28 17 f3 88 94 41 f5 88 4c 17 f3 88 54 14 f3 88 6c 18 f3 88 1c 18 f3 88 94 18 f3 88 f4 18 f3 88 18 44 f5 88
ở offset 0c610 lại có địa chỉ: 18 44 f5 88
offset 0c5e0 4f f0 ff 30 13 e7 00 bf 5c 12 f3 88 98 16 f3 88 08 19 f3 88 24 19 f3 88 40 19 f3 88 50 19 f3 88 b8 f2 f5 88 80 74 f5 88 f8 e5 f2 88 10 44 f5 88 18 44 f5 88 74 74 f4 88 9c 41 f5 88 e0 17 f3 88
với sự xuất hiện liên tiếp của giá trị 1844f588 (đảo lại thành 88f54418) đáng nghi là địa chỉ hdr.
5. tìm check sigs address
để tìm được check sigs address, ta tìm các mẫu của lg đã tìm được trước đó, tìm giá trị: 2d e9 f0 4f ad f5 c6 6d, ta tìm ra ở offset 11088,
lấy 0x88efffd8+0x11088=0x88f1160.
đây là địa chỉ check sigs.
bổ sung code trong loki patch.
mở file loki_patch.c, ta bổ sung đoạn code sau dưới loki của gpro
Mã:
{
.vendor = "lgu",
.device = "lg optimus gx",
.build = "f310l20f, f310l20g, f310lr10i, f310lr10j",
.check_sigs = 0x88f11060,
.hdr = 0x88f54418,
.lg = 1,
},
nhìn lên ta thấy các code cho gpro như sau:
Mã:
{
.vendor = "at&t or hk",
.device = "lg optimus g pro",
.build = "e98010g or e98810b",
.check_sigs = 0x88f11084,
.hdr = 0x88f54418,
.lg = 1,
},
{
.vendor = "kt, lgu, or skt",
.device = "lg optimus g pro",
.build = "f240k10o, f240l10v, or f240s10w",
.check_sigs = 0x88f110b8,
.hdr = 0x88f54418,
.lg = 1,
},
như vậy, địa chỉ hdr của gx và gpro là như nhau.chỉ khác nhau cái check sigs.
biên dịch lại code này, patch cho boot của gx (đã unpack, edit ramdisk và repack), bỏ vào máy, khởi động vào rom bình thường, vậy, ta đã bypass được bootloader của gx.
Chủ đề cùng chuyên mục xem nhiều nhất:
Chủ đề cùng chuyên mục mới nhất:
Cấu tạo bàn thờ thiên ngoài trời bằng đá tại Bình Phước Bình Dương Khác với những mẫu ban thờ tại gia tiên, thì bàn thờ thiên ngoài trời bằng đá tại Bình Phước, Bình Dương có cấu tạo vô cùng đặc...
Thiết kế bán bàn thờ thiên bằng đá tại bình phước bình dương