Mình muốn nói là dịch ngược cực kỳ khó. Không phải dễ. Chưa kể việc giả lập server càng khó hơn nữa. Tuy nhiên đây là lộ trình nếu bạn muốn.
0. Học thật rành lập trình. Khi bạn lập trình được một con server game đàng hoàng, bao gồm database, kiến trúc, triển khai ok này nọ thì hãy tới các bước sau. Bạn có thể xem ở đây:
https://github.com/miloyip/game-programmer
1. Học assembly ở mức hiểu được source code. Không cần code cũng được. Dịch ngược bạn hiểu được mã assembly là được. Cụ thể ngôn ngữ assembly bạn cần ở đây là intel x86, intel x86-64
2. Sau khi có căn bản assembly thì đọc cuốn này:
https://beginners.re/ sẽ có tổng quan về dịch ngược
3. Khi dịch ngược, bạn sẽ gặp những trường hợp làm rối code (obfucation) hoặc bị nén, ẩn giấu chương trình đi (packing). Khi này bạn phải học về cách unpack, cách gỡ rối.
4. Biết dịch ngược không là chưa đủ. Bạn phai học về kỹ thuật dịch ngược. Khi dịch ngược game, thường sẽ gặp 2 cách phân tích binarry đi kèm đó là dynamic và static analysis. Học về 2 kỹ thuật này. Dùng tool gì, cách trace source code như thế nào.
5. Khi dịch ngược, bạn sẽ cần thay thế code của game. Gọi là patching. Như game đang trỏ ip 1.1.1.1. Server của bạn là 2.2.2.2. Thì bạn cần thay 1.1.1.1 thành 2.2.2.2! Làm điều này như thế nào thì lúc này sẽ cần học về kỹ thuật patching, hooking, v.v
6. Khi này thì bạn đã nắm tốt cách dịch ngược và phân tích file game rồi. Tiến hành thôi.
Về việc làm server game từ dịch ngược là không hiếm. Như Maplestory server lậu hoàn toàn được code từ dịch ngược + packet analysis chứ chả có leak ở đâu cả. Tất nhiên việc này sẽ tốn hàng tháng hoặc hàng năm trời đề hoàn thành rồi.
Thường để giả lập server game. Các dev sẽ phân tích gói tin được gửi đi và xem coi client mong chờ các gói tin hồi đáp như thế nào. Từ đó làm một con server giả lập việc nhận + trả gói tin y chang vậy.
Chúc bạn thành công với việc giả lập server game của bạn. <3