RSS

Category Archives: Hướng dẫn viết phần mềm Auto game

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 4 Các hàm kiểm tra HP STM Mana)

Ở phần này tôi sẽ nêu các ví dụ mẫu để kiểm tra các thông số HP, STM, Mana của nhân vật, nếu thấy nhỏ hơn giá trị được thiết lập thì Send key tương ứng để Pos bơm HP hay STM và Mana

Để sử dụng nó bạn có thể đưa vào sự kiện ontime. Bạn tạo một Timer control trong tab System của Delphi set time là 100 hay 500 milisecon tùy ý bạn muốn sau bao lâu chương trình kiểm tra HP hoặc STM, mana một lần. Theo tôi thì Check HP được ưu tiên cao nhất nên để 50 đến 100ms check một lần còn STM với mana thì 500 hoặc 1000ms là phù hợp, nếu check liên tục quá sẽ làm ảnh hưởng tới khả năng xử lý của máy tính, khiến chương trình nặng quá mức cần thiết

Nếu bạn không muốn dùng sự kiện OnTime để check và muốn nâng cao khả năng chống lỗi gây die, bạn có thể tìm hiểu cách tạo riêng các process cho phần auto pot chạy độc lập với chương trình auto. Điều này sẽ làm giảm thiểu khả năng die do chương trình đang bạn xử lý các tình huống khác. Trong delphi các bạn có thể sử dụng cách sau để tạo process :

Khai báo:

Type
AutoHpT = CLASS(TThread)

protected
procedure Execute; override;
end;

Tạo process

if StopHPRun then begin
HpThead:= AutoHpT.Create(true);
HpThead.Resume;
end;

Đây là đoạn mã được chạy trong process. Lặp vô tận để kiểm tra HP liên tục, nó sẽ dừng và giải phóng Process khi bạn Bấm nút stop đặt giá trị biến toàn cục STOPhp=True.

Procedure AutoHpT.execute;
begin
FreeOnTerminate := true;
repeat
StopHPRun:=False; // Dang chay autoHP
AutoHP;
sleep (Form1.ThoigiancheckHP.Value);
Until STOPhp;
StopHPRun:=True; // dung autoHP
end;

Để nghiên cứu sâu hơn về lập trình munti process và thead các bạn tìm đọc trong giáo trình delphi nhá 🙂

Các hàm mẫu như sau:

Read the rest of this entry »

 

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 3 làm việc với memory)

Ở phần này tôi sẽ tiếp tục giới thiệu với các bạn cách sử dụng các hàm Read và writeprocessmemory để thực hiện việc lấy giá trị trong bộ nhớ game thay cho phương pháp sử dụng Getpixel cũ.

Chú ý quan trọng khi làm việc với memory là bạn phải nắm vững các kiểu dữ liệu của Delphi để khai báo cho đúng các biến thì việc đọc ghi memory mới thành công và không bị lỗi. Ví dụ để đọc 2byte kiểu interger thì bạn phải khai báo biến dữ liệu là Word. Chi tiết về kiểu biến bạn có thể dọc ngay trong Help của Delphi IDE hoặc tham khảo tài liệu hướng dẫn lập trình Delphi, ở đây tôi chỉ đưa các ví dụ cụ thể giúp bạn có thể hiểu được việc sử dụng thực tế các hàm này chứ không giải thích sâu về lý thuyết.

Chú ý quan trọng Hàm API Readprocessmemory dung để đọc dữa liệu thì bạn có thể sử dụng tùy ý. Nhưng hàm Writeprocessmemory thì không như vậy. Có một số game chống hack cấm thi hành phương thức này để thay đổi giá trị game. Hoặc rất dễ gây xung đột với chính việc cập nhật giá trị game nên bạn phải sử dụng nó thật cẩn thận để tránh xung đột. Hạn chế tối đa việc ghi đè bằng cách trước khi ghi thì đọc kiểm tra giá trị hiện tại, Nếu không thỏa mãn mới thực hiện việc ghi đè. Nếu không thể thực hiện thành công việc ghi đè do game chông hack hoặc bị xung đột, bạn sẽ phải sử dụng kỹ thuật inject Dll để làm việc này. Trong phạm vi bài viết này tôi không giới thiệu kỹ thuật phức tạp đó. Nhưng có một bí quyết là có thể sử dụng các file Dll inject đã được viết sẵn cho các auto game khác để làm việc này một cách đơn giản. Tận dụng các hàm Inject và Unmap đã được thiết kế sẵn cho nhanh. Trừ các trương hợp đặc biệt cần thiết mới phải tự thực hiện

Sau đây là các ví dụ : Read the rest of this entry »

 

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 2 mouse và key)

CÁC HÀM ĐIỀU KHIỂN MOUSE VÀ PHÍM

Việc đầu tiên cần làm để  gửi phím và chuột đến cửa sổ game bất kỳ để điều khiển là bạn phải tìm Handler của cái cửa sổ củ chuối đó đã ví dụ:

WindowNameS := FindWindow(nil,’Windows Name’);

// Một số game chặn auto bằng việc can thiệp vào tiến trình này, nên nếu gặp trường hợp chỉ send được lệch đầu tiên rồi các lần kế tiếp không send được nữa, thì có lẽ bạn đang bị chống hack nó xxx. Cách xử lý là chạy lại đoạn mã trên để cập nhật lại giá trị  của WindowsNameS mỗi lần sử dụng lện send

Giờ chỉ việc dùng hàm API Sendmessage hoặc Posmessage để gửi lệnh điều khiển tới cửa sổ game. Tôi sẽ đưa luôn các code mẫu để các bạn tham khảo:

Di chuyển chuột tới tọa độ cần thiết (in game) nếu không có nhu cầu làm việc khác thì bạn có thể xài API

SetCursorPos(X,Y); để thay thế cho sendmessage các này có nhược điểm là vì hàm API SetcusorPos chiếm quyền điều khiển con trỏ chuột hệ thống. Nên nếu bạn sử dụng hàm này thì khi auto không làm được việc gì khác.

Procedure MouseMoveTomS(X,Y:integer);
begin
  SendMessage(WindownameS, WM_MOUSEMOVE, 0, MakeLParam(X,Y));    
    // Hoac xai ham duoi de thay the (khuyen cao ko nen dung neu ham tren dap ung duoc yeu cau)
   //SetCursorPos(X,Y);
end;

Read the rest of this entry »

 

Sử dụng Cheat Engine để search base address dùng cho auto play

Nguồn: Bài này tham khảo trên mạng chả nhớ nó ở đâu nữa, gom vào đây cho  đõ phải tìm lại
Chú ý: Quan trọng nhất khi tìm địa chỉ ADD game là phải biết được kiểu dữ liệu định tìm. Ví dụ khi tìm cho PTV game là HP có kiểu Real, HP max có kiểu integer 2 byte tương tự cho STM Mana. Mấu chốt là bạn tìm kiểu này không thấy thì thử kiểu khác, bao giờ đúng thì thôi. Đây là quá trình mệt mỏi nhất khi code Auto game
Có một số game chặn CE để chống Hack, bạn sẽ cần phải thực hiện thêm một số kỹ thuật nữa để vượt qua, như chạy game với user khác hoặc sử dụng hide tool… Cái này tôi sẽ hướng dẫn cụ thể trong một bài viết khác.
1. Mở CE và chọn process cần debug (lưu ý: bạn phải chọn được đúng cửa sổ nào sẽ được attach vào CE).Bước 1: Ví dụ bạn muốn search địa chỉ của HP, chúng ta đọc thông tin HP của nhân vật giá trị là 5111

Bước 2: Dùng cheat Engine chọn process và search giá trị này, là search lần đầu tiên “New Scan”, giá trị là decimal nên không check Hexa
2
 

Hướng dẫn lập trình auto game bằng Delphi 7 (phần 1)

Ở loạt bài viết này, tôi sẽ cung cấp cho các bạn các Function cần thiết để viết một chương trình auto game. Bài cuối cùng các bạn sẽ được cung cấp một chương trình auto game hoàn chỉnh. Được code theo phương pháp Read Memory game để lấy số liệu cần thiết, thay cho phương pháp Getpixel được sử dụng trong chương trình viết bằng Autohotkey đã biết. Phương pháp này khắc phục được nhược điểm phải thiết lập màn hình và không thể làm việc khác khi auto. Nhưng có nhược điểm là bạn phải Debug game để tìm ra các địa chỉ Memory cần thiết cho auto hoạt động.  Cách thực hiện tôi sẽ trình bày trong một bài viết riêng.

Read the rest of this entry »

 

Hướng dẫn viết auto PTV bằng autohotkey

Lời tác giả: Đoạn mã này là kỷ niệm một thời tham gia PTV game online của tôi. Nó được xây dựng trong một thời gian rất dài. Phát triển từ các loại auto bằng phần cứng chuột, phím … Bằng tất cả sự đam mê của nhóm bạn bè trong clan Commandos. Chúng tôi là những kỹ sư cơ khí ô tô đi code phần mềm. Giai đoạn đầu bỡ ngỡ, vạn sự khởi đầu nan. Nhưng dù sao nó vẫn có giá trị kỷ niệm rất lớn trong lòng mọi người!!!

Đây là bài đầu tiên trong loạt bài về phổ biến kinh nghiệm, mã nguồn các chương trình auto tôi đã từng viết cho game PTV. Bản đầu tiên này được viết băng Autohotkey các bạn có thể tìm thấy nó ở đây http://www.autohotkey.com/download/

Giới thiệu: AutoHotkey là một tiện ích miễn phí, mã nguồn mở cho Windows

AutoHotkey cung cấp toàn bộ khả năng cho bàn phím, joystick và chuột. Chẳng hạn, cùng với các phím modifier đặc trưng như Control, Alt, và Shift, bạn có thể sử dụng phím Windows và Capslock như các phím modifiers. Trên thực tế, bạn có thể gán cho bất kỳ một phím (hay mouse button) trở thành một phím modifier.Với nó, bạn có thể:
– Tự động hóa gần như mọi thứ bằng cách gởi thao tác phím và click chuột. Bạn có thể viết một macro mouse hay bàn phím bằng tay hay sử dụng macro recorder.
– Tạo phím nóng cho bàn phím, joystick, và chuột. Hầu như mọi phím, nút hay sự kết hợp đều có thể trở thành 1 phím nóng.
– Tự động hiện đầy đủ chữ viết tắt khi bạn gõ. Chẳng hạn, gõ “btw” sẽ tự động chuyển thành “by the way”.
– Tạo các form nhập dữ liệu, giao diện người dùng và thanh menu.
– Gán lại phím và nút trên bàn phím, joystick và chuột.
– Nhận tín hiệu từ những điều khiển từ xa cầm tay qua WinLIRC client script.
– Thực thi các đoạn mã sẵn có AutoIt v2 và cải tiến chúng với những khả năng mới.
– Chuyển đổi mọi script sang file exe, có thể thực thi trên máy tính không được cài đặt AutoHotkey.

Read the rest of this entry »