[红警2MOD开源引擎扩展项目] DynamicPatcher 1.0
掉叶粽
2021年07月01日 03:00
收录于文集
共3篇

DynamicPatcher是什么?

DynamicPatcher(以下简称DP) 是一个拥有动态编译和注入功能的程序。可以基于其原理编写YR扩展平台。

 

特性

  • Hook类型

    • Ares样式Hook

    • 直接跳转到Hook函数

    • 直接跳转到指定地址

    • 写入字节码到指定地址

  • 可以随时移除Hook

  • 当hook出现异常时将Hook移除,并执行原有的代码

  • 动态编译和注入代码

  • Hook冲突检测机制

 

基于DP的扩展平台

现暂将其划分为两部分——动态与静态

动态意味着可以在运行时编辑代码,并重新编译注入。

  • 动态

    •   所有的Hook

    •  …

  • 静态 (在解决方案(.sln)中包含的项目)

    • API

    • 数据结构定义

提供的例子

在项目提供的例子中,实现了以下功能:

  • 多扩展平台管理

  • 装饰者

  • 脚本(可在运行时更新,但不安全)

  • 支持存档读档

  • 实时INI编辑(实验性功能,需自行启用)

 

例子展示

动态修改动态部分代码1

装饰者模型使用例子

单位脚本使用例子

动态修改动态部分代码2

实验性功能实时INI

从异常中恢复的Hook处理

 

我不是程序猿,我如何使用?

如果有那么一点可能,你可能会想尝试DP(例如实时INI,之后我会发视频介绍如何启用),尽管你不是程序猿,那么:

1.      下载最新的DP

2.      解压到游戏目录

3.      为验证DP是否工作,将DynamicPatcher\compiler.config.json里面的hide_console设置为false(之后可以改回去)。除此之外可以尝试发布页面中提到的修改尝试。

4.      用运行Ares的方式运行游戏

如果DP工作不正常,检查:

1.      是否有VC++ 2015-2019 x86 和 .NET Framework 4.8 运行库

2.      是否以管理员身份启动

 

更多信息

请到Github页面了解

链接:https://github.com/Xkein/YRDynamicPatcher

觉得DP不错?(要饭)

赞助方式:前往Github页面拉到最下面,选择支付宝或微信赞助。