• Hiện tại trang web đang trong quá hình chuyển đổi và tái cấu trúc lại chuyên mục nên có thể một vài chức năng chưa hoàn thiện, một số bài viết và chuyên mục sẽ thay đổi. Nếu sự thay đổi này làm bạn phiền lòng, mong bạn thông cảm. Chúng tôi luôn hoan nghênh mọi ý kiến đóng góp để chúng tôi hoàn thiện và phát triển. Cảm ơn

Cách viết Patch cho RomPatcher [Guide]

jinsk8r

New Member
Guide hoàn chỉnh
\-/\-/\-/\-/\-/
Cách viết Patch cho RomPatcher

  • Chuẩn bị?
Một soft edit HEX trên PC, tôi dùng HxD cho bài viết này
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
icon_razz.gif


Đầ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)


openxm0.png


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):

searchxh0.png


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):

resultcg5.png


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

changedvr7.png


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
icon_razz.gif

screenshot0027lx9.png





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")
dotrmpuy1.png









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 :p (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:
hexlocationsft5.png

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 :p

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 :D

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é :mad:))
*Độ 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


*Nếu có thể thì nhờ các Mod pin lên đầu box*
 

mathanh

New Member
trời ơi kô rành vụ này là khó vọt à nha, mình đang học cách đánh mã hex tiếng việt cũng đã nhức đầu rồi.
 

kp_enter

New Member
guilde từ khá lâu và cũng chỉ dừng ở mức giúp mọi người (có thể) hiểu và chỉnh sửa file patch :)). prefix thì còn thiếu abs nhưng ít gặp hơn. Ngoài ra RP+ còn support thêm 1 số statement như: #define, #ifdef (#ifndef), #else, #endif cũng rất có ích
Thêm cái syntax highlight cho ai dùng NP++
 

jinsk8r

New Member
guilde từ khá lâu và cũng chỉ dừng ở mức giúp mọi người (có thể) hiểu và chỉnh sửa file patch :)). prefix thì còn thiếu abs nhưng ít gặp hơn. Ngoài ra RP+ còn support thêm 1 số statement như: #define, #ifdef (#ifndef), #else, #endif cũng rất có ích
Thêm cái syntax highlight cho ai dùng NP++
Prefix abs năm thì mười họa mới dùng tới, còn statements đó thì thấy trong 1 số rmp chứ chưa xài bao h :p

Cũng chỉ dừng ở mức "vọc" thôi chứ ko chuyên sâu được ^^

Btw, nhìn mãi mới ra Notepad++ viết tắt =))
 
Chỉnh sửa cuối:

ngoanrazor

Well-Known Member
Sao ko dùng tool Ida để debug các modul rồi edit hex lun, cho vào rom khỏi patch j hết
 

Anther1991

New Member
Ờ, vậy mỗi lần muốn chỉnh thì phải flash flash, cho vứt cái máy luôn =))
 

panrai

Super V.I.P
Đang ngâm cú mấy cái file trong rom coi có j hay ko để viết đây :p

chiều h gâm cứu cái nầy muốn điên luôn vậy trời,dạo nầy trới nóng mà jin đưa những cái độc ko vậy ta :))
 

Em_be_hu

New Member
Cho mình hỏi với, cái này mình dùng để patch các pm được không nhỉ? Các pm thường cài trong C:/; nếu mình viết patch vd

SnR:sys/bin/x-plore.exe:0800A0EA:0000A0E1

Liệu nó có hiểu là phải tìm ở trong ổ C hay không? Nếu mà nó chỉ tìm ở ổ Z thì....
 

kp_enter

New Member
Cho mình hỏi với, cái này mình dùng để patch các pm được không nhỉ? Các pm thường cài trong C:/; nếu mình viết patch vd

SnR:sys/bin/x-plore.exe:0800A0EA:0000A0E1

Liệu nó có hiểu là phải tìm ở trong ổ C hay không? Nếu mà nó chỉ tìm ở ổ Z thì....
ko phải C cũng chẳng phải Z đâu bạn :D
Còn ở ổ C nếu bạn đã biết offset hay hex value cần sửa thì cứ mạnh dạn mà sửa thôi ;)
 

jinsk8r

New Member
ko phải C cũng chẳng phải Z đâu bạn :D
Còn ở ổ C nếu bạn đã biết offset hay hex value cần sửa thì cứ mạnh dạn mà sửa thôi ;)
Đúng rồi, mấy cái trong ROM thì mới patch chứ C:\ thì cứ Hex Editor sửa thẳng file luôn :D
 

novamoon

New Member
Cái nì biết lâu òi nhưng điều wan trọng là phải biết edit file nào và sửa ở đâu mới wan trọng, chẳng hạn như làm sao biết sửa file nào để máy đọc dữ liệu ở ổ C trước rùi mới đến ổ Z (C2Z), dù cho biết đó là file EFSrv.dll cũng hem biết sữa ở địa chỉ nào lun( mở hex ra chỉ thấy ký tự tào lao, ko thấy chữ C: hay Z: gì hết, đang đau đầu ở chỗ này nì)...cũng may là có vài cao thủ làm sẵn soft c2zmaker nhưng cũng chỉ làm được cho vài dòng máy thui... vụ này ai biết thì hướng dẫn cho anh em với
 

kennho

New Member
Đang ngâm cú mấy cái file trong rom coi có j hay ko để viết đây :p

Vậy thì nhờ bạn ngâm cứu thử xem viết được patch cho cái này không ;;) Mình cực kỳ ghét cái vệt sáng chạy ngang màn hình khi cài báo thức (xem hình) có cách nào làm cho nó ẩn đi không bạn ? Mình thấy đã có patch ẩn profile ẩn logo ẩn thông báo ... thì chắc cái này cũng ẩn được\-/

superscreenshot0291.jpg
 

Em_be_hu

New Member
Đúng rồi, mấy cái trong ROM thì mới patch chứ C:\ thì cứ Hex Editor sửa thẳng file luôn :D

Híc, nhưng mình đang nghiên cứu cách c.r.a.c.k soft, nên phải mò từng đoạn offset 1 cái nào đc thì mới dùng hex editor để sửa cho đỡ mất công mà. Mình đã thử và ko được, bùn quá. Jo muốn c.rack lại phải sửa file trực tiếp, mắc công quá hic hic
 
Top