C#来做virus的设想
偶不懂PE格式,不懂strongname应该如何处理,所以,下面是一个非常笨的方法,
假设有一个exe,我现在要感染它,因为上面的原因决定,我只能选择一个迂回的路线。
把exe用ildasm搞成.il代码,然后把我的il代码加进去,然后ilasm重新编译该il,呵呵。这样做,需要被感染的机器安装有ildasm(如果不装sdk,没这玩意儿)。
简单的例子:我想输入hello,fqq!那么写一个最小的代码,如下:
using System;

namespace DebugDemo{
public class Demo{
public static void Main(){
Console.WriteLine("hello,fqq!");
}
}
}
然后用csc,ildasm,得到.il代码,main里面唯一的一行,会输出为:
IL_0000: ldstr "hello,fqq!"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
然后,用ildasm 要感染的文件.exe /output=tmp.il
然后找到il中的.entrypoint,把上面两行插进去,并修改后面的il行号(是否需要修改?我没有试验过,不过我是都修改了),然后,用ilasm重新编译一次,把原来的文件覆盖即可。
虽然着很滥,不过确实很直接的做法,呵呵。
这是被感染文件,修改前的il代码:
.entrypoint
// Code size 25 (0x19)
.maxstack 3
.locals init (int32 V_0,
int32 V_1,
int32 V_2,
int32 V_3)
IL_0000: ldc.i4.s 10
IL_0002: stloc.0
IL_0003: ldc.i4.s 20
IL_0005: stloc.1
IL_0006: ldc.i4.s 30
IL_0008: stloc.2
IL_0009: ldloc.0
IL_000a: ldloc.1
IL_000b: ldloc.2
IL_000c: call int32 DebugDemo.Demo::Sum(int32,
int32,
int32)
IL_0011: stloc.3
IL_0012: ldloc.3
IL_0013: call void [mscorlib]System.Console::WriteLine(int32)
IL_0018: ret
下面是被感染文件修改后的代码:
.entrypoint
// Code size 25 (0x19)
.maxstack 3
.locals init (int32 V_0,
int32 V_1,
int32 V_2,
int32 V_3)
IL_0000: ldstr "hello,fqq!"
IL_0005: call void [mscorlib]System.Console::WriteLine(string)
IL_000a: ldc.i4.s 10
IL_000c: stloc.0
IL_000d: ldc.i4.s 20
IL_000f: stloc.1
IL_0010: ldc.i4.s 30
IL_0012: stloc.2
IL_0013: ldloc.0
IL_0014: ldloc.1
IL_0015: ldloc.2
IL_0016: call int32 DebugDemo.Demo::Sum(int32,
int32,
int32)
IL_001b: stloc.3
IL_001c: ldloc.3
IL_001d: call void [mscorlib]System.Console::WriteLine(int32)
IL_0022: ret
注意IL_0000和IL_0005两行,被我插入了。
注意!!!这不是什么病毒教程,如果病毒要这么写,作者早就被人扁死了。

假设有一个exe,我现在要感染它,因为上面的原因决定,我只能选择一个迂回的路线。
把exe用ildasm搞成.il代码,然后把我的il代码加进去,然后ilasm重新编译该il,呵呵。这样做,需要被感染的机器安装有ildasm(如果不装sdk,没这玩意儿)。
简单的例子:我想输入hello,fqq!那么写一个最小的代码,如下:









然后用csc,ildasm,得到.il代码,main里面唯一的一行,会输出为:


然后,用ildasm 要感染的文件.exe /output=tmp.il
然后找到il中的.entrypoint,把上面两行插进去,并修改后面的il行号(是否需要修改?我没有试验过,不过我是都修改了),然后,用ilasm重新编译一次,把原来的文件覆盖即可。
虽然着很滥,不过确实很直接的做法,呵呵。
这是被感染文件,修改前的il代码:























下面是被感染文件修改后的代码:

























注意IL_0000和IL_0005两行,被我插入了。
注意!!!这不是什么病毒教程,如果病毒要这么写,作者早就被人扁死了。


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?