社区
VC.NET
帖子详情
分享,深入CLR, 动态修改msil代码进行hook等操作
CodeProject-Jerry
2012-09-22 04:23:48
加精
对于未经过jit编译的代码这个很好处理
难点在于修改已经被jit编译过的代码
围绕这个问题我摸索了很久,终于实现了。
具体见
http://www.codeproject.com/Articles/463508/Net-CLR-Injection-Modify-IL-Codes-on-Run-time
等有时间把中文博客补上
...全文
3275
64
打赏
收藏
分享,深入CLR, 动态修改msil代码进行hook等操作
对于未经过jit编译的代码这个很好处理 难点在于修改已经被jit编译过的代码 围绕这个问题我摸索了很久,终于实现了。 具体见http://www.codeproject.com/Articles/463508/Net-CLR-Injection-Modify-IL-Codes-on-Run-time 等有时间把中文博客补上
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
64 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小乖乖_学技术
2014-06-05
打赏
举报
回复
lookmai
2014-05-20
打赏
举报
回复
我的英文不好,中文呢
liuyilin888
2013-10-07
打赏
举报
回复
谢谢谢谢啊谢谢谢谢啊
小乖乖_学技术
2013-10-07
打赏
举报
回复
shamini35
2012-11-17
打赏
举报
回复
CodeProject-Jerry
2012-10-27
打赏
举报
回复
[Quote=引用 53 楼 的回复:]
在早期我们写ORM架构时,使用过这类实现,以及从mono中抄袭来的其它类似代码。但是没有正式使用,就赶紧废弃了。我一直以为那是最正确的决定。
虽然好玩儿,但是我们需要让项目开发有真正的生产率,保证测试驱动开发(而不是靠猜测驱动开发)进程。因此我们不玩儿了。
[/Quote]
Mono.Cecil
方式 可以加载运行中的程序集进行修改后保存到磁盘,不过难题是如果在不销毁AppDomain的前提下替换代码.
调试的本质说Debugger依据程序静态的PDB信息对程序的状态进行跟踪,而动态变化的IL肯定是无法关联到静态的PDB文件,谈何调试?
原文的含义旨在摸索一条在软件保护的一条路子,不能调试很正常。老兄你有点“文人相轻”的味儿
CodeProject-Jerry
2012-10-27
打赏
举报
回复
谢谢各位了,原文已经被Code Project 评为九月月度最佳。 就像莫言说的那样,“我不是为了Nobel奖去写作”,不过还是蛮受鼓舞的。
MoXiaoRab
2012-10-21
打赏
举报
回复
楼主居然是Jerry Wang~ 拜读过多篇大作~甚是佩服
tianhong_128
2012-10-21
打赏
举报
回复
太强了 英文版的 我表示看不懂 因为我不懂英文
ssa
2012-10-09
打赏
举报
回复
好的,学习一下
以专业开发人员为伍
2012-10-03
打赏
举报
回复
在早期我们写ORM架构时,使用过这类实现,以及从mono中抄袭来的其它类似代码。但是没有正式使用,就赶紧废弃了。我一直以为那是最正确的决定。
虽然好玩儿,但是我们需要让项目开发有真正的生产率,保证测试驱动开发(而不是靠猜测驱动开发)进程。因此我们不玩儿了。
以专业开发人员为伍
2012-10-03
打赏
举报
回复
对于正规的开发者,这是个灾难。只要你调试过正规程序就知道,你的程序根本没法调试了,因为调试器完全给搞成神经病了,没有办法正常显示调试内容了。
my409972
2012-10-03
打赏
举报
回复
真Iliad。。。。
bluedoctor
2012-10-02
打赏
举报
回复
不错,标记下。
c19870618
2012-10-02
打赏
举报
回复
英语太强了。谢谢分享。
LAONINGA098
2012-10-01
打赏
举报
回复
谢谢分享!
gbb21
2012-09-30
打赏
举报
回复
我总感觉lz在重复造轮子唉~
孫大聖
2012-09-27
打赏
举报
回复
我表示看不懂
lovelove5202008
2012-09-27
打赏
举报
回复
英文是什么
zhuchangfeng111
2012-09-27
打赏
举报
回复
好东西
加载更多回复(29)
MSIL
的两种编译模式
开发人员编写的受控
代码
在被编译成
MSIL
之后,在运行时会被再编译为原生
代码
。有两种方式可以完成这个目标,一种是在运行期逐一编译Methods的
MSIL
代码
,另一种是在装配件被运行前整批的全部编译为原生
代码
。将
MSIL
编译为原生
代码
的一个最常见的办法,就是先让
CLR
装在装配件,然后在每个Method第一次被调用时编译之。由于每个Method都只在第一次被调用时才被编译,所以我
动态
修改
IL的一些调查
.net Profiling相关 .NET Internals: The Profiling API Rewrite
MSIL
Code on the Fly with the .NET Framework Profiling API .NET Internals and Code Injection Really Easy Logging using IL Rewri...
Frida
CLR
绑定:.NET
动态
插桩与运行时可观测性实战
.NET
动态
插桩是一种在程序运行时无侵入式地监控、
修改
和重写托管
代码
行为的技术,其核心依赖
CLR
Profiling API提供的底层事件回调机制,实现对JIT编译、对象分配、异常抛出等关键环节的实时干预。相比传统反编译或调试工具,它无需PDB符号、不依赖源码、绕过NGEN/AOT限制,直接作用于执行流本身,显著提升.NET环境下的可观测性与可控性。该技术广泛应用于安全研究(如密钥提取、JWT绕过)、性能诊断(对象泄漏追踪)及红队行动(逻辑劫持),是现代.NET
动态
分析基础设施的关键能力。本文聚焦Frida
VC.NET
7,539
社区成员
27,670
社区内容
发帖
与我相关
我的任务
VC.NET
.NET技术 VC.NET
复制链接
扫一扫
分享
社区描述
.NET技术 VC.NET
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章