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.






#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