Hướng dẫn của penicylline, thanks penicylline !
Công cụ : CheatEngine(CE)
Tôi sẽ lấy một ví dụ lấy NPC_BASE_ADDR trong bản 2.29
Bước 1: Tìm một chỉ số nào đó - máu chẳng hạn: login vao nhân vật, xem chỉ số máu hiện thời( nên dứng chỗ không có người qua lại để tránh nga my di qua lam thay đổi chỉ số) ví dụ của tôi là 345. OK chạy CE ở góc trái trên có một nút hình cái máy tính( cạnh nút open) nhấp vào và chọn process GAME_Y.EXE ( nếu chỉ chạy 1 cửa sổ võ lâm thì chỉ có 1 process game_y) ok? tiếp theo nhập vào text Value chỉ số máu của mình( của tôi là 345) Scantype đặt mặc định là "Exact value" Value type là 4 byte. Nhấn nút "First scan" rồi đợi nó chạy xong quay về của sổ võ lâm, cho nhân vật ngồi thiền với mục đích làm thay đổi chỉ số máu ví dụ của tôi đổi thành 350 đứng dậy cho chỉ số máu ngừng thay đổi rồi quay trở lại cửa sổ CE thay số 345 trong text Value thành 350 rồi nhấn nút "Next scan". Lúc này trên list ở bên trái cửa sổ sẽ xuất hiện 1 hoặc một vài địa chỉ, nếu còn quá nhiều thí tiếp tục thay đổi chỉ số màu, điền chỉ số mới vào ô Value và nhấn "Next scan" cho đến khi danh sách bên trái cửa sổ CE chỉ còn 1 địa chỉ duy nhất. click đúp chuột vào địa chỉ này, nó sẽ được chuyển xuống list ở dưới cùng của cửa sổ CE. bạn đã xong bước 1, nếu không thành công có thể làm lại từ đầu bằng cách nhấp vào "First scan".
Bước 2: Tìm NPC_BASE_ADDR ( bạn cần chắc chắn là bạn có kiến thức về asm hẵng đọc tiếp)
bây giờ trong list dưới cùng của cửa sổ CE đã có địa chỉ của chỉ số máu, nhấp chuột phải vào và chọn "Find out what accesses this address". Lúc này CE sẽ xuất hiện thêm 2 của sổ mới nhưng ta chỉ quan tâm đến của sổ to hơn (" The following opcodes...") quay lại game, cho nhân vật di chuyển vài bước rồi quay lại của sổ CE " The following..." (hãy tìm nó vì nó có thể bị của sổ chính đè lên) nếu không có lỗi gì, bạn sẽ thấy có khỏang 3 dòng lệnh trong của sổ này trong đó có một dòng đáng chú ý là dòng có mã lệnh: "mov ebp,[edi+eax*4+00000c94]"
click dupe vào dòng lệnh này ta sẽ thấy một cửa sổ nữa hiện ra trong đó có giá trị của các thanh ghi... thanh ghi EAX có giá trị 2015, nhìn mã lệnh asm ta thấy nó nhân với 4 :2015x4=8054(hexa) đây chính là chỉ số NPC_DATA_SIZE. Còn một địa chỉ cũng quan trọng đó là giá trị thanh ghi EDI bây giờ ta chọn dòng lệnh rồi nhấn nút "Show disasembler"- một của sổ nữa hiện ra ta nhìn thấy tòan bộ đọan chương trình của võ lâm dưới dạng asm. dòng lệnh "mov ebp,[edi+eax*4+00000c94]" có địa chỉ là 004BAE7D ( địa chỉ dòng lệnh ở tận cung bên trái) kéo lên vài dòng ở địa chỉ 004BAE65 ta thấy mã lệnh là "mov edi,[00dbc6c0]" như vậy 00DBC6C0 chính là NPC_BASE_ADDR. Với các offset còn lại bạn cần làm tương tự, cần một chút may mắn để đi đúng hướng thì việc sẽ nhanh hơn vì ta thấy có hơn một lệnh truy cập đến địa chỉ của chỉ số máu- chọn cái nào để debug là tùy vào kinh nghiệm cũng như kiến thức của bạn.