当前位置: 首页 > news >正文

C#如何在运行时动态替换程序集中的函数

前言

早些年的时候,当时使用了一个商业库。功能很强大,论坛有关于破解的帖子,当时大概看了一下,需要修改.NET Framework自带程序集的一些代码,绕过验证。

后面我没有去尝试了,就到网上找了一个现成的库玩了一下。

当时我反编译了那个程序集,发现里面使用了一种Hook 函数的机制,

在前面的文章中,我介绍过如何使用minHook来Hook win32函数(https://www.cnblogs.com/zhaotianff/p/18073138),但是Hook CLR函数的倒是没尝试过。

这里刚好详细讲解一下,如何在C#中Hook CLR函数。

 

使用替换方法表中指针的方式实现替换

这里我们先大概了解一下思路

在 .NET 中,每个引用类型对象都包含一个指向 类型句柄(TypeHandle) 的指针。类型句柄指向一个 方法表(MethodTable),其中包含该类型的所有方法信息。对于虚方法,方法表中会有一个槽位(slot)存储方法的入口地址(经过 JIT 编译后的本机代码地址)。

Hook 虚方法的思路:

  1. 获取目标对象的方法表地址。

  2. 在方法表中定位到目标虚方法的槽位索引。

  3. 获取槽位当前地址。

  4. 将槽位内容替换为自定义方法的地址。

  5. 后续对该虚方法的调用将跳转到自定义代码。

限制:

  • 只能 Hook 虚方法 或 接口方法(接口方法在实现类的方法表中也有槽位)。

  • 不能 Hook 静态方法、实例非虚方法(它们不通过虚表调用)。

  • 替换必须发生在目标方法被 JIT 编译之后。

  • 自定义方法必须与被 Hook 方法具有完全相同的签名,否则调用时栈会损坏。

 

这里我们创建一个程序集LibTest,增加一个函数Add

 

使用DispatchProxy Hook 接口方法

 

 

使用动态派生类并重写虚方法

 

使用Harmony包

 

http://www.jsqmd.com/news/565105/

相关文章:

  • 5分钟掌握BG3ModManager:博德之门3模组管理的终极解决方案
  • MagiskHide Props Config模块全解析:从核心价值到进阶配置
  • LabVIEW ZYNQ FPGA实战指南:ARM Linux RT与FPGA协同开发全流程解析
  • RabbitMQ消息丢了怎么办?用aio-pika写个可靠的Python消费者(含自动重连与死信队列配置)
  • Android tinyalsa深度解析之pcm_params_get_periods_min调用流程与实战(一百七十三)
  • MetaTube插件:媒体元数据管理的技术革新与实践指南
  • 2026年3C智造升级:柔性夹爪如何解决电子元件划伤难题? - 品牌2026
  • 福州整木定制品牌哪家好?2025-2026年推荐评测口碑对比知名 - 十大品牌推荐
  • 3.31学习进度
  • 避坑指南:Simulink项目Git化过程中遇到的5个典型问题及解决方案
  • Java EE开发技术 (报错解决 CannotLoadBeanClassException)
  • MAX14626ETT+T‌ 是一款由ADI推出的高可靠性4-20mA电流环保护器,专为工业环境下的传感器接口设计,具备出色的过压、反接和过流防护能力,是保障自动化系统稳定运行的关键器件
  • 5大领域数据资产:研究者必备资源库
  • 专业数据恢复工具对决:UFS Explorer与R-Studio的实战选型指南
  • 成都九里香老酒名酒回收:以诚信为本,深耕老酒回收十余载,专业可靠 - 资讯焦点
  • 移动计算的灵魂——Cortex-A系列演进与A53的验证宿命
  • 深圳本地高端腕表维修全指南:2026 六城数据・30 + 品牌故障解析与专业维保方案 - 时光修表匠
  • 别再死记硬背了!用CODESYS V3.5 SP18手把手实现两台PLC的Socket互发数据
  • Atlas 200 DK 模型转换实战:从OMG工具到Mind Studio的完整指南
  • 深圳全屋定制品牌哪家好?2026年3月推荐评测口碑对比顶尖五家 - 十大品牌推荐
  • 硬件标识伪装与设备隐私保护实战指南:从原理到安全配置
  • 2026年葡萄糖厂家标杆选购指南 - 深度智识库
  • 现货库存MAX5719AGSD+‌ 是由ADI推出的一款高精度、20位分辨率的电压输出型数模转换器(DAC),专为需要超精细模拟信号控制的工业与测试测量应用设计。
  • 2026年液压缸厂家推荐:福建智川机械设备供应伸缩/步进/直线往复/增速/组合等多类型液压缸 - 品牌推荐官
  • 国产比热容测试仪哪个品牌好?深扒湘潭湘仪仪器的技术实力 - 品牌推荐大师
  • AI辅助开发:让快马模型智能理解你的网址,自动生成完美打印文档代码
  • SAR动目标检测实战:多通道技术如何提升慢速目标识别(附DPCA/ATI/STAP对比)
  • 对“可串行化(Serializability)”的理解
  • 2025-2026年福州整木定制品牌评测:五家口碑产品推荐对比领先 - 十大品牌推荐
  • Android tinyalsa深度解析之pcm_plugin_open调用流程与实战(一百七十四)