【文件7】所谓hardlink 所谓XCB大法

本文探讨了NTFS文件系统中的HARDLINK概念,以及XCB大法如何通过修改CleanUpCount来影响句柄计数,从而实现对文件的特殊操作。内容包括逆向360FkAdv程序,解析内核调试信息,说明如何在不完全关闭句柄的情况下解锁文件,强调在硬链接中句柄计数和文件系统结构的重要性。
摘要由CSDN通过智能技术生成

所谓hardlink 所谓XCB大法

 

前两天看到NTFS之HARDLINK攻防第二版,本来是讲hardlink,不过提到了个XCB大法,卖了个关子,出于好奇就逆了360FkAdv,本来逆的差不多了想替换的,结果发现驱动由DLL释放,DLL又由别的释放,懒得写会原程序了。。。上篇blog有点前置知识。。

 

链接中的文章展示了一种删除Hive硬链接占坑同时解锁文件的方法(解锁文件其实是副作用)

 

根据逆向的结果,上一点关键Code

	if ( NT_SUCCESS(MyCreateFile(&FileHandle, SourceString, 0x10100u, 4u, 0) ) ) //尝试高权限打开
	{
		StripFileAttributes(FileHandle);
		IRPDeleteFile(FileHandle);
		return ZwClose(FileHandle);
	}


	if ( NT_SUCCESS(MyCreateFile(&FileHandle,SourceString,FILE_ATTRIBUTE_NORMAL, 4u, 0)))//独占一般是独占数据,如上参数可以打开文件句柄
	{
		StripFileAttributes(FileHandle);
		IRPDeleteFile(FileHandle);
		if ( ZwQueryInformationFile(FileHandle, &IoStatusBlock, &FileInformation, 0x28u, FileBasicInformation) < 0
			|| FileInformation.FileAttributes & FILE_ATTRIBUTE_DIRECTORY
			||  (
			status = ObReferenceObjectByHandle(
						FileHandle,
						0x80000000u,
						0,
						KernelMode,
						(PVOID *)&FileObject,
						0))
			|| !NT_SUCCESS( status))
			return ZwClose(FileHandle);	//硬链接针对文件而非目录,目录就返回了。
		pLowVolumedevice = IoGetBaseFileSystemDeviceObject(FileObject);	
		if ( pLowVolumedevice )
		{
			pLowVolumeDriver = pLowVolumedevice->DriverObject;
			if ( pLowVolumeDriver )
			{
				if ( pLowVolumeDriver->DriverName.Buffer )
				{
					RtlInitUnicodeString(&DestinationString, L"\\FileSystem\\FastFat");
					RtlInitUnicodeString(&String2, L"\\FileSystem\\Ntfs");
					if (!g_HardCodeIni)
					{					PsGetVersion(&MajorVersion,&MinorVersion, &BuildNumber, 0);
								if ( MajorVersion == 5 )
								{
									if ( MinorVersion )
									{                                                   // xp  硬编码了
										if ( MinorVersion !=1 && MinorVersion != 2 )
										{
											ObfDereferenceObject(FileObject);
											return ZwClose(FileHandle);
										}
										dword_1495C = 0x74u;
										dword_1494C = 0x20u;
										dword_14950 = 0x7Cu;
										dword_14940 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值