Block Blast và cỗ máy kiếm tiền quảng cáo: Khi game tự động 'giết' người chơi để thu lợi

Công nghệ24 tháng 10, 2026·8 phút đọc

Một phân tích kỹ thuật chuyên sâu đã giải mã cách Block Blast sử dụng các module tải từ máy chủ để phát hiện thời điểm người chơi sắp lập kỷ lục và tung ra màn chơi không thể giải để ép họ xem quảng cáo. Trò chơi ước tính thu về 127 triệu USD từ quảng cáo chỉ trong 5 tháng đầu năm 2026, vượt xa Candy Crush Saga.

Block Blast và cỗ máy kiếm tiền quảng cáo: Khi game tự động 'giết' người chơi để thu lợi

Block Blast, tựa game xếp gạch đình đám trên di động, đang là tâm điểm của một cuộc điều tra kỹ thuật gây chấn động. Theo phân tích được công bố trên Ayoships, phần lớn logic vận hành của trò chơi không nằm trong ứng dụng bạn tải về từ cửa hàng, mà được máy chủ gửi xuống dưới dạng các module JavaScript mã hóa sau khi cài đặt.

Điều đáng chú ý là các module này không chỉ phục vụ giao diện hay hiệu ứng. Một trong số đó mang tên RewardHighValueAdHarvestTrait — được thiết kế để chờ thời điểm người chơi vượt kỷ lục cá nhân và một quảng cáo có giá trị cao được nạp sẵn, rồi tung ra một màn chơi mà theo phân tích là không thể giải.

Kiến trúc "trait" và sự khác biệt giữa từng người chơi

Khi giải mã phiên bản Android 10.8.2, nhà nghiên cứu phát hiện ứng dụng được cấu thành từ các module nhỏ gọi là trait, mỗi trait có nhiều biến thể gọi là arm. Khi khởi động, máy chủ gửi cấu hình chỉ định người chơi nhận arm nào của trait nào.

  • Cấu hình mà bản cài đặt thử nghiệm nhận được liệt kê khoảng 700 trait
  • Bản cài này kích hoạt 254 trait, trong đó 101 trait được tải về sau khi cài đặt
  • Hai người chơi ngồi cạnh nhau có thể đang chơi hai phiên bản game khác nhau, và nhà phát triển có thể thay đổi trải nghiệm của bạn mà không cần cập nhật ứng dụng

Hầu hết các trait là bình thường: hướng dẫn, hiệu ứng, âm thanh. Nhưng một số ít liên quan trực tiếp đến việc bạn thua cuộc — và một trong số đó liên quan đến quảng cáo.

Quy tắc chờ quảng cáo đắt giá

Trait RewardHighValueAdHarvestTrait được giải mã thành 15.616 byte JavaScript. Constructor của nó thiết lập các tham số:

  • HIGH_PRICE_MULTIPLIER = 3.5 — quảng cáo hiện tại phải đắt gấp 3,5 lần quảng cáo trước
  • MIN_HISTORY_AD_WATCH_COUNT = 3 — phải hoàn thành 3 quảng cáo thưởng gần nhất
  • TARGET_AD_LEVEL = "high" — chỉ nhắm quảng cáo có giá trị cao

Quy tắc này chờ ba điều kiện cùng lúc: bạn vừa xem xong ba quảng cáo thưởng, quảng cáo đang nạp có giá trị ít nhất gấp 3,5 lần quảng cáo trước, và bạn đã vượt kỷ lục cá nhân 1.000 điểm. Khi đủ điều kiện, game thay thế danh sách sinh mảnh ghép thông thường bằng một thuật toán đặc biệt gọi là ZHI_SI_TI — hay còn gọi là "đề chết" (lethal puzzle).

Thuật toán 24001, tên nội bộ là algo_must_death, tồn tại ở cả JavaScript lẫn thư viện C++ gốc. Nó tìm kiếm một bộ ba mảnh ghép mà không có bất kỳ cách đặt nào hợp lệ trên bàn chơi hiện tại.

Nhóm nghiên cứu đã chạy thử tệp quy tắc nguyên bản với 28 kịch bản kiểm thử, bao gồm trường hợp chỉ xem hai quảng cáo, đóng quảng cáo sớm, thiếu 1 điểm và quảng cáo chỉ đắt 3,4 lần. Kết quả khớp chính xác: quy tắc chỉ kích hoạt khi đủ cả ba điều kiện.

Bằng chứng thực tế trên iPhone

Nhóm nghiên cứu đã chạy bản sao thử nghiệm ứng dụng iPhone trong trình giả lập của Apple và đọc trực tiếp các đầu vào của quy tắc. Khi điểm số đã vượt mốc, một quảng cáo thưởng từ Google AdMob được nạp sẵn với giá 72,39 so với 37,41 của quảng cáo trước — tức chỉ đạt 1,94 lần, chưa đủ ngưỡng 3,5. Quy tắc đang hoạt động thực sự, đọc giá quảng cáo thật và chờ thời điểm thích hợp.

Trong một lần thử khác, kỷ lục là 1.304 điểm nên ngưỡng kích hoạt là 1.434. Khi người chơi đạt 3.356 điểm, game tung ra một thanh dài 5 ô, một thanh cao 5 ô và một mảnh zigzag. Hai thuật toán tìm kiếm vét cạn độc lập đều xác nhận: không có cách đặt nào. Nhật ký của chính game ghi rõ thuật toán 9 được yêu cầu và sử dụng, gắn nhãn cả ba mảnh là "đề chết".

Trí tuệ nhân tạo quyết định nơi bạn thua

Ngoài các quy tắc viết tay, Block Blast còn tải về và chạy các mô hình học máy ngay trên thiết bị của người chơi.

  • Mô hình XGBoost 500 cây tên predict_travel_difficulty_dead quyết định vị trí xuất hiện của đề chết trong chế độ màn chơi. Với 52 đầu vào chủ yếu về lịch sử chơi, nó chọn trong 12 phương án cấu hình để quyết định đề chết rơi vào 30% đầu, khoảng 30–80%, hay 20% cuối màn.
  • Một quy tắc khác chuyển lựa chọn đó thành cơ hội hồi sinh phụ nếu bạn thường chấp nhận hồi sinh (hơn 75% số lần), rồi từ lượt chia thứ tư sau đó sẽ yêu cầu đề chết.

Mô hình định giá người chơi

Một mô hình thứ hai, xgboost_regression_model111.json, gồm 59 cây quyết định với 27 đầu vào, đặt giá trị quảng cáo của từng người chơi. Trong đó 18 đầu vào liên quan đến tiền — giá các quảng cáo đã nạp hôm nay và hôm qua.

Kết quả gọi là finalEcpm — thu nhập trên 1.000 lượt hiển thị quảng cáo. Mô hình này ước tính bạn đáng giá bao nhiêu.

Thử nghiệm với một người chơi giả định ở Mỹ cho thấy:

  • Ở Mỹ với điểm đầu tiên 1.000: 25,48 USD trên iPhone, 48,96 USD trên Android
  • Chuyển sang Brazil: giảm còn 8,08 USD và 17,90 USD
  • Chuyển sang Ấn Độ: chỉ còn 5,59 USD và 14,83 USD

Game dùng mức giá này để quyết định loại và số lượng quảng cáo bạn nhận. Nếu quảng cáo thưởng của bạn đáng giá ít nhất gấp đôi quảng cáo toàn màn hình, bạn được thêm cơ hội hồi sinh — và hồi sinh sẽ phát quảng cáo thưởng. Nếu quảng cáo toàn màn hình trả nhiều hơn, bạn không được hồi sinh.

Mô hình dự đoán bạn sẽ chơi ít hơn vào ngày mai

Một mô hình LightGBM với 1.000 cây và 93 đầu vào dự đoán khả năng bạn sẽ kém hoạt động hơn vào ngày hôm sau. Nếu điểm vượt ngưỡng 0,69, một quy tắc đi kèm sẽ đổi nút hồi sinh sang màu hồng và bỏ qua quảng cáo — nhưng chỉ một lần mỗi ngày.

Chi tiết này cho thấy các nhà phát triển hiểu rõ: quảng cáo quá dày có thể khiến người chơi bỏ đi, và đôi khi bỏ qua một quảng cáo lại giữ chân người chơi tốt hơn.

Điều này có phải chỉ là "độ khó thích ứng"?

Không hẳn. Độ khó thích ứng truyền thống điều chỉnh mảnh ghép dựa trên cách bạn chơi. Quy tắc này thì không nhìn vào kỹ năng đặt mảnh của bạn. Đầu vào của nó là kết quả quảng cáo gần đây, giá quảng cáo đang nạp trong bộ nhớ, và điểm số của bạn so với kỷ lục.

Và bộ mảnh nó yêu cầu không phải bộ khó hơn — mà là bộ được chọn vì không có cách nào giải được.

Người chơi Việt Nam cần lưu ý gì?

Với người dùng Việt Nam, phân tích này đáng chú ý ở vài điểm:

  • Mô hình định giá cho thấy người chơi ở các thị trường như Việt Nam thường được định giá thấp hơn nhiều so với Mỹ, nên có thể ít gặp quy tắc "quảng cáo đắt" hơn — nhưng các quy tắc khác như MultiClearBoostThenKillTrait hay MABXiBaiTrait vẫn hoạt động dựa trên hành vi chơi
  • Chơi offline hoặc dùng trình chặn quảng cáo cấp thiết bị (như Private DNS trên Android) có thể ngăn quảng cáo thưởng nạp về, khiến quy tắc này không kích hoạt được
  • Tuy nhiên, các quy tắc không phụ thuộc quảng cáo — như phạt khi chơi nhanh gần kỷ lục hay thử nghiệm thời điểm tung đề chết — vẫn chạy bình thường

Tranh cãi về kiểm duyệt ứng dụng

Câu hỏi lớn được đặt ra: liệu điều này có được phép? Apple kiểm duyệt ứng dụng bạn tải từ App Store, và quy tắc này không nằm trong đó. Ứng dụng tải nó từ máy chủ sau khi cài đặt, và máy chủ quyết định ai nhận phiên bản nào.

Apple cho phép ứng dụng tải các bản cập nhật JavaScript như vậy — cách mà các công cụ như Expo Updates hoạt động — miễn là bản cập nhật không thay đổi bản chất ứng dụng. Liệu việc thay đổi mảnh ghép dựa trên giá quảng cáo có vi phạm điều đó hay không phụ thuộc vào cách Apple diễn giải.

Nhóm nghiên cứu đã công bố ba gói bằng chứng (Android, iOS và bản ghi thực tế trên iPhone) kèm mã băm SHA-256 và các lệnh kiểm tra, để bất kỳ ai cũng có thể tự xác minh. Các tệp quy tắc vẫn đang được phục vụ công khai trên máy chủ của game.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗