Hồ sơ 02

Đọc một game không thể chạy

Các view gói, ARM/Thumb, symbol và tài nguyên trở thành corpus bằng chứng có giới hạn—không phải vật thay thế mã nguồn.

Câu hỏi dẫn đường:Dữ kiện tĩnh về gói, native và tài nguyên trở thành hành vi có thể bảo vệ bằng cách nào?

Câu hỏi 01 — Siêu dữ liệu thật sự nói được bao nhiêu?

Gói cung cấp nhiều view tĩnh độc lập: manifest Android và siêu dữ liệu chữ ký, ranh giới Java và JNI do ứng dụng sở hữu, một thư viện ARM đã strip, chuỗi in được, hình học tài nguyên và symbol còn lại. Sự đồng thuận giữa các view quan trọng hơn bất kỳ công cụ đơn lẻ nào.

Hiện vật

libgame.so là ELF32 little-endian ARM EABI5 cho ARM v5TE. Function ứng dụng chủ yếu ở trạng thái Thumb; bit thấp của địa chỉ symbol định danh trạng thái Thumb và địa chỉ instruction được chuẩn hóa bằng rawAddress & ~1. GNU ARM và LLVM cấu hình cho Thumbv5TE là hai view instruction độc lập.

Bằng chứngCLM-NATIVE-PROFILE

Phương pháp

Phép chiếu native xác định chứa đúng 713 function được allowlist tường minh và auto-indexed. Trong số đó, 553 có call trực tiếp, 684 có hằng số và 91 có string cross-reference độ tin cậy cao tới vùng dữ liệu được cấp phát.

Các con số này mô tả trường làm giàu, không phải 713 lần rà soát ngữ nghĩa thủ công. Cả 713 bản ghi đều có review state auto-indexed; lập chỉ mục tự động là bản đồ phục vụ rà soát, không phải bằng chứng một người đã hiểu mọi function.

Hợp đồng hoặc quyết định

Văn bản công khai đã tuyển chọn có thể mô tả symbol, địa chỉ, quy tắc ARM/Thumb, hằng số, call, chuỗi và ranh giới subsystem. Nó không công bố byte instruction, dump decompiler, cơ sở dữ liệu phân tích hay đường dẫn riêng tư. Đầu ra giống decompiler và siêu dữ liệu disassembly không bao giờ được gọi là mã nguồn C++ gốc.

Bằng chứngCLM-NATIVE-PRODUCT-SURFACE

Kiểm chứng

Analyzer v3 tái sinh corpus từ hash đã đăng ký và yêu cầu các phép chiếu đã tuyển chọn giống nhau từng byte. Một kiểm kê 862 tài nguyên riêng gồm 784 PNG, 59 WAV, 3 MP316 phông chữ. Đối soát sau đó phân loại 761 được dùng, 100 bị loại đã rà soát, một không được hỗ trợ và không có disposition chưa xác định.

Bằng chứngCLM-ASSET-COUNTS Bằng chứngCLM-NO-EXTERNAL-GAME-CONFIG

Giới hạn

Phân tích tĩnh không thể cho thấy frame, dạng sóng, thứ tự draw hay hành vi thiết bị lịch sử đã được quan sát. Call gián tiếp không giải được đích nằm ngoài số call trực tiếp. Sự hiện diện tài nguyên không chứng minh việc dùng khi chạy, ý định lịch sử hay quyền tái phân phối.

Bước tiếp theo

Corpus chỉ có ích khi người đọc hoài nghi có thể theo một dữ kiện tới bản phục dựng tạo ra.

Chuỗi ổn định, có thể chia sẻ

Theo một khẳng định từ nguồn đến kiểm chứng

Mỗi nút là liên kết sâu thông thường. Khi chọn, nguồn phía trước, kiểm chứng phía sau, trạng thái bằng chứng và giới hạn vẫn nằm trong cùng ngữ cảnh đọc.

Bảy nút nối nhau: APK nguồn, view dẫn xuất, khẳng định có nhãn, hợp đồng đã rà soát, chủ sở hữu TypeScript clean-room, kiểm thử hoặc probe xác định và kiểm chứng runtime của bản phục dựng.
Bảy nút nối nhau: APK nguồn, view dẫn xuất, khẳng định có nhãn, hợp đồng đã rà soát, chủ sở hữu TypeScript clean-room, kiểm thử hoặc probe xác định và kiểm chứng runtime của bản phục dựng.
  1. Nguồn

    SRC-APK-001 · APK bất biến đã hash

    Trạng thái: đã phục hồi

    Điều không được chứng minh: Không có quan sát runtime gốc.

  2. View dẫn xuất

    DER-NATIVE-CORPUS-001 · corpus tĩnh tái lập

    Trạng thái: đã phục hồi

    Điều không được chứng minh: Không công bố byte native.

  3. Khẳng định

    CLM-CLASSIC-BLADE-QUERY

    Trạng thái: đã phục hồi

    Điều không được chứng minh: Tag 1437 vẫn chưa rõ nghĩa sản phẩm.

  4. Hợp đồng

    DER-CLASSIC-PHYSICS-001 · hợp đồng vật lý đã rà soát

    Trạng thái: đã rà soát

    Điều không được chứng minh: Không phải mã nguồn C++ gốc.

  5. Chủ sở hữu

    TypeScript domain + ClassicPhysicsAdapter

    Trạng thái: clean-room

    Điều không được chứng minh: Không nhúng hay gọi libgame.so.

  6. Kiểm thử

    Adapter tests + DER-PHYSICS2D-EQUIVALENCE-001

    Trạng thái: đã đo

    Điều không được chứng minh: Chỉ đo backend của bản phục dựng.

  7. Môi trường chạy

    Android debug + Web Mobile H5

    Trạng thái: đã đo

    Điều không được chứng minh: Không chứng minh danh tính runtime lịch sử.

Bảng chuỗi bằng chứng đầy đủ
LớpHiện vật hoặc quyết địnhTrạng tháiĐiều không được chứng minh
NguồnSRC-APK-001 · APK bất biến đã hashđã phục hồiKhông có quan sát runtime gốc.
View dẫn xuấtDER-NATIVE-CORPUS-001 · corpus tĩnh tái lậpđã phục hồiKhông công bố byte native.
Khẳng địnhCLM-CLASSIC-BLADE-QUERYđã phục hồiTag 1437 vẫn chưa rõ nghĩa sản phẩm.
Hợp đồngDER-CLASSIC-PHYSICS-001 · hợp đồng vật lý đã rà soátđã rà soátKhông phải mã nguồn C++ gốc.
Chủ sở hữuTypeScript domain + ClassicPhysicsAdapterclean-roomKhông nhúng hay gọi libgame.so.
Kiểm thửAdapter tests + DER-PHYSICS2D-EQUIVALENCE-001đã đoChỉ đo backend của bản phục dựng.
Môi trường chạyAndroid debug + Web Mobile H5đã đoKhông chứng minh danh tính runtime lịch sử.

Câu hỏi 02 — Một dữ kiện native trở thành hành vi production an toàn bằng cách nào?

Đường đại diện lưỡi dao/Physics2D đi qua đơn vị, thời gian frame, thứ tự query, lọc, vòng đời đối tượng, sở hữu triển khai và kiểm chứng backend. Nó đủ hẹp để kiểm tra từ đầu đến cuối và đủ giàu để lộ mọi ranh giới.

Hiện vật

Bằng chứng tĩnh phục hồi tỷ lệ PTM 32 đơn vị world Cocos cũ trên một mét Box2D, trọng lực (0,-10) và một bước biến thiên Step(frameDt * worldSpeed, 10, 10) khi vật lý hoạt động. Đầu vào lưỡi dao sở hữu bốn touch slot, kéo dài từng đoạn đủ điều kiện rồi raycast xuôi và ngược sau bước vật lý.

Bằng chứngCLM-CLASSIC-PHYSICS-UNITS Bằng chứngCLM-CLASSIC-BLADE-QUERY

Phương pháp

Callback tiếp tục qua mọi hit. Kết quả được xử lý theo thứ tự thu thập, loại body metadata null, node tag 1437 và đối tượng bị tắt cắt. Guard trùng lặp biểu kiến so địa chỉ vùng lưu trữ thay vì giá trị fixture, nên mặc định độ trung thực đã rà soát giữ các lần xuất hiện fixture lặp từ hai hướng ray.

Hợp đồng hoặc quyết định

Creator nhận tọa độ world công khai và áp dụng PTM một lần. Vì vậy bản viết lại không chia tọa độ ray cho 32 lần thứ hai. TypeScript thuần sở hữu quy tắc xác định còn Creator Physics2D sở hữu ranh giới công cụ game. Mọi yêu cầu hủy body/component/node trong step, contact hay ray đều được hoãn tới khi world mở khóa.

Kiểm chứng

Probe @cocos/box2d@1.0.2 đã pin vượt qua các hàng quỹ đạo tại 1/120, 1/601/30 với iteration 10/10; raycast xuôi/ngược giữ chuỗi lặp đã đo; bộ lọc contact song phương pass; hủy trực tiếp bị từ chối khi khóa; hủy trong hàng đợi thành công sau Step.

Trace đại diện lưỡi dao / Physics2D

Một quy tắc, bốn lane có trách nhiệm

Chọn một lane hoặc phát lại thứ tự. Trace đầy đủ vẫn hiển thị bên dưới khi không có JavaScript, và mọi phép chuyển đổi giữ nguyên trạng thái bằng chứng cùng giới hạn.

1 · Bằng chứng

Siêu dữ liệu ARM/Thumb đã đối chiếu

  1. PTM: 32 đơn vị world Cocos cũ = 1 mét Box2D.
  2. Một Step(frameDt * worldSpeed, 10, 10) biến thiên khi vật lý hoạt động.
  3. Raycast xuôi rồi ngược; giữ thứ tự và lần xuất hiện fixture lặp.
  4. Hủy body được hoãn đến khi world không còn khóa.

Kiểm chứng hoặc giới hạn: DER-NATIVE-CORPUS-001 · CLM-CLASSIC-PHYSICS-UNITS · CLM-CLASSIC-BLADE-QUERY

Giai đoạn limit: Siêu dữ liệu disassembly không phải mã nguồn C++ gốc; runtime gốc chưa từng được quan sát.

2 · Hợp đồng

Hành vi đã rà soát

  1. Creator nhận tọa độ world; không chia PTM 32 lần thứ hai.
  2. Bộ lọc gameplay loại user data null, tag 1437 và đối tượng disable-cut.
  3. Nối kết quả ray xuôi rồi ngược mà không sort hay deduplicate theo collider.
  4. Mọi mutation vòng đời đi qua hàng đợi sau step.

Kiểm chứng hoặc giới hạn: DER-CLASSIC-PHYSICS-001 · DER-CLASSIC-CUT-SCORE-001

Giai đoạn limit: Ý nghĩa sản phẩm của tag 1437 và hành vi native không an toàn vẫn chưa xác định.

3 · Bản dựng

Chủ sở hữu clean-room TypeScript

  1. classic-physics-rules.ts và classic-variable-step.ts sở hữu quy tắc thuần.
  2. classic-physics-adapter.ts sở hữu PhysicsSystem2D, đồng bộ và PTM.
  3. blade-input-controller.ts cùng classic-cut-query.ts sở hữu bốn track và hai query.
  4. Creator dùng trọng lực công khai (0,-320) world unit/s² để biểu diễn (0,-10) m/s².

Kiểm chứng hoặc giới hạn: Cocos Creator 3.8.8 + TypeScript

Giai đoạn limit: Bản dựng không nhúng, gọi hay dịch cơ học APK hoặc libgame.so.

4 · Kiểm chứng

Kiểm thử xác định và probe backend

  1. Trajectory pass tại 1/120, 1/60 và 1/30 với 10/10 iteration.
  2. Kết quả ray: right, left, right, left; fixture lặp được giữ.
  3. Contact song phương pass và phá hủy trực tiếp bị từ chối khi world khóa.
  4. Hàng đợi hủy thành công sau khi Step trả về.

Kiểm chứng hoặc giới hạn: DER-PHYSICS2D-EQUIVALENCE-001 · adapter/backend/contact/raycast/lifecycle tests

Giai đoạn limit: Đây là đo kiểm bản phục dựng; originalRuntimeObservation = false.

Trace tĩnh đầy đủ
Giai đoạnDữ kiện và sở hữuKiểm chứng hoặc giới hạn
1 · Bằng chứngPTM: 32 đơn vị world Cocos cũ = 1 mét Box2D. Một Step(frameDt * worldSpeed, 10, 10) biến thiên khi vật lý hoạt động. Raycast xuôi rồi ngược; giữ thứ tự và lần xuất hiện fixture lặp. Hủy body được hoãn đến khi world không còn khóa.DER-NATIVE-CORPUS-001 · CLM-CLASSIC-PHYSICS-UNITS · CLM-CLASSIC-BLADE-QUERY. Siêu dữ liệu disassembly không phải mã nguồn C++ gốc; runtime gốc chưa từng được quan sát.
2 · Hợp đồngCreator nhận tọa độ world; không chia PTM 32 lần thứ hai. Bộ lọc gameplay loại user data null, tag 1437 và đối tượng disable-cut. Nối kết quả ray xuôi rồi ngược mà không sort hay deduplicate theo collider. Mọi mutation vòng đời đi qua hàng đợi sau step.DER-CLASSIC-PHYSICS-001 · DER-CLASSIC-CUT-SCORE-001. Ý nghĩa sản phẩm của tag 1437 và hành vi native không an toàn vẫn chưa xác định.
3 · Bản dựngclassic-physics-rules.ts và classic-variable-step.ts sở hữu quy tắc thuần. classic-physics-adapter.ts sở hữu PhysicsSystem2D, đồng bộ và PTM. blade-input-controller.ts cùng classic-cut-query.ts sở hữu bốn track và hai query. Creator dùng trọng lực công khai (0,-320) world unit/s² để biểu diễn (0,-10) m/s².Cocos Creator 3.8.8 + TypeScript. Bản dựng không nhúng, gọi hay dịch cơ học APK hoặc libgame.so.
4 · Kiểm chứngTrajectory pass tại 1/120, 1/60 và 1/30 với 10/10 iteration. Kết quả ray: right, left, right, left; fixture lặp được giữ. Contact song phương pass và phá hủy trực tiếp bị từ chối khi world khóa. Hàng đợi hủy thành công sau khi Step trả về.DER-PHYSICS2D-EQUIVALENCE-001 · adapter/backend/contact/raycast/lifecycle tests. Đây là đo kiểm bản phục dựng; originalRuntimeObservation = false.

Giới hạn

Probe backend chứng minh tương đương từ hợp đồng đã phục hồi đến backend bản phục dựng. Nó không quan sát hay định danh môi trường chạy gốc. Ý nghĩa sản phẩm của tag 1437, thứ tự draw RNG native chính xác và layout electric-contact không an toàn vẫn là giới hạn tường minh.

Bước tiếp theo

Trang Chơi chỉ tải bản phục dựng sau một thao tác rõ ràng của người đọc.