- Hừm đợi đấy, rồi các hạ sẽ biết tay mỗ. Giờ ta đăng kí lại lần nữa, OK và ta sẽ Break tại lệnh nhảy vừa set BP ở trên: - Chà. cũng giống Olly quá nhỉ, đâu khó phải ko các lão.Giờ phải đảo ngược lệnh nhảy này thành JNZ – Nhảy nếu ko bằng. Tham khảo các lệnh nhảy trong ASM Motorola một tí nha: Nhảy không dấu : A > B BHI ( nhảy nếu lớn hơn ) A >= B BCC ( nhảy nếu cờ Carry ko bật ) A <= B BLS ( nhảy nếu bé hơn hoặc bằng ) A < B BCS ( nhảy nếu cờ carry set ) A = B BEQ ( nhảy nếu bằng ) A <> B BNE ( nhảy nếu ko bằng) Nhảy có dấu : A > B BGT ( nhảy nếu lớn hơn ) A >= B BGE (nhảy nếu lớn hơn hoặc bằng) A <= B BLE ( nhảy nếu bé hơn hay bằng ) A < B BLT ( nhảy nếu bé hơn ) A = B BEQ (nhảy nếu bằng ) A <> B BNE ( nhảy nếu không bằng ) Nhảy ko điều kiện: BRA (luôn nhảy) BSR, JSR (nhảy tới subroutine) - Vậy lựa chọn tốt nhất là BNE. Nhưng thay đổi một lệnh như thế nào? Ta không thể Assemble lại như trong Olly, ta phải thay đổi bằng Opcode của lệnh (tức mã máy). Hãy xem trong PRCEdit: (hoặc phần Opcode ở đầu Tut) - Như thế, ta cần thay đổi Opcode “67” thành “66”. Thử đồi trong SD trước, Click phải ngay lệnh đó, chọn: - Nếu chọn “new memory dump window”, chúng ta sẽ phải sửa các Byte như trong của sổ Dump của Olly. Nếu chọn ”change memory content” ,sẽ sửa giống như khi nhấn Ctrl-E trong Olly. Tàn mỗ chọn cái thứ 2: - Đổi thành: - Giờ xóa BP của sysTrapFrmAlert, ta Click phải ngay dòng sysTrapFrmAlert dưới lệnh nhảy , chọn “remove breakpoint”. Sau đó nhấn F5 cho soft chạy…… Bùm: - Bùm… nhưng là pháo bông chứ hông phải lựu đạn :D .Vậy là các lão đã xử xong cái NAG của Biorhythm rồi đó. Nhưng biết đâu chỉ là xử cái NAG thôi, chứ thật ra vẫn chưa REG. Ta chọn Biorhythm Option Register lại xem nào: - Vẫn là thông báo “Registered !”. Như thế chỉ cần REG xạo một lần, Soft vẫn tưởng là đã đăng kí. - Giờ cần save file đã Crack này lại, qua PRCEdit để làm việc này.Cửa sổ Code: 00001c56 6712 BEQ 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) 00001c6e 3f3c044c MOVE.W #1100!$44c,-(A7) ; Not registered ! 00001c72 4e4fa192 TRAP #15,$A192 = sysTrapFrmAlert - Dòng màu đỏ là dòng cần thay đổi (ta chỉ mới làm điều này trong SD). Click phải ngay dòng đó, chọn:(address các lão có thể khác) - Tới đây trong Tab Binary Code: Address tại đây ko giống với address khi ta chọn Jump – mỗ ko hiểu ? - Sửa trực tiếp lại thành: - Chọn File Save as: - Có thể ko cần Test ta cũng biết file này Okie. Nhưng suy nghĩ một tí nào, với kiểu Patch thế này, khi đem file này qua các máy Palm khác nhau (hay mỗi lần nạp vào Emulator), ta cứ phải Register ít nhất một lần thì mới coi như đã REG.Do đó, đã Patch thì phải Patch sao cho nó luôn là đã REG. Tiếp theo đây, chúng ta sẽ nghiên cứu kĩ thuật patch cao siêu hơn nhá. E- Patching Level 2: - Giờ quay lại chỗ cũ: 00001c56 6712 BEQ L222 00001c58 1b7c0001ffb5 MOVE.B #1,-75(A5) cờ đã đăng kí 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) xóa cờ 00001c6e 3f3c044c MOVE.W #1100!$44c,-(A7) ; Not registered ! 00001c72 4e4fa192 TRAP #15,$A192 = sysTrapFrmAlert - Ở 2 dòng màu vàng, dòng đầu tiên sẽ đánh dấu cờ nếu Soft đã đăng kí, tức là MOV 1 vào ô nhớ có địa chỉ là giá trị của thanh ghi A5 trừ đi 75(số 75 này trên máy các lão sẽ khác) . Code: 00 001 c56 6 712 BEQ L222 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. chỗ cũ: 00 001 c56 6 712 BEQ L222 00 001 c58 1b7c 000 1ffb5 MOVE.B #1, -75(A5) cờ đã đăng kí 00 001 c5e 3f3c03e8 MOVE.W # 10 00! $3e8,-(A7) ;Registered ! 00 001 c62 4e4fa192 TRAP #15 ,$A192 = sysTrapFrmAlert. sysTrapFrmAlert 00 001 c66 544f ADDQ.W #2,A7 00 001 c68 600 e BRA L223 00 001 c6a 422dffb5 L222 CLR.B -75(A5) xóa cờ 00 001 c6e 3f3c044c MOVE.W #11 00 !$44c,-(A7) ; Not registered ! 00 001 c72 4e4fa192 TRAP #15 ,$A192