一个搞笑的病毒
Conmajia
January 24, 2019
几周前
我下载了一堆古今中外的 data recovery apps
一个幽灵留下的遗产
恢复数据的努力失败后

想到之前恢复数据时下载的那些乱七八糟的软件
您的电脑很安全 「 。 」
我安全您 呢
什么情况
这类让人没法察觉的小病毒破坏文件多半是有共同点的

好在这病毒很良心没有改我文件名.ico

.ico
文件典型的文件头被篡改.ico
文件格式规范
typedef struct {
WORD idReserved; // Reserved (must be 0)
WORD idType; // Resource Type (1 for icons)
WORD idCount; // How many images?
ICONDIRENTRY idEntries[1]; // An entry for each image (idCount of 'em)
}
ICONDIR, * LPICONDIR;
按照文件头来看00 00 01 00 01 00
开头的FF FF FE FF FE FF
开头.ico
后面的 ICONDIRENTRY
内容和图标实际内容有关

.ico
文件开您
的玩笑?
看到那一大堆 00 00 00 00
老子差点当场笑出声来

淦
那就试验呗.ico
的前 100 字节取反

.ico
文件真他妈浪费感情

把硬盘往 Drag Here 上一拖

源码
懒得废话
private void deal(string fullpath) {
FileStream src = new FileStream(
fullpath,
FileMode.Open,
FileAccess.ReadWrite
);
BinaryReader reader = new BinaryReader(src);
BinaryWriter writer = new BinaryWriter(src);
if ((int)src.Length < 100)
return;
for (int i = 0; i < 100; i++) {
reader.BaseStream.Position = i;
writer.BaseStream.Position = i;
writer.Write((byte)(0xFF - reader.ReadByte()));
}
reader.Close();
writer.Close();
src.Close();
}
我想说
The End.
if(jQuery('#no-reward').text() == 'true') jQuery('.bottom-reward').addClass('hidden');
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?