Injection的基本理论

Injection的基本理论

代码的大致运行流程

这里就假设你是一个会写C#的,我们通过csc或者donet指令将写好的C#代码编译成我们需要的exedll,然后目标机器启动加载编译的代码dll之类的。

但是如果dll没有加密,并且我们也需要在其中注入自己想要的执行代码的时候(比如我想把原本打印的信息修改了~别理会为什么!),那么我们从理论上应该怎么做呢?

如下图所见(如果项目需要跑脚本的话) png

基于上图,我们试想一下,如果在生成dll后,对dll进行解释,然后再dll里加入我们想要的代码后,再交给目标机器去执行,这样就能达成我们想要的效果了!

如下图所示

png

按照这样的思路,如果我们注入的是hotfix,那会如何?

Mono.ceil

Mono.Cecil库对进行C#层编译出来的dll程序集进行了解释,还能写入,而且还支持IL

详细的mono.ceil的使用,请移步Injection的基本使用