PC单机大作
极限竞速 地平线4(Forza Horizon 4)全DLC中文高压硬盘版

极限竞速 地平线4(Forza Horizon 4)全DLC中文高压硬盘版

在世界上最盛大的汽车嘉年华上,不断变化的赛季改变着一切。单枪匹马或者与其他人组队,在一个共享开放世界中探索美丽而富有历史气息的英国。收集、改装和驾驶超过 450 辆车辆。
尽情竞速、表演特技、创造和探索:选择您专属的方式来成为地平线中的超级巨星。

最低配置:
需要 64 位处理器和操作系统
操作系统: Windows 10 version 15063.0 or higher
处理器: Intel i3-4170 @ 3.7Ghz OR Intel i5 750 @ 2.67Ghz
内存: 8 GB RAM
显卡: NVidia 650TI OR AMD R7 250x
DirectX 版本: 12
网络: 宽带互联网连接
存储空间: 需要 80 GB 可用空间

推荐配置:
需要 64 位处理器和操作系统
操作系统: Windows 10 version 15063.0 or higher
处理器: Intel i7-3820 @ 3.6Ghz
内存: 12 GB RAM
显卡: NVidia GTX 970 OR NVidia GTX 1060 3GB OR AMD R9 290x OR AMD RX 470
DirectX 版本: 12
网络: 宽带互联网连接
存储空间: 需要 100 GB 可用空间

关于这款游戏

在世界上最盛大的汽车嘉年华上,不断变化的赛季改变着一切。单枪匹马或者与其他人组队,在一个共享开放世界中探索美丽而富有历史气息的英国。收集、改装和驾驶超过 450 辆车辆。尽情竞速、表演特技、创造和探索:选择您专属的方式来成为地平线中的超级巨星。

收集超过 450 辆车辆
尽情享受包含超过 100 个授权车厂的最庞大和最多元化地平线车辆名单。

尽情竞速、表演特技、创造和探索。
在全新开放式剧情中,您做的任何事情都能推进您的游戏进度。

探索开放世界
现实玩家将遍布在您的世界中。所有游戏玩家都能在同一时间体验时间、天气和四季的变化。

探索美丽而富有历史气息的英国
体验您从未见过的英国。在壮丽的原生 4K 和 HDR 中探索湖泊、山谷、城堡和美不胜收的风景。

  • 随附的DLC
  • 1929年,梅赛德斯·奔驰SSK
  • 1938 MG TA侏儒
  • 1953年捷豹C型
  • 1959年的凯迪拉克Eldorado Biarritz敞篷车
  • 1959保时捷356A Coupe
  • 1962年胜利TR3B
  • 1963欧宝Kadett A
  • 1965皮尔·三叉戟
  • 1966希尔曼小鬼
  • 1966年大众双层驾驶室接客
  • 1967新光老虎
  • 1968 Ford Mustang GT 2 + 2 Fastback
  • 1970年胜利TR6 PI
  • 1972兰博基尼Jarama S
  • 1974年本田思域RS
  • 1977年Hoonigan Ford Gymkhana 10 F-150
  • 1979 Talbot阳光莲花
  • 1985保时捷#186 959巴黎-达喀尔
  • 1993霍尼根·福特·护航·考斯沃斯A组
  • 1993保时捷968 Turbo S
  • 2002马自达RX-7 Spirit R Type-A
  • 2003本田S2000
  • 2004沃克斯豪尔VX220
  • 2005法拉利FXX
  • 2005本田NSX-R GT
  • 2010沃克斯豪尔(Vauxhall)徽章VXR
  • 2014迈凯轮650超级运动Spyder
  • 2016本田思域跑车GRC
  • 2017法拉利GTC4Lusso
  • 2017科尼赛克Agera RS
  • 2018阿尔法罗密欧Stelvio Quadrifoglio
  • 2018阿斯顿·马丁Vantage
  • 2018 Can-Am小牛X3 X RS Turbo R
  • 2018年雪佛兰Camaro ZL1 1LE
  • 2018年雪佛兰Deberti设计DriftTruck
  • 2018福特Deberti设计野马Fastback
  • 2018摩根航空GT
  • 2018年日产SentraNismo
  • 2018 TVR格里菲斯
  • 2019宝马i8跑车
  • 2019雪佛兰克尔维特ZR1
  • 2019保时捷911 Carrera S
  • 任何地形车包
  • 巴雷特-杰克逊汽车背包
  • 最好的邦德车包
  • 英国跑车包
  • 汽车通行证
  • 福特全顺
  • 公式漂移车包
  • 财富岛
  • Hot Wheels™传奇汽车包
  • 图标汽车包
  • 日本英雄车包
  • 兰博基尼Gallardo LP570-4 Spyder Performante
  • 乐高®速度冠军
  • 三菱汽车组合
  • 开顶式汽车包
  • 高性能汽车包
  • 藏宝图
  • 贵宾欢迎礼包

游戏目录搜索ini 将里面的language=english改为language=tchinese

高压硬盘版游戏图文安装教程(点击图片查看教程):

迅雷下载速度慢可以在下载时 右击离线到迅雷网盘 随后取回

友情提示:此游戏需求1903系统 20h以上可能不兼容 系统用户名和系统账户名(c盘user下的名字)务必全英文 否则必闪退

订阅评论
提醒
44 评论
最旧
最新 最多投票
649649
4 年 前

为什么安装完打不开啊,只能在任务管理器里看到
重新装好几次了

1879989180@qq.com
回复给  flysheep
4 年 前

怎么默认啊大大

a480546784
回复给  flysheep
3 年 前

怎么改 求!!!!

ccc
回复给  flysheep
3 年 前

存档在哪里

4 年 前

为啥装好了打不开

4 年 前

这咋用手柄

rkc671
4 年 前

一切良好,路径,用户名,驱动,组件库什么都没问题,就是打不开游戏,点击游戏图标光标转两下,然后没反应,任务管理器进程也没有,有什么解没?
winver:Windows11 22H2 DEV 22572.201
i7-8750H 1050Ti-Notebook

crab
回复给  flysheep
4 年 前

请问win11可以玩吗

mario
回复给  crab
4 年 前

我刚装完打不开

TygerL
回复给  rkc671
3 年 前

刷个win10吧

shuijiao
4 年 前

游戏打不开少文件

daqing
4 年 前

emmm解压不了

刘宇航
4 年 前

为什么会安装到一半进度卡着不动了,求作者大大解答

LXB
4 年 前

大佬大佬,为什么文件下载不了?

大西瓜
4 年 前

安装后打不开什么原因?Win10 20H2 19042版 打开游戏后任务栏没有出现图标,桌面出现游戏后闪退,怎么也打不开

依鸢奈绪
4 年 前

请问这个游戏的存档位置在哪?我想重玩

hhh
4 年 前

安装卡在31.6几个小时了动不了,,杀毒软件也关了呀,为啥??

Lucifer
3 年 前

这个进去直接有DLC吗?

HDFJ
3 年 前

都这样了还是不行,

HDFJ
回复给  HDFJ
3 年 前

出现这样的提示

diie039
3 年 前

win11可以玩吗

lll55
3 年 前

为什么更了w11后玩不了啊

junwangchen
3 年 前

为什么安装以后打开软件,显示没有找到XINPUT1_3.dll

金毛熊
3 年 前

乐高谷地进不去 联网断网都不行 联网进去直接死机 单机模式进去卡黑屏。财富岛断网可以进 。请教大佬怎么解决进乐高, 系统是WIN10

kofkk
3 年 前

windwos11无法运行,需要安装一个补丁,下载地址https://bbs.3dmgame.com/thread-6202946-1-1.html

Ryan
回复给  kofkk
2 年 前

确实可以,建议作者把这条置顶一下

王一夫
2 年 前

我刚装上能玩 然后吧游戏本体换到另一个硬盘里了就打不开了

sss
1 年 前

win11启动没反应

yjj
1 年 前

下载完了打不开,显示在后台运行但是没有界面

111
回复给  yjj
6 天 前

你看看我这个

111
6 天 前

家人们我终于解决了,我现在玩了。问就是豆包干的

111
回复给  111
6 天 前

Forza Horizon 4 修复全过程总结一、最初症状:启动无界面有进程游戏启动后表现为:

  • 内存稳定在 210MB,6 个线程,CPU 时间持续增长
  • 无窗口、无画面,NVIDIA GPU 0%
  • 进程一直存在但不继续初始化

排查过程(均无效)表格
排查方向结果HOODLUM/OnlineFix 两套破解均无效Xbox Identity Provider + 4 个 Xbox 服务已安装启动,无效火绒信任区→退出→断网→完全卸载无效(后证实火绒误删了 explorer.exe)双显卡(RTX 3060 + AMD 核显)注册表配置高性能,无效各种启动参数(-windowed/-dx11/-nosound 等)全部无效重命名 amd_ags_x64.dll行为有变化但仍无窗口二、关键突破:WinDbg 转储分析发现死锁通过完整内存转储 + ~* k 查看所有线程调用栈,定位到死锁

  • 主线程ntdll!NtWaitForSingleObjectLdrpDrainWorkQueueLdrpLoadDllInternal → 游戏代码 → LoadLibraryExW主线程在等待 DLL 加载工作队列排空
  • 关键工作线程:游戏的 DLL 加载通知回调函数LdrpSendDllNotifications → … → dinput8!__delayLoadHelper2回调函数在处理 DLL 加载通知时卡住了

根本原因初步定位:游戏注册的 LdrRegisterDllNotification 回调函数有 bug,处理任何 DLL 通知都会卡住,导致主线程等待的工作队列永远无法排空。

三、代理 DLL 方案迭代(A~J,大部分失败)方案 A:代理 dinput8.dll + DllMain 预加载 InputHost.dll游戏行为有变化,但仍无窗口。
方案 B:完全独立的 dinput8 存根 DLL重大发现:回调函数仍然卡住,但这次触发它的不是 dinput8.dll,而是 user32.dll

  • 调用链:游戏调用 LoadImage(加载图标)→ user32!LoadIcoCuruser32!ConvertPNGToDIBIconuser32!InitializeIcsLoadLibraryExW → 触发游戏回调
  • 结论:问题不是某个特定 DLL,而是游戏的回调函数本身有 bug

方案 C:完全阻止回调注册(inline hook LdrRegisterDllNotification)重大突破:游戏通过了之前的卡住点!

  • 内存从 210MB 暴增到 885MB,线程从 6 暴增到 131
  • 游戏开始正常初始化
  • 但 20-25 秒后崩溃退出(0xC0000005 访问违例)

新问题:回调函数虽然有 bug,但也负责初始化某些子系统。完全阻止注册后,游戏的某个对象没有被正确创建,后续虚函数调用时对象指针无效。
方案 D~J:各种回调策略

  • 包装回调 + 按 DLL 名称过滤
  • 单独线程调用回调 + 超时
  • 只允许前 N 个回调通过
  • 预加载 50 个系统 DLL

全部失败:回调函数处理任何 DLL 通知都会崩溃(异常代码 0xC0000027),19 次崩溃只有 5-6 次成功。

四、回调函数逆向分析

  • 回调函数真实起始 RVA:0x2D4D4B4,大小约 0x800 字节
  • 代码加密:起始处第一个字节是 0x6C(insb 特权指令),看起来是随机数据
  • 崩溃地址集中在回调函数偏移 0x08C1 附近(回调调用的子函数)
  • 直接逆向困难

五、重大突破:WinDbg 实时调试定位具体 bug通过在崩溃点设置断点 + 单步执行,精确定位到回调函数崩溃的具体原因:

  • 崩溃地址:ForzaHorizon4+0x861b870(第二个 .text 节,未加密
  • 崩溃指令:mov dword ptr [rcx],eax
  • rcx = 00000000738fed4c高 32 位为 0,无效地址

根本原因

lea ecx,[rbp+100h]   ; ❌ 用了 32 位寄存器 ecx!
sub ecx,4             ; 把 64 位栈地址截断成了 32 位
mov dword ptr [rcx],eax  ; 写入无效地址 → 崩溃

应该是 lea rcx,[rbp+100h](64 位寄存器)。

六、游戏主程序补丁PE 文件结构发现游戏有 11 个节,包括两个 .text 节

  • 第一个 .text 节(VA 0x1000,75MB):代码加密,运行时才解密
  • 第二个 .text 节(VA 0x087B4000,19MB):代码未加密,可直接打补丁
  • 有 .detourc/.detourd 节:使用了 Microsoft Detours 库 hook Steam API

补丁详情

  • 位置:文件偏移 0x085ECA77(第二个 .text 节)
  • 原始8D 8D 00 01 00 00 83 E9 04lea ecx,[rbp+100h] + sub ecx,4
  • 补丁48 8D 8D FC 00 00 00 90 90lea rcx,[rbp+0FCh] + nop + nop
  • 作用:用 64 位寄存器 rcx 计算地址,避免指针被截断

补丁测试结果表格
组合结果只用补丁(不阻止回调)回到最初的死锁(回调还有其他 bug)补丁 + 完全阻止回调能到窗口,但 18 秒后崩溃补丁 + 包装回调能到窗口,但很快崩溃
结论lea ecx 只是回调函数的 bug 之一,回调还有其他 bug,无法完全修复。

七、第一个崩溃点分析(阻止回调后的崩溃)阻止回调注册后,游戏在 ForzaHorizon4+0x32bf42f 崩溃:

  • 指令:call qword ptr [rax+20h](虚函数调用)
  • rax = 0x1000000000无效对象指针 / 虚函数表指针为 0
  • 在第一个 .text 节(加密代码,无法直接打补丁)

崩溃点函数完整反汇编

push rbx
sub rsp, 30h
mov r9, [rcx+18h]        ; r9 = 输入对象偏移 0x18
lea r8, [rip-0x461]      ; r8 = 静态地址
mov rbx, [rcx+8]          ; rbx = 返回值保存位置
add r9, 0A0h              ; r9 += 0xA0
mov edx, 4                ; 参数2 = 4
mov dword ptr [rsp+20h], 101h  ; 参数5 = 0x101
mov rcx, [r9]             ; rcx = 子对象指针(this)
mov rax, [rcx]            ; rax = 虚函数表指针 ← 为0!
call qword ptr [rax+20h]  ; 调用虚函数 ← 崩溃
mov [rbx], eax             ; 保存返回值
mov byte ptr [rbx+4], 1   ; 设置成功标志
add rsp, 30h
pop rbx
ret

关键发现

  • 子对象来自输入对象偏移 0xB8[rcx+0x18] + 0xA0
  • 子对象的虚函数表指针为 0(未初始化)
  • 这是一个查询 / 初始化函数,调用子系统的虚函数并保存结果

崩溃点 hook 方案

  • 用轮询检测代码解密状态,一旦崩溃点解密完成(原始字节 FF 50 20),立即用 3 个 nop 替换
  • 效果:游戏能加载 1.5GB 资源,有时 50 秒崩溃,有时 90 秒 + 不崩
  • 游戏能到主界面,但进入大世界闪退

八、VEH 异常处理方案第一个崩溃点处理

  • VEH 捕获崩溃点,跳过 call,设置 rax=1(非零返回值)
  • 游戏能稳定到主界面(151 秒未崩溃)
  • 进入大世界时闪退

第二个崩溃点(进入大世界闪退)

  • 崩溃地址:0x00007FF912357410(固定值,不在任何模块中)
  • rax = 崩溃地址本身,程序通过 call rax 跳转
  • rcx 指向栈结构体,第一个成员就是这个无效函数指针
  • 发生在 Concurrency::task(并发任务)线程
  • 调用栈底部:MSVCP140!Concurrency::details::_Task_scheduler_callback
  • rdi 指向的对象包含字符串 “keyboard”(键盘输入设备对象)

根本原因:第一个崩溃点跳过的虚函数调用负责初始化键盘输入子系统。进入大世界时,未初始化的键盘输入任务被调度执行,其函数指针为无效值。
第二个崩溃点各种方案(均失败)表格
方案结果跳转到栈上 “返回地址”新崩溃(地址不正确,代码仍访问无效内存)ExitThread 终止线程新崩溃(栈已损坏,ExitThread 内部异常)存根函数替换函数指针级联崩溃(任务体未执行,后续代码访问更多无效内存)九、最终方案(成功!)第一个崩溃点:假虚函数表不再跳过 call,而是:

  1. 构造一个假的虚函数表(8 个条目,偏移 0x20 处是存根函数地址)
  2. 检查子对象的虚函数表指针,如果为 0 或无效,把它指向假表
  3. 重新加载 rax = 假表地址
  4. 继续执行 call 指令(不跳过)

效果:虚函数调用 “成功”(调用存根函数返回 0),对象被正确 “初始化”(返回值 0 + 成功标志 1),后续代码能正常运行。
第二个崩溃点:挂起线程不再终止或替换,而是:

  1. VEH 捕获第二个崩溃点(键盘输入任务)
  2. 调用 SuspendThread 挂起当前线程
  3. 线程不会继续执行,也不会崩溃
  4. 游戏的其他线程继续运行

关键洞察:这个键盘输入任务线程不是关键线程,挂起它不影响游戏正常操作(键盘、手柄、声音、画面均正常)。

十、最终结果表格
指标数值启动到主界面约 30 秒进入大世界约 75 秒(自动挂起键盘任务线程)稳定运行5 分钟 + 未崩溃内存占用约 4GB(正常)游戏内操作键盘、手柄、声音、画面均正常
修复文件

  1. ForzaHorizon4.exe(已打补丁):修复 lea ecx 32 位指针截断 bug
  2. dinput8.dll(代理 DLL):
  • 阻止游戏注册 DLL 加载通知回调
  • VEH 捕获第一个崩溃点 → 假虚函数表修复
  • VEH 捕获第二个崩溃点 → 挂起键盘输入任务线程

根本原因总结游戏的 DLL 加载通知回调函数存在多个 bug(包括 lea ecx 32 位指针截断),导致回调函数处理任何 DLL 通知都会死锁或崩溃。阻止回调注册后,输入设备子系统(键盘等)未初始化,导致后续虚函数调用和并发任务执行时崩溃。通过假虚函数表 + 挂起未初始化任务线程的方式,绕过了这两个崩溃点,让游戏能正常运行。
朗读朗读
今天 23:17

44
0
希望看到您的想法,请您发表评论x