随笔分类 -  harmony

摘要:一:背景 1. 讲故事 这篇文章起源于和一家 .NET公司 开线上会议时,提出的一个场景问题,程序出现了非托管内存暴涨,这些非托管内存关联的对象都囤积在 终结器队列 中,很显然这是代码中没用 using 及时释放引发的,而这块代码又是第三方组件,你想加也加不了,所以提出了一个设想:能不能设法干预 终 阅读全文
posted @ 2025-07-02 17:11 一线码农 阅读(766) 评论(4) 推荐(7)
摘要:一:背景 1. 讲故事 上一篇我们说到了 minhook 的一个简单使用,这一篇给大家分享一个 minhook 在 dump 分析中的实战,先看下面的线程栈。 0:044> ~~[138c]s win32u!NtUserMessageCall+0x14: 00007ffc`5c891184 c3 r 阅读全文
posted @ 2025-06-10 11:10 一线码农 阅读(555) 评论(2) 推荐(3)
摘要:一:背景 1. 讲故事 在前面的系列中,我们聊过.NET外挂 harmony,他可以对.NET SDK方法进行拦截,这在.NET高级调试领域中非常重要,但这里也有一些遗憾,就是不能对SDK领域之外的函数进行拦截,比如 Win32 函数。。。 这篇我们就来解决这个问题,对,它就是 MinHook,当然 阅读全文
posted @ 2025-06-09 11:37 一线码农 阅读(701) 评论(0) 推荐(9)
摘要:一:背景 1. 讲故事 前面文章所介绍的一些注入技术都是以方法为原子单位,但在一些罕见的场合中,这种方法粒度又太大了,能不能以语句为单位,那这个就是我们这篇介绍的 Transpiler,它可以修改方法的 IL 代码,甚至重构,所以这就非常考验你的 IL 功底,个人建议在写的时候要多借助如下三个工具: 阅读全文
posted @ 2025-05-24 14:01 一线码农 阅读(405) 评论(0) 推荐(5)
摘要:一:背景 1. 讲故事 如果你读完前六篇,我相信你对 harmony 的简单使用应该是没什么问题了,现在你处于手拿锤子看谁都是钉子的情况,那这篇我就找高级调试里非常经典的 3个钉子 让大家捶一锤。 二:三大故障案例 1. ConcurrentBag 大集合问题 在高级调试中经常会遇到一类问题就是托管 阅读全文
posted @ 2025-05-23 16:32 一线码农 阅读(366) 评论(0) 推荐(1)
摘要:一:背景 1. 讲故事 本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧。 二:反射工具包 1. AccessTools AccessTools这个工具包用来简化反射操作,你如果看过 harmon 阅读全文
posted @ 2025-05-23 09:26 一线码农 阅读(613) 评论(1) 推荐(2)
摘要:一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __result 获取/修改返回值,要想修改用 ref。 __resultRef 修改返回引用(方法返回是 ref 返回 )。 __s 阅读全文
posted @ 2025-05-21 22:19 一线码农 阅读(495) 评论(0) 推荐(2)
摘要:一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整理如下: 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __resul 阅读全文
posted @ 2025-05-21 10:01 一线码农 阅读(528) 评论(2) 推荐(3)
摘要:一:背景 1. 讲故事 上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些事情做不到,所以剩下的 5% 只能靠 完全手工 的方式了。 二:注解特 阅读全文
posted @ 2025-05-20 11:41 一线码农 阅读(521) 评论(0) 推荐(3)
摘要:一:背景 1. 讲故事 上一篇我们简单的聊了下harmony外挂的基本玩法,让大家宏观上感受到了外挂在 .NET高级调试 领域的威力,这一篇我们从 注解特性 这个角度继续展开。 二:harmony 注解特性 1. HarmonyPatch 解读 在harmony支持的众多特性中,HarmonyPat 阅读全文
posted @ 2025-05-19 10:19 一线码农 阅读(1007) 评论(0) 推荐(5)
摘要:一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了一些篇幅来说这个,今天我准备用10篇左右来详细聊一聊,供学员和同行们欣赏,详细的文档参考:https 阅读全文
posted @ 2025-05-18 15:42 一线码农 阅读(1740) 评论(6) 推荐(8)