- CT này dùng lưu lại các ngày tháng sinh nhật. ta chọn New, đặt một cái tên gì đó rồi OK. Sau đó chọn Close: - Đây là GUI của Soft. Để đăng kí nó Click vào chữ Biorhythm phía trên: - Chọn Register…: - Nhập đại số nào vào, rồi OK. CHOẢNG!!! ui da: - Cứ nghĩ là trên PC mới bị uýnh thế này. Nào dè trên Palm cũng bị trúng chiêu hích hích. Và vẫn câu nói “nhớ lấy cái thông báo ấy”.(những câu nói bất hủ ;)) ) C- Analyze: - Giờ quay lại PRCEdit. Chọn thẻ RCP và tìm các dòng sau:(có thể chọn Find rồi gõ “Not registered”) Vậy ta biết thông báo lỗi này nằm ở Alert có ID là 1100 - Nhấn vào mục Alerts để trổ ra : - Nhìn vào thì thấy thông báo mà ta muốn là ở ID 1000. Quay lại tab RCP coi nó chỗ nào: - Giờ bấ m vào ID 110 0 ALERT ID 1100 ERROR HELPID 0 DEFAULT 0 BEGIN TITLE "Not registered !" ALERT ID 1100 ERROR HELPID 0 DEFAULT 0 BEGIN TITLE "Not registered !" ALERT ID 1000 INFORMATION HELPID 0 DEFAULT 0 BEGIN TITLE "Registered !" Find v ớ i t ừ này cho trổ ra, rồi lại Click mục References trổ ra tiếp: - Ta cũng thấy rõ vai trò của PilotDis. Nếu ko có nó thì ta ko thể tới các tham chiếu này. Bây giờ có 2 dòng, một là mũi tên màu xanh trỏ vào, hay là dấu chấm ?Không biết tìm đoạn Code quan trọng ở khúc nào, ta thử từng cái xem sao: - Dòng đầu tiên, Double-Click vào :(xem cửa sổ Code) 00001c6e 3f3c044c MOVE.W #1100!$44c,-(A7) ; Not registered ! - Lưu ý là trong ASM Motorola, toán hạng đích sẽ nằm ở bên phải, nguồn ở bên trái dấu “phẩy”. Ngược hẳn với trật tự trên ASM x8086. Ngoài ra, khi làm việc với “số”, cần thêm dấu “#” trước số đó. - Còn đây là dòng thứ 2,Double Click vào: 000001fa 0640044c ADDI.W #1100!$44c,D0 - Dòng đầu sẽ đưa số 1100 vào thanh ghi A7, nơi có chuỗi “Not registered !” ,còn dòng lệnh thứ 2 sẽ cộng 1100 vào thanh ghi D0.Vậy dòng đầu là nơi cần đến. - Ta cố hiểu sơ qua các Code này một tí : 00001c6e 3f3c044c MOVE.W #1100!$44c,-(A7) ; Not registered ! 00001c6e = line identifier 3f3c044c = lệnh (Move 1100 vào (A7)) trong mã máy. MOVE.W = lệnh dạng ASM 68K. (Move, assign) #1100!$44c, = Giá trị được chép vào, #1100(thập phân) $44c là 1100 dạng Hex -(A7) = Thanh ghi được chép vào - Giờ dòm các dòng phía trên xem: 00001c44 4e4fa0c5 TRAP #15,$A0C5 = sysTrapStrCopy 00001c48 486dffdc PEA -36(A5) 00001c4c 4ebafe5a JSR L211 00001c50 4a00 TST.B D0 00001c52 4fef000c LEA 12(A7),A7 00001c56 6712 BEQ L222 Nhảy tới nhãn L222 00001c58 1b7c0001ffb5 MOVE.B #1,-75(A5) 00001c5e 3f3c03e8 MOVE.W #1000!$3e8,-(A7) ;Registered ! 00001c62 4e4fa192 TRAP #15,$A192 = sysTrapFrmAlert 00001c66 544f ADDQ.W #2,A7 00001c68 600e BRA L223 00001c6a 422dffb5 L222 CLR.B -75(A5) Nhãn L222 00001c6e 3f3c044c MOVE.W #1100!$44c,-(A7) ; Not registered ! - Phần nhãn trên máy các lão có thể sẽ khác nhé.BEQ tức là JE- nhảy nếu bằng. Vậy nếu điều kiện cho lệnh nhảy này thỏa, ta sẽ nhận được cái thông báo “Not Registered !”. Còn nếu nó ko nhảy ?? Có thể ta sẽ được “Registered”. D- SouthDebugger ,X-Master & Patching level 1: - Để thử điều trên. Ta nên debug nó, và giờ là lúc móc “Giang Nam Sầu Kiếm” ra đấy bà con. - Bây giờ trong trình Emulator, ta sẽ nạp X-Master vào:(Click phải) - Okie, giờ đã có X-Master:(nằm dưới cùng list Applications) - Trước khi chạy X-Master, ta cũng phải khởi động trình Debug đã. Chạy file “south.jar” (định dạng file Java là *.jar). Nó sẽ hỏi IP để kết nối, cứ để IP mặc định của nó rồi nhấn “Connect”. Chọn như hình: - Chọn thêm cửa sổ Breakpoint: - Vậy ta đã gọi ra 2 cửa sổ làm việc chính: . xem: 00 001 c44 4e4fa0c5 TRAP #15 ,$A0C5 = sysTrapStrCopy 00 001 c48 486dffdc PEA -36(A5) 00 001 c4c 4ebafe5a JSR L 211 00 001 c 50 4a 00 TST.B D0 00 001 c52 4fef 000 c LEA 12 (A7),A7 00 001 c56 6 712 BEQ. 00 001 c58 1b7c 000 1ffb5 MOVE.B #1, -75(A5) 00 001 c5e 3f3c03e8 MOVE.W # 10 00! $3e8,-(A7) ;Registered ! 00 001 c62 4e4fa192 TRAP #15 ,$A192 = sysTrapFrmAlert 00 001 c66 544f ADDQ.W #2,A7 00 001 c68 600 e. thứ 2 sẽ cộng 11 00 vào thanh ghi D0.Vậy dòng đầu là nơi cần đến. - Ta cố hiểu sơ qua các Code này một tí : 00 001 c6e 3f3c044c MOVE.W #11 00 !$44c,-(A7) ; Not registered ! 00 001 c6e = line identifier