jinsk8r
New Member
Guide hoàn chỉnh
\-/\-/\-/\-/\-/
Cách viết Patch cho RomPatcher
\-/\-/\-/\-/\-/
Cách viết Patch cho RomPatcher
- Chuẩn bị?
Phone đã hack và cài RomPatcher
Lưu ý: Guide dài và hơi khó hiểu, ko dành cho newbies, tất cả những điều mình (và tác giả) cần viết đã viết trong guide.
- Bắt đầu công việc
Trước khi làm, bạn cần phải biết mình muốn patch gì, nó ở đâu. Ví dụ dưới đây là đổi thông báo #0000# của phone S60v3 thành N99 >.
Trước tiên tìm xem thông báo đó ở file nào (có thể dùng BestTaskman để xem), ở đây là file Phone.exe, trong file này chứa đường dẫn thông báo mà ta cần đổi
Đầu tiên extract file này từ rom và mở bằng HEX editor. (HxD như trong hình, hoặc Hex Workshop cũng được)
Sau đó tìm đến dòng Z:\resource\versions\model.txt là nơi chứa thông tin #0000# (có thể dùng search):
Bây giờ nhìn vào bên HEX code, bạn sẽ thấy tất cả trong khung xanh (tương ứng với đường dẫn bên decimal code):
Trước khi làm tiếp thì copy nguyên khung màu xanh đó vào 1 chỗ (notepad ect).
Ở bước này tôi sẽ sửa code để đường dẫn C:\ thành E:\ (patch: sẽ đọc file trong E:\ thay vì C, nhấp vào trước chữ C và sửa thành E (lưu ý chỉ sửa, ko thêm) ,để ý sẽ thấy HEX code đổi từ 5A sang 43 khi đổi C thành E
Tới đây coi như hoàn thành việc thay đổi, việc tiếp theo là viết patch.
Một file patch bao gồm dòng giới thiệu (có thể ko cần), bắt đầu bằng ; ,RP sẽ ko đọc những dòng này.
Và những dòng sau là code patch
Ví dụ
Mã:
;Model Text Changer
;This is a patch that changes the Model text
;here i can add as many lines as i want
;this was made by Microx256 from SF
SnR:sys\bin\Phone.exe:5A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400:45003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400
Bạn có thể sẽ thắc mắc SnR là gì ^^ mỗi patch đều có tiền tố SnR: (SnR = Search and Replace - tìm và diệt, í lộn, tìm và thay thế =)))
Sau SnR: là tên file và đường dẫn file (ko có tên ổ đĩa nhé) bạn muốn patch, trong ví dụ là Phone.exe và cả đường dẫn là sys\bin\Phone.exe
Sau tên file là dấu : và sau đó là đoạn code hex của file bạn patch (là code mà bạn đã copy vào notepad ở bước trước), sau code ban đầu là dấu : và cuối cùng là code HEX đã chỉnh sửa.
SnR:Tênfile:Code1:Code2
Code: Dòng 1: Chưa chỉnh sửa 5A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400
Dòng 2 : Đã chỉnh sửa 45003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400
Vậy là bạn đã viết xong một patch đơn giản ;!
Mã:
;Patch doi ten dien thoai
;co the add bao nhieu dong vao day tuy y
;guide dich boi Jinsk8r@PDAViet.net
SnR:sys\bin\Phone.exe:5A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400:45003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400
Vì ở trên bạn đã code patch C: thành E: nên nhớ chép file model.txt từ Z:\Resource\Versions\ vào E:\Resource\Versions\ và chỉnh sửa tùy thích nhé ^^
(Lưu ý là file model.txt giới hạn 20 ký tự)
Xong rồi copy patch vào E:\Patches\ và apply thôi
Cách lưu patch *.rmp
Khi mở notepad và lưu file thì mặc định nó sẽ lưu dạng .txt.
Để lưu dạng .rmp:
Khi lưu, Chọn Save as type: All Files (*.*) và ghi phần mở rộng .rmp vào sau tên file. Hoặc để nguyên .txt cũng được và cho cả tên file và phần mở rộng vào ngoặc kép (ví dụ: "patch.rmp")
Các tiền tố khác:
SnR: không phải là tiền tố duy nhất (nhưg được dùng nhiều nhất), ví dụ còn có Rel:
Tiền tố Rel: làm việc như SnR, nhưng bạn phải ghi địa chỉ và thông tin cần replace (SnR tự tìm, còn Rel bạn phải chỉ cho nó cần patch ở đâu - thích hợp khi có nhiều (2 trở lên) code trùng), cú pháp của Rel: là:
Rel:Tênfile:địachỉ:code1:code2
Giải thích:
location đây là chỗ khác nhau: địa chỉ của dòng 0x trong file (giải thích sau)
Còn lại giống SnR
Sự khác nhau của Rel và SnR?
- Như đã đề cập, nếu trong file có nhiều dòng HEX giống nhau, SnR sẽ search và replace tất cả, còn Rel sẽ chỉ replace những nơi bạn quy định
Và địa chỉ dòng 0x là gì?
Hãy mở HEX editor, ví dụ HXD:
Ta lại bắt đầu 1 lần nữa, cần biết sẽ patch file nào, và nó ở đâu:
Ví dụ, tôi sẽ remove thanh Search WLan ở màn hình chủ N95.
Tôi tìm được file cần phải patch là SnifferAIPlugin.dll ở Z:\sys\bin\
Để remove thanh đó, thì cần chỉnh ký tự HEX thứ 4 thành 00.
Và bạn để ý thì có rất nhiều đoạn code 10 00 00 79.. trong file, và tôi chỉ muốn đổi ở dòng đầu tiên thôi, thì phải dùng Rel.
Ví dụ ở hình dưới Chỗ màu xanh là chỗ tôi muốn patch:
và Khung màu đỏ là các dòng địa chỉ ;
Bây giờ là cách tìm địa chỉ trong Rel
Ví dụ, ký tự HEX thứ 4 là 00000003 vì bên trái là 00000000
vào ở trên là 03, 00000000 + 03 = 00000003 \-/
Một ví dụ nữa: Ở dòng 5, ký tự 7 sẽ có địa chỉ là 00000046 vì bên trái là 00000040 và phía trên là 06
Và patch sẽ là:
Mã:
;No Wlan in ActiveStandby
;This removes the Wlan Search bar from the Active Standby, atleast on nokia N95
;to get this to work, first disable ActiveStandby, and then apply the patch, and then again enable Active Standby
;By Microx256 from Symbian-Freak.com
;Translated to VN by Jinsk8r@PDAViet.net
rel:sys\bin\SnifferAIPlugin.dll:00000003:10:00
rel:sys\bin\SnifferAIPlugin.dll:00000000:79:00
Dễ hiểu rồi phải ko ^^
HEX là gì?
HEX (còn gọi là hệ Thập lục phân) là một dạng hệ thống số đếm (giống hệ Thập phân mà ta hay dùng) :ar!
Ví dụ:
Thập phân - HEX - Nhị phân
0 0 0
1 1 1
2 2 10
3 3 11
4 4 100
5 5 101
6 6 110
7 7 111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111
16 10 10000
17 11 10001
18 12 10010
19 13 10011
20 14 10100
21 15 10101
22 16 10110
23 17 10111
24 18 11000
25 19 11001
26 1A 11010
27 1B 11011
28 1C 11100
29 1D 11101
30 1E 11110
31 1F 11111
32 20 100000
...
Đơn giản hơn, ở hệ Thập phân (Decimals) mà ta hay dùng là 10 chữ số, 0 1 2 3 4 5 6 7 8 9
và HEX có 16 chữ số, 0 1 2 3 4 5 6 7 8 9 A B C D E F
hệ nhị phân chỉ có 2 chữ số, 1 và 0
Tất cả chỉ là số? Sao có thể như vậy?
- Đúng vậy, mỗi số HEX biểu thị cho một ký tự (ví dụ ký tự A (A hoa) có code HEX là 41.
và là 65 trong Thập phân, 1000001 trong Nhị phân :ar!
Có thể dùng Windows Calculator (máy tính), chọn Scientific và thử )
So, Remember this:
- HEX là số, và mỗi ký tự có một con số HEX riêng
- Trong trình HEX editor, HEX đi theo cặp 2 số, biểu thị cho 1 Byte, và nếu chuyển 2 số sang nhị phân Binary, bạn sẽ có 8 số Nhị phân, và một số trong hệ Nhị phân chiếm 1 byte (1byte=8bits) cái này đã học ở phổ thông, 1 ký tự chiếm 1 byte, vậy 2 số HEX biểu thị 1 ký tự =D>
FAQs - Những câu hỏi thường gặp:
Làm sao biết file nào cần patch?
-> Cứ chịu khó tìm từng file và bạn sẽ thấy chỗ hay ho để patch, đó là cách tôi (tác giả) làm
Patch không hiện trong RomPatcher?
-> Hãy nhớ copy patche vào E:\Patches và patch có phần mở rộng là .rmp
Khi thử apply patch, patch hiện dấu gạch chéo đỏ, hoặc chấm than vàng?
-> Có nhiều lý do:
*Bạn đang patch 1 file không có trong ROM (nhớ đây là ROM Patcher không phải Z Patcher >)
*Code HEX cần tìm không đúng
*2 đoạn code HEX không dài bằng nhau (phải bằng mới SnR được nhé ))
*Độ dài của 2 đoạn code phải chia hết cho 2 (tất nhiên, vì đây là HEX - đọc HEX là gì)
Làm cách nào để biết file có trong ROM hay không?
-> Dùng công cụ ROM Dump tool (by Zorn) để lưu file trong ROM vào máy tính
Patches có hại cho ĐT không?
-> Không hẳn
Có thể patch nhiều file cùng lúc không?
-> Có, ví dụ đây:
Mã:
;all info mod
;this mod lets you change the whole *#0000# screen
;make files E:\resource\versions\sw.txt and E:\resource\versions\model.txt on the memorycard
;then customize them as you want
;there is a 64 character limit for the sw.txt, which is displayed first
;and a 20 characters limit for the model.txt, which is displayed after sw.txt
;use \n for a new line, also note, the new line uses 2 characters, and there dont need to be a space before or after the marks
;also note that the model.txt will be displayed right after sw.txt without a new line, unless you define it so
;and you can use the new line marking \n only in sw.txt, it wont work in model.txt
;combined mod by Microx256 from SF
SnR:sys\bin\sysutil.dll:5A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C00730077002E0074007800740000001F0000005A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006C0061006E006700730077002E0074007800740000001D0000005A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006C0061006E0067002E007400780074:45003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C00730077002E0074007800740000001F00000045003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006C0061006E006700730077002E0074007800740000001D00000043003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006C0061006E0067002E007400780074
SnR:sys\bin\Phone.exe:5A003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400:45003A005C007200650073006F0075007200630065005C00760065007200730069006F006E0073005C006D006F00640065006C002E00740078007400
Guide viết bởi Microx256 trên 4rum www.symbian-freak.com
Dịch và bổ sung bởi Jinsk8r@PDAViet.net
Dịch và bổ sung bởi Jinsk8r@PDAViet.net
*Nếu có thể thì nhờ các Mod pin lên đầu box*