Cách tạo bản hack game

  -  

Ở bài viết trước mình đã trình làng về ý tưởng dùng để hack trò chơi và tạo ra 1 áp dụng hack đơn giản. Vấn đề ở bài bác trước là các lần vào trò chơi đều buộc phải dùng Cheat Engine tìm địa chỉ của biến chuyển máu, đạn. Trong bài bác này mình sẽ trả lời cách tạo thành một áp dụng hack xịn hơn, hoàn toàn có thể đem đi bất kể đâu chạy.

Bạn đang xem: Cách tạo bản hack game

Nếu bạn muốn dùng thử bản hack nhằm kiểm triệu chứng thì chúng ta có thể tải Half Life 1.6 trên đây cùng tải bản hack bản thân đã tạo thành tại phía trên với pass giải nén là codelearn.io

Lưu ý: vào game trước rồi new bật hack.

Video phía dẫn chi tiết cách thủ thuật tại đây.

Dynamic address với static address.

Để đơn giản và dễ dàng mình sẽ gọi biến đổi có add động là đổi thay dynamic, biến đổi có add tĩnh là biến đổi static.

Biến dynamic là biến mà địa chỉ của nó luôn biến hóa khi vào game, cụ thể là biến đổi máu, vì vậy sử dụng biến đổi dynamic để hack không phải là một ý tưởng tốt, bạn phải thực hiện Cheat Engine để tìm nó mỗi lần vào game.

Biến static là đổi mới có showroom luôn không chuyển đổi kể cả lúc thoát trò chơi ra vào lại hay đem sang thiết bị khác chạy, do đó nếu tìm được một biến nhỏ trỏ static trỏ tới đổi mới máu thì các bạn sẽ tạo ra được 1 ứng dụng hack hoàn toàn có thể đem đi bất kể đâu chạy.

Tới đây đa số chúng ta nghĩ "ơ rõ ràng địa chỉ cửa hàng của các biến luôn khác biệt mỗi lần chạy mà", vấn đề này là đúng nhưng mà mình sẽ lý giải vì sao mình nói showroom biến static luôn không biến đổi sau.

Trong code thì biến static đó là các biến hóa global hoặc là thay đổi được khai báo với trường đoản cú khóa static còn đổi mới dynamic chính là các đổi thay local (biến để trong hàm)...

Tóm lại phương châm của bài bác này đang là tìm vươn lên là static trỏ tới biến chuyển máu và thực hiện hack máu trải qua biến static này.

Tìm biến hóa static trỏ tới biến chuyển máu.

Tìm địa chỉ cửa hàng của thay đổi máu (giống trong bài trước trước tôi đã làm).

Tìm những thay đổi đang trỏ tới trở thành máu.

Xem thêm: Yasuo Gank Team 20 Gg Là Gì, Ý Nghĩa Trong Các Trò Chơi & Trong Giao Tiếp

Vấn đề gặp mặt phải là trong các biến vừa tìm được có cả trở nên dynamic (con trỏ được khai báo vào hàm) cùng biến chưa phải lúc nào cũng trỏ tới biến đổi máu (bạn chỉ bỗng dưng dò được nó cơ hội nó đã trỏ tới đổi thay máu). Vì thế bạn cần đào thải những biến không hề muốn này:

Loại bỏ trở nên dynamic bằng cách thoát trò chơi ra vào lại, sau đó kiểm tra xem biến đổi nào không trỏ tới đổi thay máu nữa thì bỏ phát triển thành đó đi.Để đào thải những nhỏ trỏ không phải lúc nào cũng trỏ tới trở thành máu thì bạn có thể chơi cùng quan cạnh bên xem nó có luôn luôn trỏ tới trở nên máu không. Chúng ta nên chơi trên nhiều chính sách chơi để chắc chắn thêm (thử bắn với bot, thử thay đổi từ giật sang cảnh sát...).Thực hiện nay tìm thay đổi static bởi Cheat Engine (các bạn cũng có thể xem vào video):Tìm địa chỉ của trở thành máu (giống trong bài bác trước).

Chuột bắt buộc vào địa chỉ cửa hàng biến tiết và lựa chọn Pointer scan for this address như trong hình.

*
Một hành lang cửa số mới hiện nay ra, đây là cửa sổ giúp cho bạn tìm xem những nhỏ trỏ nào vẫn trỏ tới vươn lên là máu. Trong hành lang cửa số này nhằm max level = 1 và bấm ok (max màn chơi = 1 tương tự với tìm kiếm những con trỏ trỏ trực tiếp cho tới ô lưu giữ chứa vươn lên là máu, tôi đã thử với thấy tra cứu với max level cao hơn là không buộc phải thiết).
*
Sau khi bấm ok sẽ có 1 cửa sổ mới hiện lên bắt save thì các chúng ta cũng có thể save vào bất kể đâu cùng đây là công dụng sau khi đã chạy xong.
*
Có thể thấy gồm 5 bé trỏ sẽ trỏ tới trở nên máu (không phải lúc nào cũng có thể có 5 bé trỏ trỏ tới biến chuyển máu). Cột base address đó là cột mà lưu địa chỉ cửa hàng của trở nên static, các bạn sẽ thấy nó gồm dạng "hw.dll" + 1 con số dạng hex. Nếu kia là phát triển thành static cần tìm thì con số dạng hex này đã giống nhau ở toàn bộ các lần chạy cùng ở tất những máy không giống nhau. Bởi vì đó add biến static sẽ luôn không thay đổi so với cùng một base address nào đó nên ban đầu mình nói add biến static luôn luôn không chũm đổi. Base address vào trường vừa lòng này đó là địa địa chỉ cửa hàng của module "hw.dll", các bạn hoàn toàn hoàn toàn có thể gọi hàm để đưa được showroom của module này.Giờ ta nên loại những biến dynamic và thay đổi static không phải lúc nào nào thì cũng trỏ tới biến chuyển máu bằng cách lưu lại 5 add này vào phần address các mục và quan gần kề + khởi rượu cồn lại trò chơi (cụ thể bạn cũng có thể xem trong video).Cuối thuộc tôi có được add biến static.
*
Địa chỉ trở thành static đề nghị lấy là là "hw.dll" + 0x00809820.Địa chỉ này sẽ trỏ tới địa chỉ 0x10330758. để ý 0x10330758 chưa phải là add của biến đổi máu, add biến huyết sẽ luôn bằng add mà vươn lên là static trỏ cho tới (0x10330758) + 0x504. Để phát âm được son số 0x504 các chúng ta có thể xem đoạn code sau:
*
Biến static vừa tra cứu được chính là biến con trỏ p1, nhỏ trỏ p1 này không trỏ trực tiếp tới biến đổi máu mà trỏ cho tới vùng nhớ heap khu vực lưu thông tin về player. Địa chỉ trở nên máu sẽ phương pháp vùng nhớ địa điểm p1 đã trỏ tới 1 hằng số gọi là offset. Trong đoạn code bên trên offset đã là 0x08 còn offset trong trò chơi Half Life mình vừa tìm được là 0x504.Vậy health_address = p1 + 0x504.=> Xóa Cheat Engine đi được rồi
*
).Tới đây bạn cũng có thể thấy đổi thay static p1 ko trỏ trực tiếp tới đổi thay máu mà lại trỏ tới ô nhớ khu vực chứa trở nên máu. Bên trên mình nói tìm những đổi thay static trỏ tới thay đổi máu chỉ để cho bạn dễ tưởng tượng chứ nói vậy chưa được chuẩn lắm.Xem source code để làm rõ hơn (nếu source này báo lỗi sinh sống máy các bạn thì rất có thể sử dụng source khác tại đây: )

#include #include #include #include #include using namespace std;// Hàm lấy add của module "hw.dll"DWORD getModuleBaseAddress(TCHAR* moduleName, DWORD pid) TH32CS_SNAPMODULE32, pid); MODULEENTRY32 modEntry; modEntry.dwSize = sizeof(MODULEENTRY32); if (Module32First(hSnap, &modEntry)) vì if (_tcscmp(modEntry.szModule, moduleName) == 0) moduleBaseAddress = (DWORD)modEntry.modBaseAddr; break; while (Module32Next(hSnap, &modEntry)); CloseHandle(hSnap); return moduleBaseAddress;int main() { // lấy process id chũm vì cần làm bằng tay thủ công như lần trước DWORD pid; HWND hGameWindow = FindWindow(NULL, "Counter-Strike"); GetWindowThreadProcessId(hGameWindow, &pid); HANDLE pHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); // Tính add của vươn lên là máu DWORD baseAddress; char moduleName<> = "hw.dll"; DWORD moduleAddress = getModuleBaseAddress(moduleName, pid); // 0x00809820 đó là offset tìm kiếm được bằng Cheat Engine if (!ReadProcessMemory(pHandle, (LPVOID)(moduleAddress + 0x00809820), &baseAddress, sizeof(baseAddress), NULL)) { cout Code này có một số hàm new so với bài trước:

getModuleBaseAddress là hàm lấy địa chỉ module "hw.dll".

FindWindow và GetWindowThreadProcessId là hai hàm dùng để mang process id.

ReadProcessMemory là hàm lấy add mà thay đổi static sẽ trỏ cho tới (tổng quát hơn nữa thì hàm này là hàm đem giá trị của 1 ô nhớ).

Vào game và test đoạn code này, còn nếu không báo lỗi gì thì các bạn đã gian lận thành công.

Kết.

Xem thêm: Game One Piece Vs Fairy Tail 1, Game One Piece Đại Chiến Giang Hồ

Có thể thấy việc tạo ra biến global với static khiến cho ứng dụng của doanh nghiệp bị hack tiếp tục hơn nhưng nếu như khách hàng chỉ dùng những biến local thì việc khiến cho ứng dụng sẽ cực nhọc hơn.

Rất ý muốn nhận được mọi góp ý từ những bạn.Nguồn bài bác viết:Phần 1: https://codelearn.io/blog/view/hack-game-half-life-voi-cPhần 2: https://codelearn.io/blog/view/phan-2-hack-game-half-life-voi-c