GemmaExplains/lords2-ai-cheats
GitHub: GemmaExplains/lords2-ai-cheats
通过反编译和内存映射证明《Lords of the Realm II》AI 作弊的逆向工程证据库,附带验证脚本可从用户自有游戏二进制文件中提取作弊常量表。
Stars: 0 | Forks: 0
# lords2-ai-cheats
视频背后的反编译证据。每一个断言都是一个内存偏移量、一个
地址,或者是从零售版 **`Lords2.exe`** 中提取出的常量——而且这个 repo
包含一个小脚本,可以直接从*你自己的*游戏副本中读取确凿的证据。无需运行游戏,无需调试器,也无需逆向工程。
- 📺 讲座:https://youtu.be/9bErtaWwQCc
- 🎮 游戏(仍在售):https://store.steampowered.com/app/397350/
## 十秒钟内亲自验证
带上你自己的、合法拥有的 `Lords2.exe`(GOG 发行版)。然后:
```
# 使用 Nix — 无需 Python 设置:
nix run github:GemmaExplains/lords2-ai-cheats -- "/path/to/Lords of the Realm II/Lords2.exe"
# 或纯 Python 3(仅限标准库):
python tools/verify.py "/path/to/Lords of the Realm II/Lords2.exe"
```
它会校验文件的哈希值,然后转储**游戏每个回合向每个 AI 领地发放的免费皇冠**表格,直接从二进制文件的 `.data` 段中读取:
```
== Free crowns handed to each AI realm, per turn ==
(read from the retail binary; humans are granted nothing)
AI realm level >= 3 (holds 3+ counties)
address 0x4dc1e0 (section .data, file offset 0xda3e0)
pers easy(0) (1) (2) hard(3)
1 0 400 700 1200
2 100 500 800 1400
3 0 400 700 1200
4 250 600 1100 1800
...
peak free income: 1800 crowns/turn, no county required, no upkeep charged on it.
```
你什么也得不到。而 AI 仅仅因为存在,每个回合就能获得多达 **1,800 个皇冠**。
## AI 究竟逃脱了什么
| # | 作弊行为 | 含义 | 在 `Lords2.exe` 中的位置 |
|---|-----------|---------------|-----------------------|
| 1 | **维护费除数** | 你每个回合为每个士兵支付 `value/4`;AI 在困难难度下支付 `value/10` —— 相同的军队,只付 40% 的费用 | `FUN_0049a990`,难度 `0x53f23c` → [upkeep-divisors.md](data/upkeep-divisors.md) |
| 2 | **免费金币发放** | 每个 AI 每回合最多获得 1,800 皇冠,人类玩家获得 0 | `0x4dc1e0` / `0x4dc230` → [grant-table.md](data/grant-table.md) · *可在上方验证* |
| 3 | **骰子是假的** | 战略伤亡判定器是确定性的 —— 相同的输入,相同的死亡人数;在势均力敌的战斗中反复读档(S/L 大法)对你毫无帮助 | `FUN_004aad07` → [CHEATS.md](CHEATS.md) |
| 4 | **决定胜负的按钮** | 选择*自动战斗*会在“掷骰子”之前,将**防守方**的强度悄悄乘以 1.6–4.0 —— 如果手动进行同样的战斗,则没有乘数加成 | `FUN_004a8aab` → [CHEATS.md](CHEATS.md) |
| 5 | **错误的数学运算** | 幸福度读取是真实的(一个最高税率的郡县显示为 -45;三个这样的郡县会将一个有符号 *byte* 溢出为“+111”),并且人口计算没有上限 —— 持续增加会导致有符号整数从 `+2,000,000,000` 溢出为 `−1,994,967,296` | [CHEATS.md](CHEATS.md) |
| 6 | **……但你*看到*的军队却是个白痴** | *战术*战场 AI 从不会放风筝,而且很容易被一个单独的农民引诱 —— 这正是开发者将作弊隐藏在经济系统中的原因,在那里你能感觉到它,却永远抓不到它 | 战场模拟 → [CHEATS.md](CHEATS.md) |
包含反编译摘录的完整演练:**[CHEATS.md](CHEATS.md)**。
## 目录结构
```
tools/verify.py reads the cheat tables out of your Lords2.exe (stdlib only)
tools/cheat_data.py the live extractor used while filming (rides a Frida probe)
CHEATS.md the full mapped proof: address → constant → decompiled logic
data/ the extracted tables (grant, upkeep divisors, unit weights)
decompiled/ short annotated decompiled excerpts (fair-use commentary)
NOTICE what this repo is and isn't; the exact binary it targets
```
## 制作过程
这些地址是在 Ghidra 辅助的私人反编译过程中映射出来的,并配合了一个用于读取运行中游戏的 Frida 探针 —— 这与 [openrecet](https://github.com/Francesco149/openrecet) 为 Recettear 讲座提供支持的方式相同。这个 repo 是*凭证*,而不是测试框架:刚好足以让你能够对照自己的二进制文件确认每一个数字。
必须给予迟到了三十年的署名 —— 献给最早察觉到这一点的玩家:
**danconnors**,他在 Steam 上发起了一个标题字面意思就是
["This Game CHEATS!!!"](https://steamcommunity.com/app/397350/discussions/0/224446432328030220/)
(2016)的讨论串,还有 **RedHarvest1**,他在 GOG 论坛上进行的
[经验性单位属性测试](https://www.gog.com/forum/lords_of_the_realm_lords_of_magic_series/lotr_2_units_stats_empirical)
通过手动测量,印证了我们后来从字节中读取到的数据。
## 法律声明
独立的评论与批评。不包含**任何游戏代码、二进制文件或
资产** —— 仅包含事实(地址、常量)以及出于评论目的而复制的简短反编译摘录(合理使用)。请使用你自己合法获取的游戏。参见
[NOTICE](NOTICE)。工具与文章采用 MIT 协议 © 2026 Gemma-san。
*已记录出席情况。fufu~ ♥* 🦋💜
标签:Python, 云安全监控, 数据提取, 无后门, 游戏, 逆向分析, 静态分析