诸位大侠请帮帮小弟
现在正在做毕业设计,是关于透明加密方面的。想做得简单一点,直接HOOK SSDT ZwReadFile和ZwWritefile。 hook两个函数都成功了,也成功截获了要读写的数据,加密解密也没有问题。看似都没问题了,但是有一个致命的Bug,一复制指定后缀的文件就马上蓝屏,想了很多办法,还是没解决只好求救了,请大侠能帮帮我这个初学者。。。临表涕零,不胜感激。。。
NTSTATUS MyZwWriteFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
IN PVOID ApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock,
IN PVOID Buffer,
IN ULONG Length,
IN PLARGE_INTEGER ByteOffset OPTIONAL,
IN PULONG Key OPTIONAL
)
{
// PVOID Buffer2;
CHAR GetFullName[500];
ULONG i;
NTSTATUS status;
unsigned char *p,*buf;
ZWWRITEFILE OldZwWriteFile = (ZWWRITEFILE)OldServiceAddressTable[SERVICE_ID(ZwWriteFile)];
RtlZeroMemory(GetFullName, 500);
status = GetFullNameFromFileHandle(FileHandle,GetFullName);
if (status == STATUS_SUCCESS)
{
buf=ExAllocatePool(NonPagedPool,Length);
memcpy(buf,Buffer,Length);
DbgPrint("strlen(Buffer) : %d",strlen(Buffer));
DbgPrint("Length : %d",Length);
for (i = 0; i < Length; i++)
{
// DbgPrint("%d",buf[i]);
buf[i]^=37; //测试用的加密变换。。见笑了
}
memcpy(Buffer,buf,Length); //此处在做文件保存时没有问题,但是复制文件时就会蓝屏这是什么原因呢?
}
return OldZwWriteFile( //将数据交给原函数写入文件
FileHandle,
Event ,
ApcRoutine ,
ApcContext ,
IoStatusBlock,
Buffer,
Length,
ByteOffset ,
Key
);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课