30/09/2018, 18:09
Thắc mắc về Auto game: làm sao để lấy được những dữ liệu vd như máu, vị trí của người chơi để inject vào trong trò chơi
Mình thấy hiện giờ có khá nhiều auto game, vậy câu trả lời cua minh là làm sao để những phần mềm này lấy được những dữ liệu vd như máu, vị trí của người chơi để inject vào trong trò chơi
Bài liên quan
Công nghệ hiện thời thì mình cũng ko rõ lắm. Nhưng hồi xưa nhớ có ArtMoney j đấy thì nó đại loại như sau :
Lưu ý là cách làm này vẫn có thể có xác xuất filter mãi ở step 4 mà vẫn ra nhiều giá trị, bạn phải quay lại step3 đến khi nào xác định được thì thôi.
Còn hiện nay thì nó thường đồng bộ với server or được mã hóa theo acchs nào đó, nên cách làm này khả năng là ko hữu dụng nữa, chỉ tham khảo thôi
Câu trả lời của @leHoai gần đủ rồi đấy. Đạt bổ sung thêm
Chính xác
ArtMoney hay một chương trình khác là CheatEngine sẽ lấy process ID của game để lấy được vùng nhớ. Lúc mình chạy ArtMoney lên nó sẽ bắt mình chọn cái process (Game) để “hack”
Đúng Làm nhiều sẽ hiểu.
Vùng nhớ mà mình lấy được gọi là offset, tức là khoảng cách từ điểm bắt đầu của stack của chương trình cho tới điểm lưu trữ biến này. Các biến này là biến static hoặc là global thì ta mới có thể có được offset chính xác. Vì các biến này là biến toàn cục/static nên nó sẽ được cấp vùng nhớ static và tồn tại từ khi bắt đầu cho đến khi kết thúc chương trình, có như vậy nó mới không thay đổi và có thể đọc được giá trị.
Ví dụ nhé, ta có biến
double m_hp
nằm trongclass Character
. Giả sử Class Character này là biến static để có thể truy cập từ nhiều nơi trong game.Giả sử ta tìm được vị trí của
m_hp
là0x78905050
thì địa chỉ củam_mp
sẽ là0x78905058
với double là 8 bytes. Vị trí của các biến này là cố định từ lúc khởi động cho tới lúc tắt và kể cả cho lần chạy game tiếp theo. Giá trị này chỉ thay đổi nếu class Character thay đổi cấu trúc hoặc vị trí khởi tạo của Character khác với lần trước. Ví dụ ta thêm biếndouble m_gold
Hoặc lúc đầu ta khai báo:
Nay ta sửa lại
Chỗ này chưa đúng, các thông tin này mình đọc ở client, nên việc đọc không bị ảnh hưởng bởi server. Còn việc ghi thì ăn thua hên xui Hên hên thì vẫn hack được speed
Một số thằng như kiểu linked list ấy, phải dò theo từng con trỏ mới biết giá trị cuối cùng nằm ở đâu, mà hình như CheatEngine có phần demo như vậy
đọc được giá trị trong game là một chuyện, điều khiển nv lại là một chuyện khác. cái này phải dùng một disassembler để đọc code của game xem nó chạy thế nào, xong vận dụng tùm lum kỹ thuật như inject code, hook code mới xong (ít nhất theo kiến thức của minh), những người làm được là có năng khiếu kiến trúc máy tính rồi
Em thấy có nhiều bot nó chẳng cần scan mà nó vẫn lấy đc giá tri
Sao em “thấy” được ?
@ltd để mai em chụp ảnh lên cho, em cũng không chắc nhưng giờ bố em đang ở nhà, bố em không cho chơi điện tử
Làm sao chụp ảnh mà em biết được là nó có scan hay không? Việc scan là việc trước khi viết ứng dụng cơ mà?
Người ta sẽ scan, tìm ra địa chỉ của các biến hp, mp, etc. sau đó viết ứng dụng để đọc các giá trị đấy.
không anh ạ, theo em nhớ thì CE đầu tien mình pahir scan giá trị ấy rồi thay đổi giá trị ấy rồi lại scan lai, cứ như thế đén khi tìm đc giá trị cuối cùng. còn cái L# này thì nó cho phép người dùng xây dựng lên các chương trình thông qua bộ thư viện của nó, nhung mà phải thông qua cái loader của nó thì mới inject được vào game, không thì sẽ bị ngoại lệ. Em đã thử viết 1 cái chương trình đơn giản cho phép lúc vào đầu game nó hiên số máu, … Vào game, nó hiện lên chỉ số máu ngay, mà không phải thay đổi giá trị đó như CE, mà CE quét lần 1 ra 1 đống, phải lọc từ từ r mới tìm đc ra giá trị cuối. Ma theo em biết thì địa chỉ của vùng nhớ sẽ bị thay đổi theo mỗi lần chạy chương trình thì phải.
Đó là bởi vì em chưa lấy được
static address
nên cứ phải scan đi scan lại, khi em lấy đượcstatic address
rồi thì không cần phải scan nữa, vị mọi lần mở ứng dụng lên thì ta sẽ lấy được các giá trị đấy chính xác mà không cần phải scan nữa theo địa chỉ ta scan được.thì ra là thế, em cảm ơn anh. Mà em lên mạng tìm hiểu về mấy cái đấy thì nó chỉ ra là"How to find pointer with CE", vậy thì stactic address và pointer có phải là giống nhau không anh ?