摘要: [如何开启WinDbg本机调试问题] (https://www.cnblogs.com/huangxincheng/articles/17864581.html) [调试托管代码无行号问题] (https://www.cnblogs.com/huangxincheng/articles/178645 阅读全文
posted @ 2023-11-29 16:00 一线码农 阅读(3140) 评论(0) 推荐(5)
摘要: 一:背景 1. 讲故事 调试训练营里的一位学员前些天找到我,说他们跑在k8s中的程序崩掉了不知道怎么回事?日志也没有记录到,让我帮他看看,dump也抓到了,既然抓到了那就看看吧。 二:程序为什么会崩溃 1. 崩溃原因 linux 上的崩溃分析没有windows上那么方便,但还是可以分析的,先通过 ! 阅读全文
posted @ 2025-06-16 13:32 一线码农 阅读(27) 评论(0) 推荐(0)
摘要: 一:背景 1. 讲故事 前两篇我们介绍了 Minhook 在 Windows 平台上的强大功效,这一篇我们来聊一聊如何在 Linux 上对函数进行hook,这里介绍两种方式。 轻量级的 LD_PRELOAD 拦截 LD_PRELOAD是一种共享库拦截,这种方式的优点在于不需要对源程序做任何修改,达到 阅读全文
posted @ 2025-06-12 11:09 一线码农 阅读(361) 评论(3) 推荐(2)
摘要: 一:背景 1. 讲故事 上一篇我们说到了 minhook 的一个简单使用,这一篇给大家分享一个 minhook 在 dump 分析中的实战,先看下面的线程栈。 0:044> ~~[138c]s win32u!NtUserMessageCall+0x14: 00007ffc`5c891184 c3 r 阅读全文
posted @ 2025-06-10 11:10 一线码农 阅读(356) 评论(2) 推荐(3)
摘要: 一:背景 1. 讲故事 在前面的系列中,我们聊过.NET外挂 harmony,他可以对.NET SDK方法进行拦截,这在.NET高级调试领域中非常重要,但这里也有一些遗憾,就是不能对SDK领域之外的函数进行拦截,比如 Win32 函数。。。 这篇我们就来解决这个问题,对,它就是 MinHook,当然 阅读全文
posted @ 2025-06-09 11:37 一线码农 阅读(446) 评论(0) 推荐(8)
摘要: 一:背景 1. 讲故事 在windows平台上,相信很多人都知道.NET异步机制是借助了Windows自带的 IO完成端口 实现的异步交互,那在 Linux 下.NET 又是怎么玩的呢?主要还是传统的 select,poll,epoll 的IO多路复用,在 coreclr源代码中我们都能找到它们的影 阅读全文
posted @ 2025-06-05 11:21 一线码农 阅读(293) 评论(0) 推荐(6)
摘要: 一:背景 1. 讲故事 昨晚训练营里有一位朋友提到一个问题,说 C# AOT程序能否编译为一个dll,供其他语言调用,其实这个是完全没有问题的,也确实我的的文章体系中没有涉及到这块,那今天就补充完整吧。 二:NativeAOT 函数导出 1. 简单的案例 在 C 中我相信很多人都知道用 dllexp 阅读全文
posted @ 2025-05-28 11:05 一线码农 阅读(1258) 评论(3) 推荐(16)
摘要: 一:背景 1. 讲故事 当 .NET程序 在Linux上崩溃时,我们可以配置一些参考拿到对应程序的core文件,拿到core文件后用windbg打开,往往会看到这样的一句信息 Signal SIGABRT code SI_USER (Sent by kill, sigsend, raise),参考如 阅读全文
posted @ 2025-05-27 11:38 一线码农 阅读(328) 评论(0) 推荐(2)
摘要: 一:背景 1. 讲故事 前面文章所介绍的一些注入技术都是以方法为原子单位,但在一些罕见的场合中,这种方法粒度又太大了,能不能以语句为单位,那这个就是我们这篇介绍的 Transpiler,它可以修改方法的 IL 代码,甚至重构,所以这就非常考验你的 IL 功底,个人建议在写的时候要多借助如下三个工具: 阅读全文
posted @ 2025-05-24 14:01 一线码农 阅读(241) 评论(0) 推荐(4)
摘要: 一:背景 1. 讲故事 如果你读完前六篇,我相信你对 harmony 的简单使用应该是没什么问题了,现在你处于手拿锤子看谁都是钉子的情况,那这篇我就找高级调试里非常经典的 3个钉子 让大家捶一锤。 二:三大故障案例 1. ConcurrentBag 大集合问题 在高级调试中经常会遇到一类问题就是托管 阅读全文
posted @ 2025-05-23 16:32 一线码农 阅读(243) 评论(0) 推荐(1)
摘要: 一:背景 1. 讲故事 本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧。 二:反射工具包 1. AccessTools AccessTools这个工具包用来简化反射操作,你如果看过 harmon 阅读全文
posted @ 2025-05-23 09:26 一线码农 阅读(416) 评论(1) 推荐(2)
摘要: 一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __result 获取/修改返回值,要想修改用 ref。 __resultRef 修改返回引用(方法返回是 ref 返回 )。 __s 阅读全文
posted @ 2025-05-21 22:19 一线码农 阅读(353) 评论(0) 推荐(2)
摘要: 一:背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点,这篇我们聚焦注入点可接收的几类参数的解读,非常有意思,在.NET高级调试 视角下也是非常重要的,到底是哪些参数,用一张表格整理如下: 参数名 说明 __instance 访问非静态方法的实例(类似 this)。 __resul 阅读全文
posted @ 2025-05-21 10:01 一线码农 阅读(323) 评论(2) 推荐(3)
摘要: 一:背景 1. 讲故事 上一篇我们讲到了 注解特性,harmony 在内部提供了 20个 HarmonyPatch 重载方法尽可能的让大家满足业务开发,那时候我也说了,特性虽然简单粗暴,但只能解决 95% 的问题,言外之意还有一些事情做不到,所以剩下的 5% 只能靠 完全手工 的方式了。 二:注解特 阅读全文
posted @ 2025-05-20 11:41 一线码农 阅读(392) 评论(0) 推荐(3)
摘要: 一:背景 1. 讲故事 上一篇我们简单的聊了下harmony外挂的基本玩法,让大家宏观上感受到了外挂在 .NET高级调试 领域的威力,这一篇我们从 注解特性 这个角度继续展开。 二:harmony 注解特性 1. HarmonyPatch 解读 在harmony支持的众多特性中,HarmonyPat 阅读全文
posted @ 2025-05-19 10:19 一线码农 阅读(829) 评论(0) 推荐(5)
摘要: 一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了一些篇幅来说这个,今天我准备用10篇左右来详细聊一聊,供学员和同行们欣赏,详细的文档参考:https 阅读全文
posted @ 2025-05-18 15:42 一线码农 阅读(1486) 评论(6) 推荐(8)