记录使用 Lib.Harmony 时注入过程中遇到的一个坑

这篇具有很好参考价值的文章主要介绍了记录使用 Lib.Harmony 时注入过程中遇到的一个坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 从这里开始

在一个无聊的下午,我偶然看到某个 Terraria 群里在谈论着一个叫 TerrariaHelper(自动钓鱼) 的软件,顿时有了兴致。我之前粗略研究过 FruitY(某个直接修改 Terraria 程序集代码而做出来的魔改端(作弊端),功能丰富) 的实现代码,但是今天看到的是一个独立的 Helper 程序,没有修改 Terraria 的源文件,也包含了自瞄,自动回血等等功能,不禁让人好奇这些功能是如何实现的。

我一开始猜想这可能类似于 CE(Cheat Engine) 那样,从内存的层面上去修改一些东西(感觉很复杂,没有研究过)。直到我偷偷地把它拖进了 dnSpy(一个反编译软件),短暂地分析代码后,得出的结果让我大吃一惊——居然使用了 Lib.Harmony(我接触过 Lib.Harmony 但是我只知道它是用来制作 Unity 游戏的 Mod 的),然后我才意识到 Lib.Harmony 功能强大,不仅仅是做 Unity 游戏 Mod 的工具。

2. 阅读 Lib.Harmony 的文档

因为 Lib.Harmony 没有多少中文资料(宵夜97制作过一系列教程),我们还是从看它的官网文档开始!

Harmony 2

Introduction

Harmony gives you an elegant(优雅的) and high level way to alter functionality(实用地更改) in applications written in C#. It does this at runtime by monkey patching methods unlike other solutions that change the content of dll files.

It supports Mono and .NET environments on Windows, Unix and macOS except when Unity uses the stripped down NetStandard profile (.NET 4.x profile works fine). Harmony is used in mainstream Unity games and many other applications.(不仅仅用于 Unity 游戏,还有其他的应用程序)

Designed to be used by multiple users (usually called Mods) that would otherwise override each others hooks, it was originally created for the game RimWorld and its large modding community by Andreas Pardeike.

Enjoy!
/Andreas Pardeike

Introduction

Harmony - a library for patching, replacing and decorating .NET methods during runtime.

上面的介绍提到了 Lib.Harmony 是一个跨平台的适用于 Mono 和 .NET 运行时环境的在程序运行时对方法进行 修补(patch),替换(replace) 和 装饰(decorate) 的类库。同时,尽管 Lib.Harmony 最初是为 RimWorld 而创造 且现在大多用于 Unity 游戏的 Mod 创作,但是它仍然适用于其他的符合要求的 .NET 应用程序。

Bootstrapping and Injection

Harmony does not provide you with a way to run your own code within an application that is not designed to execute foreign code. You need a way to inject at least the few lines that start the Harmony patching and this is usually done with a loader. Here are some common examples of l文章来源地址https://www.toymoban.com/news/detail-418730.html

到了这里,关于记录使用 Lib.Harmony 时注入过程中遇到的一个坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录Chrome插件从V2版本升级到V3版本的过程中遇到的问题

    总结一下自己在把Chrome V2版本的插件升级到V3版本的过程中,遇到的一些问题,之前也有发布一章V3版本的manifest.json配置项参数说明,基本也涵盖了下面提到的几个配置项的改动,传送门 总结分了两大块,一块是manifest配置文件V2和V3有哪几个配置项不同,一块是升级过程遇到

    2023年04月08日
    浏览(81)
  • 夜深敲代码——记录一个优化过程

            最近一段时间OpenAI的热度一直不减,ChatGpt带来的极大便利性大家也是深有体会。荔枝也跟风搞了一个来玩玩,感觉还是很不错的哈哈哈哈。这不,最近开始刷题用ChatGpt帮忙找bug就很舒服,它甚至可以为我们提供优化的思路,帮助我们找到自己思维上的漏洞,对于

    2023年04月17日
    浏览(18)
  • 记录一个在写项目中遇到的Maven依赖无法导入的问题

    项目是一个父项目做依赖管理,三个子项目,今天遇到一个问题: 子项目中导入的依赖,怎么都导入不进去,maven仓库中已经有了,idea提示也没有问题,如图: 可以看到,idea提示是正常的,依赖都是继承自父项目,但是左边的依赖中没有我导入的这些依赖,有的是父项目中

    2024年02月10日
    浏览(49)
  • ANSYS导出模态、刚度矩阵,并将刚度矩阵hb格式转化为矩阵格式。(只为简单记录自己科研过程中遇到的问题)

    目录   第一:ANSYS进行模态分析,并将其导出的命令流。模态分析可以不输入荷载。 第二,提取刚度矩阵。 第三,利用MATLAB将HB格式刚度矩阵转化为正常形式。

    2024年04月16日
    浏览(35)
  • 又开发好一个系统,详细记录软著申请过程

    大家好,我是小悟 又开发好一个系统,详细记录软著申请过程 经过几个通宵达旦的撸代码之后,又开发好了一个系统,和以往一样,系统开发好了少不了申请软件著作权证书,兄弟们,软著申请搞起来啊。 在版权保护中心后台提交资料,没有账号的需要先注册一个账号。很

    2024年02月04日
    浏览(25)
  • elasticsearch在linux环境安装使用过程遇到的问题

    es在linux环境安装遇到问题 1、启动失败日志 原因分析: 看提示可知:缺少默认配置,至少需要配置discovery.seed_hosts/discovery.seed_providers/cluster.initial_master_nodes中的一个参数. discovery.seed_hosts:  集群主机列表 discovery.seed_providers: 基于配置文件配置集群主机列表 cluster.initial_master_

    2024年02月08日
    浏览(37)
  • Unity+pico4开发过程及问题记录,创建一个自己的pico安卓应用

    参考PICO developer 官方文档,本人unity版本为 2022.116f1c1 , PICO Unity Integration SDK- 214 . sdk最新版官网下载:PICO Unity Integration SDK 博主使用的版本在这里提供一个链接: 以下过程均基于以上版本,按照如下流程操作比较合适。 ①Unity编辑器需要支持安卓平台,在 添加模块 窗口处,勾

    2024年02月03日
    浏览(37)
  • 记录一个爬虫过程,从基础爬虫到逆向,再到jsrpc,再到selenium,啥都包括了

    这篇文章记录一下我跟一个网站的恩怨纠葛,为了爬这个网站,不断学习新知识,不断尝试,水平提高了不少。总算有点成就了,这里做一个记录,当然还是不完美,期待未来可能技术更精进,能有更好的方法吧。 这个网站是:aHR0cDovL3NkLmNoaW5hdm9sdW50ZWVyLm1jYS5nb3YuY24vc3Vic2l0ZS9

    2024年02月07日
    浏览(32)
  • arcmap如何使用PyScripter进行编辑 以及使用过程中遇到的无法解码问题

    一、环境配置 1.安装PyScripter 安装文件连接: 链接:https://pan.baidu.com/s/1HauyVCs6UoXLFam0nkRtxA 提取码:a6c3 2.arcmap内配置环境 菜单栏,地理处理 ----  地理处理选项 ---- 将脚本工具编辑器和调试程序均设置为 安装PyScripter路径下的启动程序   3.检测 找到自己所建的Python脚本 ---- 右击

    2024年02月08日
    浏览(26)
  • 【网络安全-sql注入(5)】sqlmap以及几款自动化sql注入工具的详细使用过程(提供工具)

    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记 (也可以拿自己的环镜来玩,我是用pikachu靶场来演示的) 【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Ai

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包