Game - Hướng dẫn cheat game Minesweeper: Phần 1

Hệ điều hành Windows có rất nhiều những công cụ phục vụ cho nhu cầu học tập, công việc hay giải trí. Vì thế, các nhà lập trình của Microsoft dành thời gian viết ra các phần mềm, đặc biệt là các game giải trí dành cho giới văn phòng và nổi bật nhất là Minesweeper. Hôm nay, mình sẽ hướng dẫn các bạn cách gian lận trò chơi Minesweeper này.





Chuẩn bị
Các bạn cần chuẩn bị những công cụ để thực hiện việc gian lận game Minesweeper:


Thực hành
OllyDBG
Đầu tiên, chúng ta mở game và nhấn thử một ô bất kỳ trong các ô vuông trong game Minesweeper. Sau đó các bạn cứ để thời gian trong game nó chạy và các bạn mở OllyDBG lên và xem các thanh ghi trong game.


Cửa sổ OllyDBg


Chúng ta nhìn vào menu bar của phần mềm OllyDBG, chọn View Memory và nó sẽ hiện ra các dòng dữ liệu dưới dạng mã hex. Chúng ta tìm tới chỗ minesam .data và chuột phải chọn Dump để dump dữ liệu trong file đó ra. Chúng ta sẽ tìm tới dòng có số là 10005340 để xác định dữ liệu trong game được lưu vào trong thanh ghi.


Cửa sổ Dump


Chúng ta nhìn vào menu bar chọn View -> CPU sẽ hiện cửa sổ các thanh ghi chứa các dữ liệu và các tiến trình trong game. Chúng ta tiếp tục chọn Debug -> Run để chạy chương trình ở chế độ debug.


Cửa sổ CPU


Chúng ta thử click vào ô bất kỳ trong game, khi đó dữ liệu trong thanh ghi cũng sẽ thay đổi theo. Do đó, chúng ta biết được game sẽ được lưu vào trong bộ nhớ RAM.


Cửa sổ game


Chúng ta có thể đọc được RAM, chúng ta có thể gian lận nó trong game. Các bạn lưu ý là cái dòng 0A 00 00 00 09 00 00 00 09 00 00 00 là chuỗi byte bảng game trong RAM, chúng ta có thể dùng phần mềm để dump dữ liệu ra và thay đổi dữ liệu trong đó.


Procdump
Chúng ta tắt trò chơi, mở Procdump ra gõ procdump –ma Minesweeper.exe mine để dump ra một file khác có tên là mine.dmp


Cửa sổ cmd


HxD
Mở HxD và chọn file mine.dmp để mở. Sau đó, chúng ta nhấn tổ hợp phím Ctrl+F, chọn tab Hex-Value và gõ 0A 00 00 00 09 00 00 00 09 để tìm chuỗi byte trong thanh RAM.


Cửa sổ HxD


Chúng ta chọn Search -> Find Again để tìm dữ liệu của bảng game.


Cửa sổ HxD


Python
Chúng ta sẽ thực hiện một đoạn code python để hiển thị các "trái mìn" trong bảng game.


import os 

# Dump memory 
cmd = "del mine.dmp" 
os.system(cmd)
cmd = "procdump -ma minesam.exe mine" 
os.system(cmd) 

# Find gameboard 
mark ='\x0A\x00\x00\x00\x09\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x10\x10\x10\x10' 

nread = 20 
boardfound = 0 
gameboard = []

with open("mine.dmp", "rb") as f:  
  line = f.read(20)  
  
  while (boardfound == 0):    
    c = f.read(1)    
    if c == "":      
      print "File ended, but gameboard not found!"      
      exit()    
    line = line[1:] + c    
    nread += 1    
    if nread % 0x100000 == 0:      
      print "Looking at byte", hex(nread), nread    
    if line == mark:      
      print "Gameboard found at ", hex(nread)      
      boardfound = 1  
  for i in range(4):    
    gameboard.append('\x10')  
  for i in range(500):    
    gameboard.append(f.read(1)) 

# Print Gameboard 
l = len(gameboard) 
m = 32 # items per line 

for i in range(0, l-m, m):  
  line = ""  
  for j in range(m):    
    g = gameboard[i+j]    
    # print i, j, ord(g)    
    if g == '\x10':      
      c = "-"    
    elif g == '\x0f':      
      c = " "    
    elif g == '\x8f':      
      c = "*"    
    elif g == '\x00':      
      c = " "    
    else:      
      c = chr( ord(g) - 16 )    
    line += c  
  print line


Chúng ta chạy file python bằng câu lệnh python cheat.py để thực hiện đoạn cheat. Chúng ta sẽ thấy những dấu sao, đó là nơi sẽ có những trái mìn. Chúng ta cứ theo đó và làm theo trò chơi và chúng ta sẽ hoàn thành game một cách nhanh nhất.


Hoàn thành game



Tóm tắt
Chúng ta đã hoàn thành hack game Minesweeper ở chế độ dễ nhất. Chúng ta sử dụng những phần mềm có thể debug được phần mềm, dump dữ liệu và xem nó được lưu ở đâu trong game. Với một chút kiến thức lập trình, chúng ta có thể dễ dàng lấy dữ liệu trong game ra và gian lận một cách dễ dàng. Qua các bài sau, mình sẽ thực hiện demo với các mức độ cao hơn.
Next Post Previous Post
No Comment
Add Comment
comment url