如何隐藏指定条Windows事件日志
我们知道Windows 事件查看器只提供了删除全部日志的功能,并没有提供删除特定日志的功能,那我们如何删除指定的日志?
原理:
删除单条事件日志:
删除单条日志内容的方法:
- FileHeader 中的下一个记录标识符的值减一。(下一个记录标识符偏移量为24)
- 重新计算FileHeader中的校验和(校验和偏移量为124)
- 修改事件记录,找到需要删除的记录,和需要删除记录的前一条,计算日志长度,更新事件记录标识符
- 更新ElfChnk,需要修改的内容是:最后一个事件编号、最后一个事件标识符、最后一个事件记录数据偏移量、事件记录校验和(CRC32)、校验和(头部前120字节和第128字节到512字节)
具体操作:
首先打开事件查看器,确定我们要删除的日志的EventRecordID。
image-20200427214116761这里是EventRecordID是19。使用16进制文件编辑器打卡事件日志文件。
- 首先修改文件头中的下一个记录标识符的值。
这里是0x14将其减一,修改为0x13。这里需要注意,事件日志文件字节序为小端,低位在前。
image-20200427214331082- 重新计算文件头中的校验和。
计算方法:前120字节做CRC32运算。校验和偏移量为124 长度为4
CRC32计算Python实现
import binascii
def CRC32(content):
return "%08x"%(binascii.crc32(binascii.a2b_hex(content))&0xffffffff)
print(CRC32(input()))
取前120字节数据,计算CRC32。获得结果0x92fb7778,修改文件内容如下图:
image-20200427214538558 image-20200427214525465- 修改事件记录
查找16进制值2A2A0000,定位到第19条事件日志。长度为0x4D8,如下图:
image-20200427214654215第18条长度是0x450,如下图:
image-20200427214723416计算新的长度:0x4d8+0x450=0x928,需要修改的位置有两个地方,一个是第7条日志的长度,另一个是第8条日志的尾部。
第18条日志:
image-20200427215119757第19条日志:
image-20200427215042452- 更新EifChnk:
搜索EifChnk关键字,如下图:
image-20200427215308585需要修改的内容:
需要修改的内容 | 值 |
---|---|
最后一个事件编号 | 0x12 |
最后一个事件标识符 | 0x12 |
最后一个事件记录数据偏移量 | 0x4f68 |
事件记录校验和(0x1200到最后一个事件结束 CRC32计算) | 0x7d800e45 |
校验和(头部前120字节和第128字节到512字节 CRC32计算) | 0xaddaa5cb |
- 用事件查看器查看
保存后,用事件管理器打开,发现事件数减少了,对照修改之前的事件列表,发现减少的一个正是我们隐藏掉的那一个。
image-20200427221849166至此,我们能够隐藏掉指定条Windows事件日志了。
网友评论