Cracker Handbook 1.0 part 239 ppsx

5 81 1
Cracker Handbook 1.0 part 239 ppsx

Đang tải... (xem toàn văn)

Thông tin tài liệu

vẫn còn nguyên xi đó không hề nhúc nhích thế mới đau cơ chứ. -**** Chúng ta lại nhấn “RESCAN CD” , và ặc ặc … hic hic cái Title bar đã lại thay đổi lại thành bad guy rùi kìa , và chúng ta vẫn không thể play game được cú thế. :sick: Chúng ta quay trở lại Olly , pause game , và nhìn vào cửa sổ Dump Window . Bây giờ giá trị 01 đã được thay bằng 00. Điều này có nghĩa là : Chúng ta cần phải lừa chương trình khi nó đang thay đổi giá trị tại [4FDCFC]. -**** Để thực hiện được chúng ta làm như sau , chúng ta sẽ đặt một BP là memory breakpoint. Click chuột phải tại byte của ổ nhớ [4FDCFC] , sau đó chọn “ Breakpoint” > “ Memory on write” , như hình dưới đây : -**** Không quá khó để thực hiện thao tác trên, nếu đặt xong BP chúng ta sẽ run lại game bằng cách nhấn F9 . Chúng ta quay trở lại với game, nhấn “RESCAN CD” . Olly sẽ dừng lại , tương tự như hình minh họa dưới đây : -**** Như các bạn thấy ở đây, bản thân hình minh họa cũng đã cho chúng ta thấy tất cả : [4FDCFC] được khởi tạo với giá trị của ecx mà ở đây cụ thể là 0 (bad guy). Chúng ta có 3 lệnh nhảy ở đây (3 jumps) những lệnh nhảy này sẽ đưa chúng ta thóat khỏi đoạn code mà cho chúng ta giá trị 1 (bad guy). Điều này có nghĩa là giá trị tại [4FDCFC] sẽ luôn luôn là 0 (bad guy). Nếu một trong ba lệnh nhảy này không được thực hiện thì (hehe) , các bạn có thể tượng tượng ra được mà ,giá trị tại ô nhớ [4FDCFC] sẽ được gán là 1 (good guy ). Ở đây mình sẽ không đi chi tiết vào cơ chế bảo vệ của chương trình vì đây chỉ là tut dùng Olly để gỡ bỏ sự bảo vệ đó mà thôi. -**** Vì vậy tất cả những gì chúng ta phải làm bây giờ là tống khứ các lệnh nhảy lồng nhau như chúng ta đã thấy ở trên (nop them) Nhưng chúng ta hãy làm điều này một cách lịch sự và nhẹ nhàng. Các bạn biết đấy, câu lệnh quan trọng cuối cùng trong thủ tục này là gán giá trị 1 vào ô nhớ [4FDCFC] nếu như tất cả đều OK (Giống như đang có CD trong ổ đĩa). Vì vậy chính thủ tục này là cơ chế protect của game , and Nothing Else. Chúng ta hãy cố gắng làm cho thủ tục này trả về giá trị 1 trong ô nhớ [4FDCFC] mà không cần quan tâm tới các lệnh ở trên (tất cả các câu lệnh đó đều đi ngược với mục đích của chúng ta :) ) . Vậy để có thể đi tiếp đến cuối con đường tà đạo này chung ta sẽ tìm đến điểm bắt đầu của thủ tục này . Chúng ta sẽ viết lại câu lệnh này bằng câu lệnh sau “ mov dword ptr ds:[4FDCFC], 1” và làm cho nó quay trở về chương trình chính bằng câu lện RET. -**** Để tìm được điểm bắt đầu của thủ tục protect , chúng ta cuộn chuột lên phía trên một chút , chúng ta sẽ nhìn thấy điểm bẳt đầu của thủ tục giống như hình minh họa dưới đây : -**** Oki , keke giờ thì chúng ta đã tìm thấy rùi đó. Olly đánh dấu điểm bẳt đầu này bằng dấu “$” (“$” sign) . Bạn click chuột để highlight dòng lệnh đầu tiên này, bây giờ bạn hãy nhìn xuống cửa sổ Tip Window bạn sẽ thấy được thủ tục này được gọi từ địa chỉ nào. Ở đây có 2 hàm Call gọi đến thủ tục này . Một ý nghĩ thoáng qua trong đầu mình : Chúng ta sẽ đến vị trí của hàm mà gọi thủ tục Protect để tìm hiểu xem nếu chúng ta nop các lệnh gọi thủ tục Protect này thì game sẽ hoạt động ra sao. Vì vậy tại cửa sổ Disassembler Window , chúng ta nhấn Ctrl+G , sau đó gõ địa chỉ của lệnh Call vào (4B1B78) như hình minh họa dưới đây : -**** Và chúng ta sẽ đến vị trí của lệnh Call sau khi chúng ta nhấn “OK” : ) . -**** Chúng ta có thể nop lệnh call tại 4B1B78 , nhưng sau khi chúng ta nop sẽ nảy sinh một số vấn đề như sau , giá trị của ô nhớ [4FDCFC] sẽ không bao giờ là 1 , trừ khi nó được gán là 1 ngay tại dòng lệnh đầu tiên của chương trình hiiiiii. Điều này có nghĩa là chúng ta sẽ vẫn nhẫn được thông báo no CD error . :sick: -**** Vì vậy chúng ta sẽ thực hiện theo ý tưởng mà chúng ta đã đề xuất ở trên . Chúng ta hãy quay trở lại vị trí bắt đầu của thủ tục Protect (4C3EA0) và sẽ khiến nó trả về những gì mà chúng ta muốn (đó là good guy). Để có thể thay đổi câu lệnh này chúng ta làm như sau , click để highlight câu lệnh đó , sau đó nhấn [SPACE] (hoặc là Double Click). Sau đó chúng ta viết câu lệnh cần thay thế vào đây để thay thế câu lệnh cũ . Chúng ta thực hiện như hình minh họa dưới đây : -**** Ở đây chúng ta đã thay thế bằng một câu lệnh để gán giá trị 1 cho ô nhớ [4FDCFC] (set good guy flag) và quay trở về lệnh call đã gọi thủ tục thông qua câu lệnh RETN (Return ). Hiiii chúng ta đã rút ngắn lại thủ tục này : ). Chú ý rằng tất cả các câu lệnh tiếp theo sau trong thủ tục Protect này sẽ không được thực hiện vì chúng ta đã dùng một lệnh RET ở phía trên tất cả các lệnh đó. -**** Oki , đây là giờ phút quan trọng và hồi hộp nhất :D … Không hiểu nó có làm việc như những gì chúng ta mong đợi không đây . Tất cả vẫn còn đang chờ ở phía trước .!!! Chúng ta nhấn F9 để run chương trình và chúng ta quay trở lại game nhưng chú ý rằng chúng ta phải xóa bỏ điểm đặt memory BP mà chúng ta đã thiết lập tại ô nhớ [4FDCFC] . Chúng ta phải làm thế nào , sau một quá trình thực hiện như trên thì giờ đây việc làm này là hết sức đơn giản : ) so easy !!: Right Click lên byte tại ô nhớ [4FDCFC] trong cửa sổ Dump Window, chọn “Break Point” > “Remove memory breakpoint”. Giống như hình minh họa dưới đây : -**** Oki , Hmm Phù mệt quá . Giờ thì chúng ta hãy Run game để chiêm ngưỡng kết quả mà chúng ta đã vất vả lắm mới thực hiện được ……… suỵt hiiiiiiiiii : ) :wub: Oa oa Game Playable !! Congratutlations : )!! Đúng thế đó các bạn ơi chúng ta đã thành công rồi đó !! :P For i := 1 to n YYYEEEEESSSSSS!!! -**** Bây giờ bạn có thể chơi game một cách bình thường mà không cần phải nhở vả đến cái đĩa CD làm gì cho mệt hiii. Nhưng nếu như bạn close your PC và muốn chơi lại game MK vào buổi sáng ngày hôm sau thì không được rùi !!! Chẳng nhẽ chúng ta lại load lại game vào trong Olly hay sao ?? Thế thì mệt quá đúng không …… chỉ còn một cách hiệu quả nhất là Patch nó đi anh em ơi!!! : ) -**** Chúng ta sẽ dùng Olly như là một chương trình HEX Editor (Kool!). Để thực hiện công việc này chúng hãy tạm dừng game lại đã (Press F12) . Right Click ở cửa sổ Disassembler Window , sau đó chọn “Copy to executable” > “All modifications “ giống như hình minh họa dưới đây : . ta quay trở lại Olly , pause game , và nhìn vào cửa sổ Dump Window . Bây giờ giá trị 01 đã được thay bằng 00 . Điều này có nghĩa là : Chúng ta cần phải lừa chương trình khi nó đang thay đổi giá. của ecx mà ở đây cụ thể là 0 (bad guy). Chúng ta có 3 lệnh nhảy ở đây (3 jumps) những lệnh nhảy này sẽ đưa chúng ta thóat khỏi đoạn code mà cho chúng ta giá trị 1 (bad guy). Điều này có nghĩa. sẽ luôn luôn là 0 (bad guy). Nếu một trong ba lệnh nhảy này không được thực hiện thì (hehe) , các bạn có thể tượng tượng ra được mà ,giá trị tại ô nhớ [4FDCFC] sẽ được gán là 1 (good guy ).

Ngày đăng: 03/07/2014, 17:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan