分享,深入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 打赏 收藏 转发到动态 举报
写回复
用AI写文章
64 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
lookmai 2014-05-20
  • 打赏
  • 举报
回复
我的英文不好,中文呢
liuyilin888 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
  • 打赏
  • 举报
回复
好的,学习一下
  • 打赏
  • 举报
回复
在早期我们写ORM架构时,使用过这类实现,以及从mono中抄袭来的其它类似代码。但是没有正式使用,就赶紧废弃了。我一直以为那是最正确的决定。

虽然好玩儿,但是我们需要让项目开发有真正的生产率,保证测试驱动开发(而不是靠猜测驱动开发)进程。因此我们不玩儿了。
  • 打赏
  • 举报
回复
对于正规的开发者,这是个灾难。只要你调试过正规程序就知道,你的程序根本没法调试了,因为调试器完全给搞成神经病了,没有办法正常显示调试内容了。
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)

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧