6/6/14

A870 kernel - Make it 4.2 possible

I tried some ways, but none of them seem to compatible with us. Those pantech sourcecode is easy to track but not similar with any device out there. A870 kernel seem to be a fork of A8064AAAAANLYA1213507. Lets say it the begin of A870 kernel, now we try to merge it with jb_2.5 branchs (or A8064 tags)
A8064AAAAANLYA1213507
First I make a add support patch for A870 on A8064AAAAANLYA1213507 by merge -s theirs (A870) into A8064AAAAANLYA1213507.
then apply that patch into a common tag between jb_vanilla & A8064AAAAANLYA1213507 which is A8064AAAAANLYA1313. There are rejects then we need to fix it before going futher.

4/5/13

Unpack - repacking -ramdisk

Bài viết dành cho KTV, tôi ghi lại để ghi nhớ những gì đã làm.

Hôm nay tôi mày mò tìm cách giải nén ramdisk chỉnh sửa rồi nén nó lại, đa phần tôi làm trên ubuntu của mình. Bạn có thề tìm tools tương tự chạy trên windows để làm.

Đầu tiên là lấy boot.img từ android copy vào working dir

$ ./unpackbootimg /path/to/boot.img


section sizes incorrect
kernel 800 50bcc8
ramdisk 50c800 7de00
second 58a800 0
total 58a800 a00000
...but we can still continue
WARNING: non-standard load addresses!
WARNING: SHA checksum does not match



Bây giờ chúng ta nên có 1 file nén ramdisk và kernel image, tùy chỉnh theo yêu cầu rồi repack lại như sao:

$ ./mkbootfs /path/to/ramdisk | gzip > ramdisk-new.gz

Xem lại file boot.img-mk trong thư mục chứa ramdisk.gz và kernel.img để repack

$ ./mkbootimg --output boot-hot.img --kernel boot.img-kernel --ramdisk ramdisk-new.gz   --cmdline '' --board '' --base 80000000 --pagesize 4096

done...

PS: Working with sky a820l kernel I found standard unpacking method did not work anymore, take a look at split_bootimg.pl output:


Page size: 2048 (0x00000800)
Kernel size: 5291208 (0x0050bcc8)
Ramdisk size: 515584 (0x0007de00)
Second size: 0 (0x00000000)
Board name:
Command line: console=ttyHSL0,115200,n8 androidboot.hardware=qcom androidboot.carrier=LGT-KOR loglevel=0
Writing cm10boot.img-kernel ... complete.
Writing cm10boot.img-ramdisk.gz ... complete.


while unpackbootimg show:

WARNING: non-standard load addresses!
WARNING: SHA checksum does not match

Haiz...now dump to get more info

$ hexdump -n 40 cm10boot.img

0000000 4e41 5244 494f 2144 bcc8 0050 8000 4020
0000010 de00 0007 0000 4150 0000 0000 0000 4110
0000020 0100 4020 0800 0000                  
0000028


So:

Android! = 4e41 5244 494f 2144
Kernel size = 0050 bcc8
Kernel address = 4020 8000 base maybe 4020 0000
Ramdisk size = 0007 de00
Ramdisk address = 4150 0000 base maybe 4050000
Secondary size = 0000 0000
Secondary Address = 4110 0000 base maybe 4020 0000
Tags address = 4020 0100 confirm base = 40200 000
Page size = 0000 0800 = 2048

split-bootimg seem to get the right sizes, so i assumed it got the right image and i worked with it.
As mkbootimg.c working with options:

            hdr.kernel_addr =  base + 0x00008000;
            hdr.ramdisk_addr = base + 0x01000000;
            hdr.second_addr =  base + 0x00F00000;
            hdr.tags_addr =    base + 0x00000100;
It will break boot.img, repair those options is necessary

Now to check if it work again...


$ hexdump -n 40 boottest.img
0000000 4e41 5244 494f 2144 bcc8 0050 8000 4020
0000010 de00 0007 0000 4150 0000 0000 0000 4110
0000020 0100 4020 0800 0000                  
0000028
$ hexdump -n 40 cm10boot.img
0000000 4e41 5244 494f 2144 bcc8 0050 8000 4020
0000010 de00 0007 0000 4150 0000 0000 0000 4110
0000020 0100 4020 0800 0000                  
0000028
Nice...







1/5/13

Vì sao cứ phải là ROOT?



Những ngày đầu vọc phá android, tôi loay hoay root tới root lui cái x10 của mình, làm thì được mà vẫn không hiểu nó là gì? Vì sao đối với android, Root là điều đầu tiên người ta hay nói đến trước khi chỉnh sửa hệ thống, custom rom, flash kernel? Root là gì? Vì cao cứ phải là ROOT?

Hãy tưởng tượng điện thoại bạn như là ngôi nhà nhưng mà chủ nhà lại không phải là bạn. Chủ nhà là người nắm giữ chìa khóa vào nhà kho, phòng tập thể thao, và két sắt. Còn bạn, bạn chỉ là người khách vào nhà dùng nước, ăn bánh và xem tivi, lâu lâu mang vài món đồ vào nhà mà không được sơn phết, xây thêm phòng cho căn nhà. Bạn đúng là có không gian riêng cho mình, nhưng không phải là tất cả mọi không gian thuộc về bạn.

Điều này thật phi lý và bất công, khi không trao cho người dùng khả năng điều khiển hoàn toàn chiếc điện thọai của họ. Đối với nhà sản xuất thì đây lại là 1 yêu cầu hiển nhiên đề phòng trường hợp người dùng vô ý phá hỏng hệ thống của chính họ. Tương tư khi nói về các hệ điều hành khác, iOS chẳng hạn luôn cần phải jailbreak để cài ứng dụng đã "thuốc", hay là Windows luôn hỏi tài khoản administrator khi chạy file hệ thống.

Chủ nhà ở đây chính là root thường được nói đến, chúng ta chỉ có thể là chủ nhà nếu chúng ta có tập lệnh "su" (viết tắt của Switch User) hoặc hack root có thể được hiểu đơn giản là chúng ta đưa tập lệnh "su" vào hệ thống theo đường dẫn "/system/bin/su" hoặc "/system/sbin/su" và trao cho mình quyền thực thi lệnh đó. Vì chỉ có root mới có thể thực thi mọi lệnh trên hệ thống nên phải hack root mới làm được điều này. Mỗi loại máy sẽ có một cách hack root riêng nên chúng ta sẽ không tiếp tục đi sâu vào phương pháp hack root.

Trước đây có bạn nói với tôi root của android thì cũng giống như là jailbreak của ios. Khi ấy tôi cho là đúng nhưng đến lúc này là chưa đủ. Sức mạnh của android là mã nguồn mở, là tính mở của nhân linux bên trong, là sức mạnh tổng hợp của nhiều phát triển viên. Root android không chỉ đơn thuần là để cài các phần mềm cần quyền root, mà còn có thể giúp chúng ta tiếp cận sức mạnh tiềm tàng bên trong thiết bị. Vì thế mà mỗi ngày có càng nhiều hơn các dòng máy android bị nhà sản xuất khai  tử nhưng rom thì vẫn cứ up đều đều, rồi thì các tính năng đặc trưng như beats audio của HTC, bravia engine của Sony, dolby sound của LG, touchwiz của Samsung lại chạy được trên nhiều dòng máy khác. Phải chăng root là khởi đầu cho Android Phone của bạn.


18/4/13

Sửa framework.jar cho máy tính bảng chơi Gameloft

Sau đây là bài dịch lại hướng dẫn chỉnh sửa framework.jar để sửa lỗi gameloft bị forceclose ở bước kiểm tra bản quyền.

Nguồn: www.slatedroid.com

Áp dụng đối với một số máy tính bảng có hiện tượng như trên.

Lưu ý: Hãy chắc rằng bạn hiểu những gì sắp thay đổi, framework.jar bị lỗi sẽ dẫn đến soft-brick (treo logo) nên bạn luôn cần phương án backup đề phòng.

Chúng ta cần 1 số công cụ như sau:
  1. Java Run-time Environment (JRE) link
  2. Tập tin TelephonyManager.smali
  3. APK Multi-Tool
 Các bước thủ thuật:
  1. Chạy APK Multi-tool 1 lần để hoàn tất 1 số tập tin và thư mục rồi thoát ra
  2. Copy framework.jar trong /system/framework vào thư mục place-apk-here-for-modding
  3. Đổi tên framework.jar thành framework.apk
  4. Chạy APK Multi-tool, chọn 24, chọn framework.apk, chọn 9
  5. Chép đè TelephonyManager.smali vào thư mục projects\framework.apk\smali\android\telephony
  6. Chọn 11 để nén lại thành file System_framework.apk trong thư mục place-apk-here-for-modding
  7. Mở cmd rồi cd vào thư mục chứa APK Multi-tool, zipalign bằng lệnh sau:
    ..\other\zipalign -v 4 System_framework.apk framework.jar
  8. Trên android, copy /system/framework/framework.jar để lưu phòng sự cố, hoặc backup bằng recovery.
  9. Chép đè framework.jar mới chỉnh vào /system/framework/framework.jar và khởi động thiết bị.
Sau đó hãy vào thử Gameloft bị lỗi trước đó.

Chúc bạn thành công.