Injection的基本理论
代码的大致运行流程
这里就假设你是一个会写C#的,我们通过csc
或者donet
指令将写好的C#代码编译成我们需要的exe
或dll
,然后目标机器启动加载编译的代码dll
之类的。
但是如果dll没有加密,并且我们也需要在其中注入自己想要的执行代码的时候(比如我想把原本打印的信息修改了~别理会为什么!),那么我们从理论上应该怎么做呢?
如下图所见(如果项目需要跑脚本的话)
基于上图,我们试想一下,如果在生成dll
后,对dll
进行解释,然后再dll
里加入我们想要的代码后,再交给目标机器去执行,这样就能达成我们想要的效果了!
如下图所示
按照这样的思路,如果我们注入的是hotfix
,那会如何?
Mono.ceil
Mono.Cecil
库对进行C#层编译出来的dll
程序集进行了解释,还能写入,而且还支持IL
!
详细的mono.ceil
的使用,请移步Injection的基本使用
PREVIOUSconfluence上写markdown
NEXTInjection的基本使用