首页
社区
课程
招聘
[原创](原创)Win7下过Hack*Shield的部分驱动保护
发表于: 2013-6-11 16:13 8517

[原创](原创)Win7下过Hack*Shield的部分驱动保护

2013-6-11 16:13
8517
// 安装驱动的线程函数
UINT __cdecl CDriverProtectDlg::InstallDriverThread(LPVOID pParam)
{
	CDriverProtectDlg* pDlg = NULL;
	pDlg = (CDriverProtectDlg*)pParam;
	pDlg->UpdateData(TRUE);
	if (pDlg->strPath.IsEmpty())
	{
		AfxMessageBox(L"请选择驱动路径!");
		return 0;
	}
	if (pDlg->strrGamePath.IsEmpty())
	{
		AfxMessageBox(L"请选择游戏路径!");
		return 0;
	}
	if (!pDlg->LoadNTDriver(L"HelloDDK",pDlg->strPath.GetBuffer()))
	{
		pDlg->UnloadNTDriver(L"HelloDDK");
		pDlg->LoadNTDriver(L"HelloDDK",pDlg->strPath.GetBuffer());
	}
	HANDLE hDevice = 
		::CreateFileW(L"\\\\.\\HelloDDK",
		GENERIC_READ | GENERIC_WRITE,
		0,		// share mode none
		NULL,	// no security
		OPEN_EXISTING,
		FILE_ATTRIBUTE_NORMAL,
		NULL );		// no template
	if (hDevice == INVALID_HANDLE_VALUE)
	{
		pDlg->m_DriverINFORMATION.SetWindowTextW(L"打开驱动错误!");
		return 1;
	}
	DWORD Pid = pDlg->TransferProcessID(pDlg->strrGamePath.GetBuffer());
	int a = (int)Pid;
	UCHAR* InputBuffer = new UCHAR[a];
	UCHAR* OutputBuffer= new UCHAR[a];
	BOOL bRet;
	DWORD dwOutput;
	//输入缓冲区作为输入,输出缓冲区作为输出
	bRet = DeviceIoControl(hDevice, IOCTL_TEST1, InputBuffer, a, OutputBuffer, a, &dwOutput, NULL);
	if (bRet)
	{
		pDlg->m_DriverINFORMATION.SetWindowTextW(L"开启保护成功!");
	}
	CloseHandle(hDevice);
	delete []InputBuffer;
	delete []OutputBuffer;
	//AfxEndThread(0);
	ResumeThread(pDlg->ProcessMainThread);
	pDlg = NULL;
	return 0;
}
UINT __cdecl CDriverProtectDlg::UnInstallDriverThread(LPVOID pParam)
{
	CDriverProtectDlg* pDlg = NULL;
	pDlg = (CDriverProtectDlg*)pParam;
	pDlg->UpdateData(TRUE);
	if (pDlg->strPath.IsEmpty())
	{
		AfxMessageBox(L"请选择驱动路径!");
		return 0;
	}
	if (pDlg->strrGamePath.IsEmpty())
	{
		AfxMessageBox(L"请选择游戏路径!");
		return 0;
	}
	pDlg->UnloadNTDriver(L"HelloDDK");
	//AfxEndThread(0);
	pDlg = NULL;
	return 0;
}


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (8)
雪    币: 19
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
本人顺便录制了一个教程去讲解代码:

http://pan.baidu.com/share/link?shareid=2793896342&uk=3155594444
2013-6-11 16:20
0
雪    币: 92
活跃值: (209)
能力值: ( LV6,RANK:95 )
在线值:
发帖
回帖
粉丝
3
能调试了???
2013-7-4 07:26
0
雪    币: 218
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
XP 下蓝屏。。改个XP 下的驱动来试试。
2013-7-4 13:28
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
HS还有很多检测,像不断检测是否hook被还原,DPC被删掉;而中途启用内核调试会立刻重启。
至于R3下的hook我就无语了,用XT一看数不清的IAT,inline hook,完全不考虑游戏的效率。
2013-7-4 14:08
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
6
r3是TMD壳的dll reload功能
2013-7-4 15:08
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
貌似还会释放很多.tmp,好像把ntdll等重载了那样,而且属于IAT hook
2013-7-4 15:15
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
8
tmp其实就是dll文件,都是Copyfile过去的~
2013-7-4 15:31
0
雪    币: 19
活跃值: (88)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
其实部分也可以用重载内核实现的!
2013-7-14 17:20
0
游客
登录 | 注册 方可回帖
返回
//